资源描述:
《《求候选码的方法》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、候选码的确定方法第五章关系数据理论《数据库系统概论》6.2.2码(参见P173.)定义5.4设K为关系模式R的属性(组),若KU,则称K为R的候选码。主码:若R有多个候选码,则可以从中选定一个作为R的主码。主属性:包含在任一个候选码中的属性,称作主属性。非主属性:不包含在任一个候选码中的属性,称作非主属性(或非码属性)。全码:关系模式的码由全部属性构成。码:例关系模式S(S#,SN,SD,DEAN,C#,G)码的确定(1)首先根据实际背景数据约束的语义确定关系模式R。(2)然后应用函数依赖的公理系统,验证F中每一个函数依赖的决定因素或其组合K,是否有:KU。主码
2、(S#,C#),因为(S#,C#)所有属性码的确定:例求出关系模式R的所有候选码:U={A,B,C,D,E}F={AB→C,B→D,C→E,EC→B,AC→B}注:码或者是某一函数依赖的左部,或是一个属性组。验证AB是否码,须证明ABABCDE是否成立?∵AB→C(已知),而AB→AB(自反),∴AB→ABC(合并)∵B→D(已知),∴AB→AD(增广),∴AB→ABCD(合并)∵C→E(已知),AB→C(已知),∴AB→E(传递)于是AB→ABCDE(合并)码的确定:例(续)验证AB是否码?前面已得到AB→ABCDE,又,显然A→ABCDE,B→ABCDE,故所以ABABCDE。
3、得证AB是一个候选码。同理可证:AC也是一个候选码。说明:如果每一个FD的决定因素都不是码,则要考虑这些决定因素的组合是否构成码;除了码的定义外,有候选码的求解理论和算法,在后面可以补充介绍更好的求码方法。码的确定:练习根据码的定义,求关系模式R的所有候选码。U={A,B,C,D},F={A→B,C→B}答:ACD关于2NF的结论1.不存在非主属性的关系模式属于2NF。没有非主属性2.全码关系模式属于2NF。没有非主属性3.码只由一个属性组成的关系模式属于2NF。不会有部分依赖4.二目关系模式属于2NF。码或是一个属性,或是全码5.若R属于1NF,但R不一定属于2NF。例如,关系模
4、式S(S#,SN,SD,DEAN,C#,G)关于3NF的结论1.不存在非主属性的关系模式属于3NF。没有非主属性2.全码关系模式属于3NF。没有非主属性3.二目关系模式属于3NF。不会存在传递依赖4.若R属于3NF,那么R也属于2NF。可证明,反证5.若R属于2NF,但R不一定属于3NF。例如,关系模式S_SD(S#,SN,SD,DEAN)BCNF:定义定义5.8关系模式R1NF,对于属性组X和Y,若XY且YX时X必含有码,则RBCNF。注意到:BCNF的定义更简单,不需要从1NF到2NF再到3NF再到BCNF一步步检查,也不涉及完全、部分和传递函数依赖等概念,可
5、以直接判断一个1NF的关系是否属于BCNF。BCNF的定义排除了任何属性(不管是主属性还是非主属性)对码的传递和部分依赖。由BCNF的定义得到的结论由BCNF的定义,非平凡的FD:X→Y非主属性主属性含码K,或X即码可以证明下述结论,一个满足BCNF的关系模式有:1.所有非主属性对每一个码都是完全函数依赖,即,若RBCNF,则R2NF。2.所有的主属性对每一个不包含它的码也是完全函数依赖。3.没有任何属性完全函数依赖于非码的任何一组属性。4.若RBCNF,则必有R3NF;反之不一定成立。BCNF:例1关系模式SCO(S#,C#,ORDER),表示学生(S#)选修课程(C#)的名次(O
6、RDER)。每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生,于是有函数依赖:(S#,C#)ORDER(C#,ORDER)S#思考:关系模式SCO的码是?属于BCNF吗?属于3NF吗?为什么?关于BCNF的结论1.全码关系模式属于BCNF。没有以非码属性作为决定因素的函数依赖2.二目关系模式属于BCNF。如果有函数依赖,则其左部一定含码3.不存在函数依赖的关系模式属于BCNF。没有函数依赖4.若R属于BCNF,那么R也属于3NF。5.若R属于3NF,但R不一定属于BCNF。范式:综合例设有关系模式RU={A,B,C,D,E}F={AB→C,B→D,C→E
7、,EC→B,AC→B}要讨论范式,首先确定码。R的候选码:AB,AC;主属性:A,B,C;非主属性:D,E。RBCNF∵EC→B的决定因素EC不包含码。R3NF∵存在非主属性E对码AB的传递依赖:ABC,CAB,CE,ECR2NF∵存在非主属性D对码AB的部分依赖AB→D。R1NFP范式:综合例(续)关系模式RU={A,B,C,D,E}F={AB→C,B→D,C→E,EC→B,AC→