说明

以下结构中,表和表之间都是多对多的关系

  1. 程序员与项目
  2. 学生与选修课
  3. 玩家与装备

    举例

    在一些外包公司中,程序员经常需要维护多个项目,同时一个项目也可能被多个程序员维护,所以程序员与项目之间是多对多的关系
    业务分析:

  4. 一个程序员可以维护多个项目

  5. 一个项目也可被多个程序员维护
  6. 程序员与项目之间是多对多的关系

ER图分析
image-20220417195151022

如何处理

在多对多的业务场景中,会设计一张中间表简化业务关系,将多对多转换成一对多

表结构组成

  1. coder表:id int ,name varchar,salary double;
  2. project表:id int ,name varchar;
  3. coder_project表:coder_id int,project_id int;

    示例代码

    ``` — 程序员表 create table coder( id int primary key auto_increment, name varchar(20), salary double ); — 项目表 create table project( id int primary key auto_increment, name varchar(10) ); — 中间表 create table coder_project( coder_id int, project_id int ); — 添加测试数据 insert into coder values(1,’张三’,12000); insert into coder values(2,’李四’,15000); insert into coder values(3,’王五’,18000);

insert into project values(1,’QQ项目’); insert into project values(2,’微信项目’);

insert into coder_project values(1,1); insert into coder_project values(1,2); insert into coder_project values(2,1); insert into coder_project values(2,2); insert into coder_project values(3,2);

```

效果

coder表
image-20220417200048610
project表
image-20220417200124991
coder_project表
image-20220417200148278