【问题标题】:Many-to-many relationships ERD多对多关系 ERD
【发布时间】:2015-12-11 03:00:20
【问题描述】:

我目前正在为论文存储库设计数据库。我遇到了这种情况:

• 一个学生只能提交一篇论文,而一篇论文可以由许多学生提交。

但是,我不想让 Thesis ID 在 Thesis 表中重复。 我应该使用连接表吗?我已经做了一个初步设计(下)。我在正确的轨道上吗?

【问题讨论】:

  • “但是,我不想让 Thesis ID 在 Thesis 表中重复。”为什么不呢?

标签: php mysql database relationship erd


【解决方案1】:

你快到了。只有我对Thesis_Students 表有评论,我看到你有ThesisIDStudentID 作为PK,这将涵盖这一点,一个学生应该只与一篇论文相关。但是您还有一个附加条件“学生只能提交一篇论文”。所以你需要一个额外的UNIQUE 约束,只有StudentID,这样任何StudentID 都不能插入一个以上的条目。 (实际上,在这种情况下,您不再需要 ThesisID + StudentID 的 PK,因为无论如何您都不能为 StudentID 插入多个条目。

【讨论】:

  • 这是否意味着 StudentID 将有 3 个密钥? @TareqMahmood
  • 怎么样?您有一个带有UNIQUE 约束,另一个带有ThesisID 约束,哪一个是第三个?
  • 感谢您的回复。我正在考虑删除 Thesis_Students 表并将 StudentsID 放入具有唯一约束的论文表中。是这样吗? @TareqMahmood
  • 不,那样的话,如何为同一篇论文添加多个学生?但是如果你想删除Thesis_Students 表,你可以在Students 表中添加ThesisID,你不需要任何额外的UNIQUE 约束。
  • 感谢您的回答@TahreqMahmood!我明白了。
【解决方案2】:

我建议将论文 ID 列放在学生表上,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    相关资源
    最近更新 更多