为什么下面的 table 是第二范式?
Why is the following table in the 2nd normal form?
这是我在 1. 范式中的 table,主键 Student_ID 和 Course_Nr:
这是我在 2. 范式中的 table:
要使 table 处于第二范式,它不应具有部分依赖性。
但是学生 table 中的教师列依赖于 Co.Nr 列(课程编号)。
那不应该在单独的 table(课程编号 | 教师)中吗?
第二范式的定义要求在关系模式中,非主属性不应依赖于任何候选键的真子集。
在第二个关系模式中,唯一的候选键是 StudentId
,并且由于属性 Teacher
依赖于 CourseNumber
,它不是任何候选键的一部分,因此定义是尊重并且关系模式是第二范式。
显然存在冗余,因为该关系不是第三范式 (3NF),应该进行归一化。
事实上,第二范式不再被认为是重要的,并且只是出于历史原因对其进行描述,因为所有规范化技术旨在使关系模式至少 在第三范式或 Boyce-Codd 范式中。这是如此真实,以至于没有正式的算法可以在第二范式中引入关系模式,而有用于第三范式和 Boyce-Codd 范式的算法。
这是我在 1. 范式中的 table,主键 Student_ID 和 Course_Nr:
这是我在 2. 范式中的 table:
要使 table 处于第二范式,它不应具有部分依赖性。
但是学生 table 中的教师列依赖于 Co.Nr 列(课程编号)。 那不应该在单独的 table(课程编号 | 教师)中吗?
第二范式的定义要求在关系模式中,非主属性不应依赖于任何候选键的真子集。
在第二个关系模式中,唯一的候选键是 StudentId
,并且由于属性 Teacher
依赖于 CourseNumber
,它不是任何候选键的一部分,因此定义是尊重并且关系模式是第二范式。
显然存在冗余,因为该关系不是第三范式 (3NF),应该进行归一化。
事实上,第二范式不再被认为是重要的,并且只是出于历史原因对其进行描述,因为所有规范化技术旨在使关系模式至少 在第三范式或 Boyce-Codd 范式中。这是如此真实,以至于没有正式的算法可以在第二范式中引入关系模式,而有用于第三范式和 Boyce-Codd 范式的算法。