gpt4 book ai didi

Mysql避免冗余外键

转载 作者:行者123 更新时间:2023-11-29 10:57:02 25 4
gpt4 key购买 nike

我有以下数据库架构: Picture of the model

t_class:存储有关类的元数据(主键:class_ID)

t_students:通过外键class_ID链接到类(class)

t_exams:存储有关考试的元数据(到目前为止没有外键)

t_grades:将 t_exams 链接到 t_students,因为两者具有 n 到 m 的关系(没有主键,但有两个外键:exam_IDstudent_ID)。它还具有 grade 列,用于存储每个学生的考试成绩。

问题:t_grades 可能没有特定考试的条目。在当前架构中,如果 t_grades 没有条目,则无法获取类(class)的所有考试。

我的解决方案:
a) 将 key class_ID 添加到 t_exams。缺点:它更像是一个较少的冗余键,我无法将其添加为外键(导致 mysql 错误 1452)
b) 自动将类(class)的所有学生添加到 t_grades 中,并将 t_grades.grade 留空。这也感觉非常多余。

问题:是否有更好的方法来解决这个特定问题,或者我应该坚持使用我的解决方案之一?

创建代码:

最佳答案

我真的不喜欢你用图形表示数据库设计的方式,但我理解你的问题。

我认为您应该将 t_exams 直接连接到 t_classes,因为类(class)中的所有学生都应该参加考试。所以,这是你的第一个解决方案。

简单来说:一个学生属于一个类(class),一个类(class)可以参加考试,而学生参加的考试可以评分。 enter image description here

对我来说,这似乎是一个完全合乎逻辑的设计。我不明白为什么你不能实现这个?我想我们需要查看您的 CREATE TABLE 查询?

我同意:我的图表也远非完美,但就像你的图表一样:我希望你明白。

关于Mysql避免冗余外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42878981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com