【发布时间】:2018-09-22 22:38:23
【问题描述】:
最好用每个表的主键作为外键创建第三个表吗?或将外键添加到第一个表? 例如学生表和项目表,每个项目都有很多学生。
【问题讨论】:
-
如果是一对多,则不需要第三张表,如果是多对多,则需要。您只需将项目表中的 FK 放入学生表中的 StudentID
标签: sql sql-server database-design
最好用每个表的主键作为外键创建第三个表吗?或将外键添加到第一个表? 例如学生表和项目表,每个项目都有很多学生。
【问题讨论】:
标签: sql sql-server database-design
如果您确实有一对多关系,那么您将外键添加到第一个表。例如:
create table students (
. . .
projectId int not null references project(projectId)
);
not null 使这个 1-很多。在大多数情况下,您可能需要 0/1-many。如果是这样,则删除 not null 约束。
如果学生可以从事多个项目,您只需要引入第三张表(称为“关联表”、“连接表”、“交叉表”和其他名称)。
请注意,如果学生与项目的关系会随时间发生变化,您可能需要第三张表。在任何给定时间,学生都在从事一个项目,但随着时间的推移,如果学生可以从事多个项目。
【讨论】:
如果是一对多,只需在学生表中添加新列作为外键(projectId)
【讨论】: