t_class
:存储有关类的元数据(主键:class_ID
)
t_students
:通过外键class_ID
t_exams
:存储有关考试的元数据(到目前为止没有外键)
t_grades
:将t_exams
链接到t_students
,因为两者都有关系(没有主键,但有两个外键:exam_ID
和{{1} })。它还有一列student_ID
,用于存储每个学生在考试中的成绩。
问题:grade
可能没有针对特定考试的条目。使用当前架构,如果t_grades
没有条目,则无法获得类的所有考试。
我的解决方案:
a)将密钥t_grades
添加到class_ID
。缺点:它不是一个冗余密钥,我不能将其添加为外键(导致mysql错误1452)
b)自动将班级的所有学生添加到t_exams
,并将t_grades
留空。这也感觉很多余。
问题:有没有更好的方法来解决这个具体问题,还是应该坚持使用我的解决方案?
创建代码: