第二范式
数据库名词
第二范式(Second Normal Form,2nd NF)是指每个表必须有主关键字(Primary key),其他数据元素与主关键字一一对应。通常称这种关系为函数依赖(Functional dependence)关系,即表中其他数据元素都依赖于主关键字,或称该数据元素唯一地被主关键字所标识。第二范式是数据库规范化中所使用的一种正规形式。它的规则是要求数据表里的所有非主属性都要和该数据表的主键有完全依赖关系;如果有哪些非主属性只和主键的一部份有关的话,它就不符合第二范式。同时可以得出:如果一个数据表的主键只有单一一个字段的话,它就一定符合第二范式(前提是该数据表符合第一范式)。
定义
例如:若关系模式R∈1NF(即R符合第一范式),并且每一个非主属性都完全依赖于R的主码,则R∈2NF(即R符合第二范式)。
所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,理解了完全依赖和部分依赖,就很容易理解第二范式,下面举例说明一下。
例如以下实例中的关系模式,就是不符合2NF的一个典型例子。
示例
在该表中主键为(货物类型,货物ID),货物名称字段完全依赖于这个主键,换句话说,货物的名称完全是取决于这个主键的值的。但“注意事项”这一列,仅依赖于一个主键中”货物类型“这一个属性。简单地说,第二范式要求每个非主属性完全依赖于主键,而不是仅依赖于其中一部分属性。
那么,既然表中存在一个对主键不是完全依赖的字段,那么我们就可以确定,该表不符合第二范式。
在该表中的主键依然是(货物类型、货物ID),非主键字段“货物名称”,完全依赖于这两个主键,那么我们就可以说,该表是符合数据库第二范式的。
转换
采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。
将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余
例:选课关系 SCI(SNO,CNO,GRADE,CREDIT)其中SNO为学号, CNO为课程号,GRADE 为成绩,CREDIT 为学分。 由以上条件,关键字为组合关键字(SNO,CNO)
在应用中使用以上关系模式有以下问题:
a.数据冗余,假设同一门课由40个学生选修,学分就 重复40次。
b.更新异常,若调整了某课程的学分,相应的元组CREDIT值都要更新,有可能会出现同一门课学分不同。
c.插入异常,如计划开新课,由于没人选修,没有学号关键字,只能等有人选修才能把课程和学分存入。
d.删除异常,若学生已经结业,从当前数据库删除选修记录。某些门课程新生尚未选修,则此门课程及学分记录无法保存。
原因:非关键字属性CREDIT仅函数依赖于CNO,也就是CREDIT部分依赖组合关键字(SNO,CNO)而不是完全依赖。
解决方法:分成两个关系模式 SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。新关系包括两个关系模式,它们之间通过SC1中的外关键字CNO相联系,需要时再进行自然联接,恢复了原来的关系。
参考资料
最新修订时间:2023-10-11 15:00
目录
概述
定义
示例
参考资料