考虑以下情况:学生获得不同主题的成绩,其中 n 年级学生只参加涵盖 n 年级主题的课程。所以,我们得到了一个可交换的“属于”的广场:
Grades -----> Students
| |
| |
v v
Topics -----> Levels
这就是我所说的主题中的“多路径”。
(1)这种约束的技术术语是什么?
现在添加以下数据:主题被分组到主题中,并且还有一些数据X附加到某些对(学生,主题),因此X基本上是笛卡尔积学生x主题的子集。现在知道以下事实(F):成绩总是对应于在X中有记录的对(学生,科目),因此我们可以将表成绩中的学生外键提升为引用X的外键:
Grades -------> X -------> Students
| |
| |
v v
Topics ----> Subjects
引入另一个多路径约束(但另一方面确保条件(F))。
(2)关于这些事情的理论观点是什么?
如果这太模糊,请允许我将其限制为以下内容:
(2')什么是首选设计:“不相交”的方式,使得表格等级具有学生和主题的外键,或者以引入圣经为代价的更紧密的表格X的“紧密”方式?
答案 0 :(得分:0)
我会用下面的表格设计来接近它:
a)科目 - 科目
b)主题 - 所有可用主题的列表,每个主题都有一个FK主题
c)学生 - 学生的详细信息d)student_subject - 为学生分配科目,其他元数据包括级别或班级,开始日期或结束日期(因为学生可能会重复)
e)成绩 - FK到student_subject组合,附加元数据,日期,成绩,评论等。
答案 1 :(得分:0)
摘要:将一个列level_id添加到Grades,并分别引用主题和学生的多列外键(topic_id,level_id)和(student_id,level_id)。