以下是我目前拥有的表格:
Student(StudentID, SurName, OtherNames, TargetGrade etc.)
Teacher(TeacherID, SurName, OtherNames etc.)
Class(ClassID, Description)
学生可以上多个班级,每个班级都有很多学生。 一个班级可以有多个教师,每个老师教授许多班级。 因此,为了处理这两个多对多的关系,我使用了两个查找表:
StudentClass(StudentID,ClassID)
TeacherClass(TeacherID,ClassID)
我不确定这是否正常化的原因是因为如果你删除了类表(这似乎有点多余但可以帮助识别类),那么你将在StudentClass之间留下多对多的关系和TeacherClass。这是规范化的吗?
由于
----------- ---------- ---------- ------------- -----------
| | /| |\ | | /| |\ | |
| Student |------<-| Student|->-----| Class |-------<-| Class - |->-------| Teacher |
| | \| -Class |/ | | \| Teacher |/ | |
----------- ---------- ---------- ------------- -----------
编辑:对于这个系统,除了描述之外,不需要类存储任何其他内容。考试成绩存储在一个链接到学生的单独表格中。
答案 0 :(得分:0)
由于您所描述的数据模型具有两个多对多关系,即: - 学生可以上多个班级,每个班级都有很多学生。 - 班级可以有多名教师,每位教师都会教授很多课程。
使用两个链接表是公平的,而不是坚持规范化,使建模过程更加复杂。
进一步规范化是没有害处的,但模型的复杂性是不可避免的
答案 1 :(得分:0)
你在这里肯定是第3个NF。关于你对分数的看法只是一个评论:你不应该错过这样一个事实:每个班级都与一门或多门考试相关联,所以你通常在班级和考试之间有一对多的关系(可以是0到很多没有考试的课程?)。
然后,您可以认为分数由'studentClass'表和'Exams'表之间的关系\表保存。根据您的业务规则,“studentClass”记录可以链接到特定考试的一个或多个分数,具体取决于您是否可以一次或多次通过考试。