我目前正在编写第一个用于测试中心的数据库。我对如何建立某种关系建模感到困惑:
我在学生和课程之间有很多关系。考试中有一对多的课程。我现在正在做的事情是学生和考试,它需要存储每个学生考试的具体信息。
拥有源于另一个的多对多关系是否可能也是合乎逻辑的?是否有一种更简单的方法可以在标准化之后执行此操作?
答案 0 :(得分:0)
见David W在评论部分发表的这个问题的上述答案:
我认为设计会导致student_exam表。鉴于 从理论上讲,考试表将具有exam_id的关键 作为外键返回考试表,反过来又有 course_id外键回到课程中。
答案 1 :(得分:0)
让我们回顾一下这段关系。
学生,课程和考试是对象表。
Student
-------
Student ID
Student Name
...
Course
------
Course ID
Course Name
...
Exam
----
Exam ID
Course ID
...
课程ID是外键。这是课程与考试之间的一对多关系。一门课程有一门或多门考试。考试与课程相关。
由于我们在学生和课程之间有多对多的关系,我们创建一个联结表。
StudentCourse
-------------
Student ID
Course ID
Semester Year
Semester Third (or Quarter)
...
现在,你在问题中已经拥有了这一切。我重复一遍,所以我对考试的回答更有意义。
StudentExam
-----------
Student ID
Exam ID
Exam Time Stamp
Grade
...
考试表将考试与课程联系起来,因此无需重复课程编号。我们学生和考试之间有很多关系,所以我们创建了另一个联结表。
在向StudentExam表格写入行之前,软件或数据库必须验证学生是否在提供考试的课程中。
这是5阶归一化。您可以通过加入课程表,考试表和StudentExam表来获得课程所需的信息。