你好,我面临以下情况。我有一张学生桌,其结构如下。
Student
id(PK), matriculation number, first_name, last_name, email一个学生可以有多个专业(BSc机械工程,MSc机械工程等)。
Major
id(PK), major同时,一个专业可能被分配给多个学生,因此学生和专业之间的关系是多到多的。我使用下面的映射表实现了它。
MajorStudent
id(PK), student_id(FK), major_id(FK)然而,每个学生都可以参加许多考试。但是对于每一次考试,了解他的专业是很重要的。也就是说,他可以参加与BSc机械工程和MSc机械工程相同的考试,但这应该算作两次不同的考试。同时,每一次考试都分配一个分数,这个分数可以有四个值之一。我的考试表和成绩表都是这样的。
Exam
id(PK), major_student_id(FK), grade_id(FK)
Grade
id(PK), grade(value1, value2, value3, value4)我最后想得到的是
View
student_id | first_name | last_name |... | major | exam_id | grade
1 test1 testtest1 BSc M.engin 1 value1
1 test1 testtest1 MSc M.engin 2 value3你认为我的设计是正确的吗。一般说来,你会如何建立一种从多到多到多的关系?(如果有帮助,我将使用MySQL和cakephp来实现它)
发布于 2015-04-29 22:53:27
桌子、学生和专业都很好。
但是,可以/应该作出以下改进。
StudentFK和MajorFK而不是Exam中的MajorStudentFK,虽然可以讨论这一点,但是它会更快,而且在我的考虑中不是多余的Exam(id[PK], studentId[FK], MajorId[FK]) Grades(id[PK], examId[FK], value)我不明白为什么一次考试有四年级。
https://dba.stackexchange.com/questions/60184
复制相似问题