函数依赖与属性关系如果两个属性之间的联系是多对多的,则它们之间不存在函数依赖关系。
设有属性集X,Y以及关系模式R:如果X,Y之间是1:1的联系(如学校和校长),则X和Y之间存在函数依赖X->Y和Y->X.如果X,Y之间是m:1的联系(如学号和姓名),则存在函数依赖X->Y.如果X,Y之间是m:n的联系(如学生和课程),则X和Y之间不存在函数依赖。
例1:在关系模式中,如果属性A和B存在1对1的联系,则说____________. A.A->B B.B->A C.A?->B D.以上都不对正确答案是:。C
例2:当属性B函数依赖与A时,属性A与B的联系是_____________. A. 1对多B.多对1 C.多对多D.以上都不对正确答案:B
关键码的求解理论和算法对于给定的关系R(A1A2…An)和函数依赖集F,可将其属性分为4类:L类:仅出现在F函数依赖左部的属性R类:仅出现在F函数依赖右部的属性N类:在F函数依赖的左右两部均未出现的属性LR类:在F函数依赖的左右两部均出现的属性定理:对于给定的关系模式R及其函数依赖集F,若X是R的L类属性,则X必为R的任一关键码的成员。
推论:对于给定的关系模式R及其函数依赖集F,若X是R的L类属性,且X+包含了R的全部属性,则X必为R的唯一关键码。
例;设有关系模式R(A,B,C,D),其函数依赖集F={D->B,B->D,AD->B,AC->D},求R的所有关键码。
解:考察F发现,A,C两属性是L类属性,由以上的定理可知,AC必是R的关键码,又因为AC+=ABCD,所以AC是R的唯一关键码。
用计算闭包的方法寻找键码A+=A,B+=B,C+=C,D+=DB AB+=ABD,AC+=ABCD,AD+=ABD,BC+=BCD,BD+=BD,CD+=CDB ABC+=ABCD,ABD+=ABD,BCD+=BCD,ADC+=ABCD ABCD+=ABCD考察以上计算闭包的结果可以得知:超键是AC,ABC,ADC,ABCD. A,C都包含在所有的超键中,并且AC是唯一的键码这两种方法得出的结果是相同的。显然,对于具有较多属性的R,使用前面一种方法要简单的多。大家应该掌握前面一种方法。
上述例子中没有R类属性,B,D都是LR类属性。
定理:对于给定的关系模式R及其函数依赖集F,若X是R的R类属性,则X不是R的任何关键码的成员。
定理:对于给定的关系模式R及其函数依赖集F,若X是R的N类属性,则X必为R的任一关键码的成员。
例:设有关系模式R(A,B,C,D,E,P),R的函数依赖集为F={A->D,E->D,D->B,BC->D,DC->A},求R的所有关键码。
解:考察F发现,属性E,C是L类属性,故E,C必在R的任何关键码中。
又因为属性P是N类属性,所以P也在R的任何关键码中。
而CEP+=ABCDEP,所以CEP是R的唯一关键码。
推论:对于给定的关系模式R及其函数依赖集F,如果X是R的N类和L类组成的属性集,且X+包含了R的全部属性,则X是R的唯一键码。
关系模式的范式一定要把1NF,2NF,3NF,BCNF的定义理解透彻。此外要记住任何二元关系都是BCNF.例题:如下关系R是____________.材料号材料名生产厂M1线材武汉M2型材武汉M3板材广东M4型材武汉
A.1NF B.2NF C.3NF D.BCNF正确答案是:B分析:首先该关系是1NF.其次以上关系上存在的函数依赖有:材料号->材料名,材料名->材料号,材料号->生产厂以上关系的键码是材料号。
可以看到,非主属性生产厂对键码材料号存在传递依赖。但是不存对键码的部分依赖。
所以该关系不是3NF,是2NF.
责任编辑:cyth