MySQL唯一ID或组合ID

zac*_*yka 12 mysql primary-key

我的项目和开发人员计划有以下结构:

developer table
id
developer name
etc...

project table
id
project name
etc...

developer _project table
???
Run Code Online (Sandbox Code Playgroud)

因为开发人员可以在多个项目中,并且项目可以有多个开发人员,所以我必须创建一个新表,但从我读到的是他们不知道我应该使用什么ID.

如果我使用id自动增量+ user_id + project_id,我会重复,因为id是主键吗?

Boo*_*eus 13

使用唯一的组合键:

CREATE TABLE `developer_project` (
 developer_id INT(10) UNSIGNED /* etc... */,
 project_id INT(10) UNSIGNED /* etc... */,
 PRIMARY KEY dev_project (developer_id, project_id)
);
Run Code Online (Sandbox Code Playgroud)

如果您创建了一个,ID您可能永远不会使用它,因为您将查询您的developer_id和/或project_idLEFT JOIN

注意:确保列定义developerproject表和表相同.


小智 5

对于多对多关系,您可以简单地使用两个字段的复合主键.

示例(假设project_id和developer_id都是整数):

CREATE TABLE `developer_project` (
  `developer_id` INT NOT NULL ,
  `project_id` INT NOT NULL ,
  PRIMARY KEY (  `developer_id` ,  `project_id` )
)