【问题标题】:What is the best approach to mapping between two tables with one to many relationship?在具有一对多关系的两个表之间进行映射的最佳方法是什么?
【发布时间】:2018-09-22 22:38:23
【问题描述】:

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

【问题讨论】:

标签: sql sql-server database-design


【解决方案1】:

如果您确实有一对多关系,那么您将外键添加到第一个表。例如:

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

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

如果学生可以从事多个项目,您只需要引入第三张表(称为“关联表”、“连接表”、“交叉表”和其他名称)。

请注意,如果学生与项目的关系会随时间发生变化,您可能需要第三张表。在任何给定时间,学生都在从事一个项目,但随着时间的推移,如果学生可以从事多个项目。

【讨论】:

  • thnaks @Gordan 不,没有学生可以从事多个项目
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-02-16
    • 2010-09-15
    • 2014-11-02
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2021-08-07
    • 2011-03-05
    • 1970-01-01
    相关资源
    最近更新 更多