1

考虑以下情况:学生获得不同主题的成绩,其中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 的“紧密”方式?

4

2 回答 2

0

实际上,目前我对如何为与具有公共外键的两个源表相关的关联表提供约束中给出的解决方案感到满意?

总结:在 Grades 中添加一列 level_id,并具有分别引用 Topic 和 Student 的多列外键 (topic_id, level_id) 和 (student_id, level_id)。

于 2012-05-13T17:55:40.540 回答
0

我会用下面的表格设计来处理它:

a) 主题 - 科目

b) 主题 - 所有可用主题的列表,每个主题都有一个 FK 主题

c) 学生 - 学生的详细信息

d) student_subject - 分配给学生的科目,其他元数据包括级别或班级、开始日期或结束日期(因为学生可能会重复)

e) 成绩 - FK 到 student_subject 组合,带有额外的元数据、日期、成绩、评论等。

于 2012-05-10T05:49:01.893 回答