6
举例说明2NF与3NF
我对第二范式(2NF)有疑问,但无法使用Google来解决。这让我发疯,因为我是一名老师,而且我不想向学生们教错误的东西。 让我们有一个包含5个字段的表格。 评分= {学生姓名,学科编号,学科名称,#考试,年级} 依赖性是这样的: 学生姓名,科目代码,#考试->年级 SubjectCode-> SubjectName SubjectName-> SubjectCode 因此,候选键1是{StudentName,SubjectCode,#Exam},候选键2是{StudentName,SubjectName,#Exam}。 主要属性是{StudentName,SubjectCode,SubjectName,#Exam},非主要属性是Grade 根据第二范式的定义,非素数属性不能取决于候选密钥的一部分。唯一的非素数属性(Grade)不依赖于候选键的一部分,因此该表看起来像2NF。 问题是我认为有些不对(我可能错了)。我认为受试者应该有自己的桌子。 评分= {学生姓名,学科代码,#考试,年级} 主题= {主题代码,主题名称} 但是2NF不会产生这种情况。3NF与非素数属性之间的依赖关系有关,因此也不会产生这种情况。但是在我看来,这是正确的结果,因为它没有冗余。 我想如果非素数属性定义为“不是候选键的属性”,则2NF将产生所需的结果。但是我已经一遍又一遍地检查了这一点,并且非素数属性被定义为“对候选键不信任的属性”。 我究竟做错了什么?