设计与三个实体的关系,其中两个实体没有关系

时间:2014-02-19 20:26:27

标签: mysql sql entity-relationship foreign-key-relationship conceptual-model

尝试实施我有实体的ER模型:老师,学生,论文和关系:发表,建议。老师和学生都可以发表论文,但只有老师才能发表论文。我是否应该为学生和老师复制出版关系,还是可以让它看起来像是三方关系而且老师和学生之间没有关系?

1 个答案:

答案 0 :(得分:1)

听起来你可以像以下那样建模:

student(student_id, name, etc)
teacher(teacher_id, name, etc)
paper(paper_id, title, text, etc)
contributor(contributor_id, paper_id, contribution_type, contributor_type)

贡献类型是枚举(发布者,顾问),类似的贡献者类型是枚举(教师,学生)...或布尔is_publisher,is_adviser。

缺点是,这不允许从学生/教师的贡献者获得外键,并且您没有从顾问到教师的严格限制。表顾问(teacher_id,paper_id)允许对顾问进行约束,但仍然不允许学生ID上的约束或外键。

另一种选择可能是将其分解为:

teacher_contribution(teacher_id, paper_id, is_adviser)
student_contribution(student_id, paper_id)

允许将数据库完全约束到预期的模型,但在某些情况下可能更难查询。

任何都可以接受。它在某种程度上取决于您的特定应用程序以及您打算如何查询数据。