繁体   English   中英

建模:三个表的关系

[英]Modelling: Relationship of three Tables

我有三个实体:学生,教授和essay_topics。

情况: 学生可以在教授指导下写几篇带有essay_topic的 文章 (粗体:实体)

但他们只能写一篇文章在特定教授的监督一次 (不是同一位教授的两倍),而且他们无法撰写与他们具有相同 essay_topic的文章。

那是唯一的限制,但是应该有可能:教授可以用相同的essay_topic监督几个学生。 不同的教授可以使用相同的essay_topic监督不同的学生。

因此,我们有一个关系文章(StudentID,EssayTopicID,ProfessorID)。 但是我现在看不到主键是什么。 或者我们在这里有什么样的关系? 我猜n:1:1(模型)。 但是然后,只有StudentID将成为该表的主键-实际出了什么问题,因为学生只能写一篇论文……

如果希望数据库引擎防止每个学生添加多个相等的主题和教授,则需要对student_id + topic_id + Professor_id进行复合键/复合约束。 看一下这个问题: 如何在MySQL中为多个列指定唯一约束?

如果写下限制的功能依赖关系,则有助于了解情况:

(student, essay_topic) -> professor
(student, professor) -> essay_topic

您有两个重叠的候选键- (student, essay_topic)(student, professor) 您可以选择一个作为物理模型的主键,只要为另一个模型添加唯一约束即可。

我怀疑这是无法在ER中精确建模的情况(是的,ER与关系模型不同,它不是完整的数据模型)。 我将省略基数指标,并将FD作为注释。

PS。 请不要混淆实体之间的关系与表之间的关系。 实体之间的关系作为(通常是不同的)实体集之间的关联记录在IN表中。 表之间的关系是外键约束,并且在同一实体集的两列上强制执行子集约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM