如何创建实体关系模型?
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。
您的原始模型几乎没有其他弱点,例如:
大学是否可以在没有学生先注册的情况下提供课程?
一位老师可以在多所大学任教吗?
一位老师可以教授多门课程吗?
一门课程可以由多个老师教授吗?
如何确保学生参加课程并且教师辅导该学生;比那位老师也教那门课?
在完成此操作时,您将添加更多实体。
您的图表不是正确的 ER 图。虽然省略属性以关注实体和关系可能很有用,但您至少应该使用一个形状来表示关系集,以便符号不排除三元和更高的关系。在 Chen 的符号中,关系由菱形表示。
College
最好作为一个独立的实体集来处理,因为它与多个其他实体集相关联(Student
、Course
,可能还有 Teacher
)。当某物是关系和属性的主题时,它应该是一个实体集。在 ER 中,属性是从实体集(或关系集)到值集的映射,即它们应用于标签和度量。
您选择的关系看起来很合理,但我建议您考虑直接将 Teacher
与 College
相关联。取决于您如何处理 Course
(大学可以提供相同的课程还是每个学院都提供自己的实例?)和 Student
(学生可以在多所大学注册,课程是否可以在没有任何学生注册的情况下存在?), 可能无法推导出 Teacher
和 College
.
之间的关系
我在尝试绘制和理解 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。
您的原始模型几乎没有其他弱点,例如:
大学是否可以在没有学生先注册的情况下提供课程?
一位老师可以在多所大学任教吗?
一位老师可以教授多门课程吗?
一门课程可以由多个老师教授吗?
如何确保学生参加课程并且教师辅导该学生;比那位老师也教那门课?
在完成此操作时,您将添加更多实体。
您的图表不是正确的 ER 图。虽然省略属性以关注实体和关系可能很有用,但您至少应该使用一个形状来表示关系集,以便符号不排除三元和更高的关系。在 Chen 的符号中,关系由菱形表示。
College
最好作为一个独立的实体集来处理,因为它与多个其他实体集相关联(Student
、Course
,可能还有 Teacher
)。当某物是关系和属性的主题时,它应该是一个实体集。在 ER 中,属性是从实体集(或关系集)到值集的映射,即它们应用于标签和度量。
您选择的关系看起来很合理,但我建议您考虑直接将 Teacher
与 College
相关联。取决于您如何处理 Course
(大学可以提供相同的课程还是每个学院都提供自己的实例?)和 Student
(学生可以在多所大学注册,课程是否可以在没有任何学生注册的情况下存在?), 可能无法推导出 Teacher
和 College
.