数据库范式与关系模式示例
- 格式:doc
- 大小:288.50 KB
- 文档页数:21
第七章 补充讲义 一、 范式举例 例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
○2由于有AC,所以ABC为多余成份:
所以F2= ABE HBP AC DH GPB DG EPA ABCP CDEP ABCG
○3经过分析认为F2中无多余依赖,则:
Fmin=F2为最小函数依赖集。即Fmin={ ABE ,HBP, AC ,DH, GPB ,DG, EPA , ABCP,CDEP,ABCG}.
例2. 已知F={AB,BA,BC,AC,CA},求Fmin. 解:○1F1= AB AC B A BC C A
○2Fmin1= AB AC
BA CA
Fmin2= AB CA BC 例3. 已知F={AC,CA,BAC,DAC},求Fmin。 解:○1将F中依赖的右部属性单一化: F1= AC CA BA BC DA DC
○2由于BA,AC,所以 BC是多余成份。
又由于DA,AC,所以DC是多余成份。 所以 F2= AC CA BA DA 因为F2中所有依赖的左部都是单属性,所以不存在依赖左部的有多余属性。 所以 Fmin= AC CA BA DA 即Fmin={AC,CA, BA ,DA}.
例4. 设有关系模式R(U,F),其中:U={E,F,G,H},F={EG,GE,FEG,HEG,FHE},求F的最小依赖集。
解:○1将F中依赖右部属性单一化: F1= EG HE GE HG FE FH E FG
○2由于有FE,FHE为多余成份:(不是因为有HE,而是,F后面加一个H和不加一样)
所以 F2= EG HE GE HG FE FG
○3由于F2中,FE和FG以及HE和HG之一为多余,则:
Fmin1={EG,GE,FG,HG} Fmin2={EG,GE,FE,HE} Fmin3,Fmin4同理。 四、求候选码 1. 候选关键字求解理论 对于给定的关系R(A1,A2,…,An)和函数依赖集F,可将其属性分为四类: L类:仅出现在F的函数依赖左部的属性 R类:仅出现在F的函数依赖右部的属性 N类:在F的函数依赖左右两边均未出现的属性 LR类:在F的函数依赖左右两边均出现的属性 定理1:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,则X必为R的任一候选关键字成员。 推论1:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,且X包含了R的全部属性,则X必为R的唯一候选关键字。 定理2:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是R类属性,则X不在任何候选关键字中。 定理3:设有关系模式R及其函数依赖集F,若X是R的N类属性,则X必包含在R的任一候选关键字中。 推论2:对于给定的关系模式R及其函数依赖集F,若X是R的N类和L类组成的属性集,且X+包含了R的全部属性,则X必为R的唯一候选关键字。
2. 单属性依赖集图论求解法(多属性不行) I:关系模式R,R的单属性函数依赖集F。 O:R的所有候选关键字。 算法:
○1求F的最小依赖集Fmin。
○2构造FDG(函数依赖图)。
○3从图中找出关键属性集X(X可为空)。
○4查看G中有无独立回路,若无则输出X即为R的唯一候选关键字,转○6,若有,则
转○5。 ○5从各独立回路中各取一结点对应的属性与X组合成一候选关键字,并重复这一过程取
尽所有可解的组合,即为R的全部候选关键字。 ○6结束。 3.多属性依赖集候选关键字求解法 I:关系模式R及其函数依赖集F。 O:R的所有候选关键字。 算法:
○1将R的所有属性分为L,R,N和LR四类,并令X代表L,N两类,Y代表LR类。
○2求X+,若X包含了R的全部属性,则X即为R的唯一候选关键字,转○5,否则,转○3。 ○3在Y中取一属性A,求(XA)+.若它包含了R的全部属性,则转○4,否则,调换一属性
反复进行这一过程,直到试完所有Y中的属性。 ○4若已找出所有候选关键字,则转○5,否则在Y中依次取2个,3个…,求它们的属性
闭包,直到其闭包包含R的全部属性。 ○5停止,输出结果。
例1.设R=(O,B,I,S,Q,D),F={SD,DS,IB,BI,BO,OB},求R的所有候选关键字。 解:○1Fmin={ SD,DS,IB,BI,BO,OB}.
○2构造FDG.
○3关键属性集{Q}. (原始点和孤立点统称关键点。)
○4有两个独立回路,SDS,IBOBI.
所以 R的所有候选关键字为:QSI,QSB, QSO,QDI,QDB,QDO.
S D I B Q O 例2. 设R={X,Y,Z},F={XY,YX},求R的所有候选关键字。 解:○1Fmin={XY,YX}。
○2构造FDG
○3关键属性{Z}.
○4有1个独立回路,
1).候选关键字个数=各独立回路中结点个数乘积=2 (1个回路,2个结点)。 2).候选关键字所含属性个数=关键属性个数+独立回路个数=1+1=2。 所以R的所有候选关键字为:ZX,ZY. 例3. 设有关系模式R(A,B,C,D),其函数依赖集F={DB,BD,ADB,ACD},求R的所有候选关键字。 解:经考虑F发现,A,C两属性是L类属性,由定理知,AC必是R的一候选关键字字成员。 又因(AC)+=ABCD,所以AC是R的唯一候选关键字。 例4. 设有关系模式R(A,B,C,D,E,P),F={AD,ED,DB,BCD,DCA},求R的所有候选关键字。 解:经考察发现,C,E两属性是L类属性,故C,E必在R的任何候选关键字中,又P是N类属性,故P也必在R的任何候选关键字中。 又因(CEP)+=ABCDEP 所以CEP是R的唯一候选关键字。
X Y
Z