【发布时间】:2015-07-08 04:22:49
【问题描述】:
我目前正在编写我的第一个用于测试中心的数据库。我对如何建模某种关系有些困惑:
我在学生和课程之间有多对多的关系。课程与考试是一对多的。我现在正在做的事情是学生和考试,它需要存储每个学生考试的特定信息。
建立多对多关系是否可能且合乎逻辑?在标准化之后有没有更简单的方法来做到这一点?
【问题讨论】:
-
听起来您需要一个所谓的中间表,它将两个一对多关系捕获到您所描述的多对多中。
-
如果您指的是促进多对多关系的表(在本例中为 Student Courses),我的问题是是否有可能且合乎逻辑地建立第二个中间表学生课程和考试。
-
我认为这个设计会导致一个 student_exam 表。假设考试表理论上会有一个exam_id 键,它将作为返回到考试表的外键,而考试表又将course_id 外键返回到课程中。
-
所以我不应该有一个 student_course 表,而应该只有一个 student_exam 表,因为考试已经参考了课程。那应该行得通。谢谢!
-
我认为这是合理的。现在,请记住,从与考试无关的角度来看,student_course 表可能是合理的 - 仅考虑注册,例如学生 -> 课程。