在具有一对多关系的两个表之间进行映射的最佳方法是什么?

时间:2018-04-12 17:02:07

标签: sql sql-server database-design

最好创建第三个表,每个表的主键是外键吗?或者将外键添加到第一个表? 例如学生表和项目表,每个项目都有很多学生。

2 个答案:

答案 0 :(得分:3)

如果你确实有1-many关系,那么你可以在第一个表中添加一个外键。例如:

create table students (
     . . . 
    projectId int not null references project(projectId)
);

not null使 1 - 很多。在大多数情况下,您可能需要0/1-many。如果是,则删除not null约束。

如果学生可以参与多个项目,您只会引入第三个表(称为“关联表”,“联结表”,“交叉表”和其他名称)。

请注意,如果学生 - 项目关系可能会随时间发生变化,您可能需要第三个表格。在任何时候,学生都在一个项目上工作,但是如果学生可以在一个以上的项目上工作,那么这个项目会随着时间推移。

答案 1 :(得分:1)

如果是一对多,只需在学生表中添加新列作为外键(projectId)