数据库范式与关系模式示例

  • 格式: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 , ACB} ,求(AB)+F. 解:设X(0)=AB

○1计算X(1),在F中找出左边为AB子集的FD,其结果是:ABC,BD

∴X(1)=X(0)UB=ABUCD=ABCD 显然,X(1)≠X(0) ○2计算X(2),在F中找出左边为ABCD子集的FD,其结果是:CE,ACB

∴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={AD,ABE,BE,CDI,EC},计算(AE)+ 解:令X={AE},X(0)=AE

○1在F中找出左边是AE子集的FD,其结果是:AD,EC

∴X(1)=X(0)UB=X(0)UDC=ACDE 显然,X(1)≠X(0) ○2 在F中找出左边是ACDE子集的FD,其结果是:CDI

∴X(2)=X(1)UI=ACDEI 显然 ,X(2) ≠X(1),但F中未用过的函数依赖的左边属性已含有X(2) 的子集,所以不必再计算下去,即(AE)+=ACDEI. 因为,X(3)=X(2) ,所以,算法结束。 三、 求最小依赖集 最小依赖集是对函数依赖集合进行规范的结果,这样才能对一般关系模式进行准确分析。

例1. 设函数依赖集F={ABCE,AC,GPB,EPA,CDEP,HBP,DHG,ABCPG},求与F等价的最小函数依赖集。

解:○1将F中依赖右部属性单一化: F1= AB C ABE HBP AC DH GPB DG EPA ABCP CDEP ABCG

○2由于有AC,所以ABC为多余成份:

所以F2= ABE HBP AC DH GPB DG EPA ABCP CDEP ABCG

○3经过分析认为F2中无多余依赖,则:

Fmin=F2为最小函数依赖集。即Fmin={ ABE ,HBP, AC ,DH, GPB ,DG, EPA , ABCP,CDEP,ABCG}.

例2. 已知F={AB,BA,BC,AC,CA},求Fmin. 解:○1F1= AB AC B A BC C A

○2Fmin1= AB AC

BA CA

Fmin2= AB CA BC 例3. 已知F={AC,CA,BAC,DAC},求Fmin。 解:○1将F中依赖的右部属性单一化: F1= AC CA BA BC DA DC

○2由于BA,AC,所以 BC是多余成份。

又由于DA,AC,所以DC是多余成份。 所以 F2= AC CA BA DA 因为F2中所有依赖的左部都是单属性,所以不存在依赖左部的有多余属性。 所以 Fmin= AC CA BA DA 即Fmin={AC,CA, BA ,DA}.

例4. 设有关系模式R(U,F),其中:U={E,F,G,H},F={EG,GE,FEG,HEG,FHE},求F的最小依赖集。

解:○1将F中依赖右部属性单一化: F1= EG HE GE HG FE FH E FG

○2由于有FE,FHE为多余成份:(不是因为有HE,而是,F后面加一个H和不加一样)

所以 F2= EG HE GE HG FE FG

○3由于F2中,FE和FG以及HE和HG之一为多余,则:

Fmin1={EG,GE,FG,HG} Fmin2={EG,GE,FE,HE} 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={SD,DS,IB,BI,BO,OB},求R的所有候选关键字。 解:○1Fmin={ SD,DS,IB,BI,BO,OB}.

○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={XY,YX},求R的所有候选关键字。 解:○1Fmin={XY,YX}。

○2构造FDG

○3关键属性{Z}.

○4有1个独立回路,

1).候选关键字个数=各独立回路中结点个数乘积=2 (1个回路,2个结点)。 2).候选关键字所含属性个数=关键属性个数+独立回路个数=1+1=2。 所以R的所有候选关键字为:ZX,ZY. 例3. 设有关系模式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的唯一候选关键字。 例4. 设有关系模式R(A,B,C,D,E,P),F={AD,ED,DB,BCD,DCA},求R的所有候选关键字。 解:经考察发现,C,E两属性是L类属性,故C,E必在R的任何候选关键字中,又P是N类属性,故P也必在R的任何候选关键字中。 又因(CEP)+=ABCDEP 所以CEP是R的唯一候选关键字。

X Y

Z