规范化问题

Normalization issues

我正在标准化成绩 table,其中包含 RollNumber、TotalMarks 和 Status 列。

RollNumber 是来自学生 table 的外键。

Status 列取决于 TotalMarks,就好像分数大于或等于 33% 的学生将具有 'PASS' 的状态,小于 33% 的学生将分配状态 'FAIL'。

因此,要删除此传递依赖性(因为 Status 依赖于 TotalMarks),我必须使用 TotalMarks 和 Status 创建新的 table。

问题是RollNumber 1 to 10000 被分配到总分500分的class 9,所以这种情况下的及格条件是大于等于165分。

对于 RollNumber 10000 到 100000 分配给 class 第 10 名,总分数为 1000。因此在这种情况下的及格分数为 330。

所以在这个新创建的 table 中,如果我只创建 TotalMarks 和 Status 两列,就会出现差异,因为对于一些 165 TotalMarka,一个学生将通过,而对于其他 165 TotalMarks,一个学生会失败。

因此,为了解决这个问题,我必须创建自己的新 ID,该 ID 将是唯一的,并为每个 RollNumber 分配这个新的唯一 ID,并将 link 分配给这个新创建的 table,但这会由于数据重复占用大量内存

那么如何有效应对这种情况呢?

注意:这个 500 分和 1000 分的分数分布是虚拟的,我的数据库中有超过 8 个 class 具有不同的通过和失败标准。

TotalMarks 本身并不是 Status 的决定因素,因为 Status 还取决于 RollNumber。这种情况下的功能依赖是 {RollNumber,TotalMarks} → {Status} 这不是传递依赖。因此 {RollNumber,TotalMarks} 必须是一个超键,在这种情况下,您的成绩 table 满足第五范式。这里似乎没有需要创建新 table.

的规范化问题

正如您在上一个问题的回答中所述,规范化从不需要创建新属性。