第一范式(1NF)及进一步规范化关系模式需要满足一定的条件,不同程度的条件称做不同的范式。最低要求的条件是元组的每个分量必须是不可分的数据项,这叫做第一范式,简称1NF,是最基本的规范化,在第一范式的基础上进一步增加一些条件,则为第二范式。以此类推,还有第三范式,Boyce-Codd范式,等等。函数依赖X→Y不仅给出了对关系的值的限制,而且给出了数据库中应该存储的某种联系:从X的值应该知道与之联系的惟一Y值。若X不含码,则有麻烦了。码是一个元组区别于其他元组的依据,同时也是一个元组赖以存在的条件。在一个关系中,不可能存在两个不同的元组在码属性上取值相同,也不可能存在码或码的一部分为空值的元组。若某关系模式的属性间有函数依赖X→Y,而X又不包含码,那么在具有相同X值的所有元组中,某个特定的Y值就会重复出现,这是数据冗余,随之而来的是更新异常问题;某个X值与某个特定的Y值相联系,这是数据库中应存储的信息,但由于X不含码,这种X与Y相联系的信息可能因为码或码的一部分为空值而不能作为一个合法的元组在数据库中存在,这是插入异常或删除异常问题。第二范式、第三范式和Boyce-Codd范式就是不同程度地限制关系模式中X不包含码的函数依赖X→Y的存在。(二)第二范式(2NF)若关系模式R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。2NF就是不允许关系模式的属性之间有这样的函数依赖X→Y,其中X是码的真子集,Y是非主属性。即不允许有非主属性对码的部分函数依赖。(三)第三范式(3NF)若关系模式R∈2NF,且每一个非主属性都不传递依赖于码,则R∈3NF。3NF就是不允许关系模式的属性之间有这样的非平凡函数依赖X→Y,其中X不包含码,Y是非主属性。X不包含码有两种情况,一种情况X是码的真子集,这是2NF不允许的,另一种情况X不是码的真子集,这是3NF不允许的。(四)Boyce-Codd范式(BCNF)若关系模式R∈1NF,且对于每一个非平凡的函数依赖X→Y,都有X包含码,则R∈BCNF。BCNF是3NF的进一步规范化,即限制条件更严格。3NF不允许有X不包含码,Y是非主属性的非平凡函数依赖X→Y。BCNF则不管Y是主属性还是非主属性,只要X不包含码,就不允许有X→Y这样的非平凡函数依赖。因此,若R∈BCNF,则必然R∈3NF。然而,BCNF又是概念上更加简单的一种范式,F,只要考察每个非平凡函数依赖X→Y的决定因素X是否包含码就行了。1NF,2NF,3NF,BCNF的相互关系是:BCNF’3NF’2NF’1NF在函数依赖的范畴内,BCNF达到了最高的规范化程度。一、部分依赖归子集;完全依赖随键码——用于建立2NF例:关系R(A,B,C,D,E,F,G)上存在函数依赖,A->BCD,E->F,AE->G,AE->BCD,AE->F分析以上依赖可以看出,AE是键码(AE->BCD)。因为AE是键码,A是主属性,A->BCD,所以BCD是部分依赖于AE根据部分依赖归子集的方法,因为A是AE的真子集,所以A与BCD归在一起构成一个关系模式。R1(A,B,C,D)同理对于AE->F,有E->F所以AE->F是部分依赖,非主属性F所依赖的真子集是E,所以E和F可以归在一个关系模式中R2(E,F)AE->G是完全函数依赖,完全依赖随键码,所以AEG归在一个关系模式中R3(
数据库三大范式 来自淘豆网m.daumloan.com转载请标明出处.