如何创建实体关系模型?

时间:2017-03-23 09:07:25

标签: database-design erd

我在绘制和理解ERD图时遇到了一些困惑/困难,下面是问题:

  

“学生入读提供教师授课的大学。当学生注册时,他们必须注册他们希望学习的课程。然后,学院将为学生分配一名教师,即教师。“

这是正确的图表吗?

http://imgur.com/a/Z8Tkl

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

2 个答案:

答案 0 :(得分:1)

  

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

问题是:“如果没有第一个学生参加,大学是否存在?”。

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

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

这取决于您的“业务规则”(约束)。

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

[c1] 每个学生只能上一所大学;对于每所大学来说,有可能不止一个学生就读这所大学。

然后将COLLEGE_ID添加到学生实体。

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

[c2] 每个学生都可以参加一个以上的大学;对于每所大学来说,有可能不止一个学生就读这所大学。

您需要添加依赖实体 {STUDENT_ID, COLLEGE_ID}

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

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

  1. 大学可以提供没有学生报名参加该课程的课程吗?

  2. 老师可以在不止一所大学任教吗?

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

  4. 可以不止一位老师教授课程吗?

  5. 如何确保学生参加课程,教师指导学生;那老师还教这门课程吗?

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

答案 1 :(得分:1)

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

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

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