第七章 补充讲义 一、 范式举例 例 1:已知 R,请问 R为几范式? 零件号 单价 P1 25 P2 8 P3 25 P4 9 BCNF。(25改成 15还是 BCNF.如:课程号与学号) 例 2:已知 R,请问 R为几范式? 材料号 材料名 生产厂 M1 线材 武汉 M2 型材 武汉 M3 板材 广东 M4 型材 武汉 2NF。有部分依赖。 例 3:已知 R,请问 R为几范式? A D E A1 D1 E2 A2 D6 E2 A3 D4 E3 A4 D4 E4 BCNF。 例 4:R(X,Y,Z),F={XY->Z},R为几范式? BCNF。 例 5:R(X,Y,Z),F={Y->Z,XZ->Y},R为几范式? 3NF。R的候选码为{XZ,XY},(R中所有属性都是主属性,无传递依赖) 二、 求闭包 数据库设计人员在对实际应用问题调查中,得到的结论往往是零散的、不规范的(直观问题好办,复杂问题难办了),所以,这对分析数据模型,达到规范化设计要求,还有差距,为此,从规范数据依赖集合的角度入手,找到正确分析数据模型的方法,以确定关系模式的规范化程度。 例1. 已知关系模式R(U、F),其中,U={A,B,C,D,E}; F={AB C, B D, EC B , ACB} ,求(AB)+F. 解:设X(0)=AB ○1 计算X(1),在F 中找出左边为AB 子集的FD,其结果是:ABC,BD ∴X(1)=X(0)UB=ABUCD=ABCD 显然,X(1)≠X(0) ○2计算X(2),在F中找出左边为ABCD子集的FD,其结果是:CE,ACB ∴X(2)=X(1)UB=ABCDUBE=ABCDE 显然,X(2)=U 所以,(AB)+ F=ABCDE.(等于 U,所以AB 是唯一候选关键字) 例2.设有关系模式R(U、F),其中U={A,B,C,D,E,I};F={AD,ABE,BE,CDI,EC},计算(AE)+ 解:令 X={AE},X(0)=AE ○1 在F 中找出左边是AE 子集的FD,其结果是:AD,EC ∴X(1)=X(0)UB=X(0)UDC=ACDE 显然,X(1)≠X(0) ○2 在F中找出左边是ACDE子集的FD,其结果是:CDI ∴X(2)=X(1)UI=ACDEI 显然 ,X(2) ≠X(1),但 F中未用过的函数依赖的左边属性已含有X(2) 的子集,所以不必再计算下去,即(AE)+=ACDEI. 因为,X(3)=X(2) ,所以,算法结束。 三、 求最小依赖集 最小依赖集是对函数依赖集合进行规范的结果,这样才能对一般关系模式进行准确分析。 例1. 设函数依赖集F={ABCE,AC,GPB,EPA,CDEP,HBP,DHG,ABCPG},求与F 等价的最小函数依赖集。 解:○1 将 F 中依赖右部属性单一化: F1= AB C ABE HBP AC DH GPB DG EPA ABCP CDEP ABCG...