如何创建实体关系模型?

How can I create an entity relationship model?

我在尝试绘制和理解 ERD 图时遇到一些困惑/困难,问题如下:

“Students enrol at colleges which offer courses taught by teachers. When the students enrol they must register on the courses they wish to study. The college will then assign a tutor, who is a teacher, to the student.”

这是正确的图表吗?

大学应该是学生实体的实体还是属性?

Should college be an entity or attribute of the student entity?

问题是:"Can a college exists without a first student attending it?"。

是的,为了让学生上大学,大学必须存在;因此大学是一个独立实体

下一个问题是:大学应该是学生实体中的一个属性,还是需要一个单独的关系(table,实体){STUDENT_ID, COLLEGE_ID}

这取决于你的"business rules"(约束)。


[1] 如果规则(约束)是:

[c1] 每个学生只能就读一所大学;对于每所大学,可能有不止一名学生就读该大学。

然后在学生实体中添加一个COLLEGE_ID


[2] 如果规则(约束)是:

[c2] 每个学生可以就读不止一所大学;对于每所大学,可能有不止一名学生就读该大学。

比你需要添加一个依赖实体 {STUDENT_ID, COLLEGE_ID}


要整理教师、课程、学生的详细信息,请参阅this SO example

您的原始模型几乎没有其他弱点,例如:

  1. 大学是否可以在没有学生先注册的情况下提供课程?

  2. 一位老师可以在多所大学任教吗?

  3. 一位老师可以教授多门课程吗?

  4. 一门课程可以由多个老师教授吗?

  5. 如何确保学生参加课程并且教师辅导该学生;比那位老师也教那门课?

在完成此操作时,您将添加更多实体。

您的图表不是正确的 ER 图。虽然省略属性以关注实体和关系可能很有用,但您至少应该使用一个形状来表示关系集,以便符号不排除三元和更高的关系。在 Chen 的符号中,关系由菱形表示。

College 最好作为一个独立的实体集来处理,因为它与多个其他实体集相关联(StudentCourse,可能还有 Teacher)。当某物是关系和属性的主题时,它应该是一个实体集。在 ER 中,属性是从实体集(或关系集)到值集的映射,即它们应用于标签和度量。

您选择的关系看起来很合理,但我建议您考虑直接将 TeacherCollege 相关联。取决于您如何处理 Course(大学可以提供相同的课程还是每个学院都提供自己的实例?)和 Student(学生可以在多所大学注册,课程是否可以在没有任何学生注册的情况下存在?), 可能无法推导出 TeacherCollege.

之间的关系