当前位置:文档之家› 数据库范式与关系模式示例

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

第七章补充讲义一、式举例例1:已知R,请问R为几式?BCNF。

(25改成15还是BCNF.如:课程号与学号)例2:已知R,请问R为几式?2NF。

有部分依赖。

例3:已知R,请问R为几式?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→EA→CD→H GP→BD→G EP→AABC→P CDE→PABC→G○2由于有A→C,所以AB→C为多余成份:所以F2= AB→E HB→PA→C D→HGP→B D→GEP→A ABC→PCDE→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→CB A B→CC A○2Fmin1= A→B A→CB→A C→AFmin2= A→B C→AB→C例3.已知F={A→C,C→A,B→AC,D→AC},求Fmin。

解:○1将F中依赖的右部属性单一化:F1= A→C C→AB→A B→CD→A D→C○2由于B→A,A→C,所以B→C是多余成份。

又由于D→A,A→C,所以D→C是多余成份。

所以F2= A→C C→AB→A D→A因为F2中所有依赖的左部都是单属性,所以不存在依赖左部的有多余属性。

所以Fmin=A→C C→AB→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 HG→E HF→E FHF→G○2由于有F→E,FH→E为多余成份:(不是因为有H→E,而是,F后面加一个H和不加一样)所以F2= E→G H→EG→E H→GF→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.例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的唯一候选关键字。

五、模式分解对存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。

在分解处理中会涉及一些新问题,为使分解后的模式保持原模式所满足的特性,要求分解处理具有无损联接性和保持函数依赖性。

即分解后的关系模式子集,应能通过自然连接运算恢复原状。

1、关系模式规化时一般应遵循以下原则:(1)关系模式进行无损连接分解。

关系模式分解过程中数据不能丢失或增加,必须把全局关系模式中的所有数据无损地分解到各个子关系模式中,以保证数据的完整性。

(2)保持原来模型的函数依赖关系。

因为这些函数依赖关系是数据模型反映的客观事物的固有属性,一般是不能舍弃的。

(3)合理选择规化程度。

考虑到存取效率,低级模式造成的冗余度很大,既浪费了存储空间,又影响了数据的一致性,因此希望一个子模式的属性越少越好,即取高级式;若考虑到查询效率,低级式又比高级式好,此时连接运算的代价较小,这是一对矛盾,所以应根据情况,合理选择规化程度。

2、对模式分解的两个基本要求:模式分解可以提高关系模式的规化程度,但是必须考虑如下问题:○1避免信息丢失:简单的说,就是模式R分解为R1,R2,…,Rn后,将R1,R2,…Rn自然连接还应该等于模式R。

这就是“无损失联接”准则。

○2避免数据关系丢失:简单地说,就是模式R分解为R1,R2,…,Rn后,函数依赖集合F也被对应分解为F1,F2,…,Fn,应满足F与各Fi(i=1,2,…n)的并集等价,即满足F+=(UFi )+ 。

这就是“保持函数依赖”准则。

关系模式的规化过程是通过对关系模式的分解来实现的,但是把低一级的关系模式分解为若干个高一级关系模式的方法并不是唯一的。

在这些分解方法中,只有能够保证分解后的关系模式与原关系模式等价的方法才有意义。

3、关系模式分解的三个定义:(1)分解具有“无损联接性”。

(2)分解要“保持函数依赖”。

(3)分解既要“保持函数依赖性”,又要具有“无损连接性”。

规化理论提供了一套完整的模式分解算法,按照这套算法可以做到:●若要求分解具有无损联接性,那么模式分解一定能够达到4NF。

●若要求分解保持函数依赖,那么模式分解一定能够达到3NF,但不一定能达到BCNF。

●若要求分解具有无损联接性又保持函数依赖,则模式分解一定能够达到3NF,但不一定能达到BCNF。

我们希望最好能够既要“保持函数依赖”,又要具有“无损联接性”,从上面结论可以看到只能达到3NF,至于能否达到BCNF或更高,要看具体情况。

相关主题