SQLServer教案第04周关系模式的分解doc.docx
《SQLServer教案第04周关系模式的分解doc.docx》由会员分享,可在线阅读,更多相关《SQLServer教案第04周关系模式的分解doc.docx(11页珍藏版)》请在冰豆网上搜索。
SQLServer教案第04周关系模式的分解doc
授课日期
年月曰第4周
授课形式
讲课
授课时数
4
章节名称
第04章关系模式的分解
教学目的与要求
1理解关系模式的分解、保持无损连接的分解、保持函数依赖分解的概念
2掌握判断某个关系模式的分解是否是无损分解的方法和Chase过程
教学重点
无损分解和保持函数依赖的分解
教学难点
判断某个关系模式的分解是否是无损分解的方法和Chase过程
教学方法和手段
讲授法结合课堂实例分析讨论
教学过程与组织
导入新课
我们已经学习了数据库规范化设计的第一范式、第二范式、第三范式、BC范式、第四范式、第五范式。
一般的工程应用,大多只需要满足第三范式即可。
要将某个只满足较低范式的关系模式修改为满足较高范式的关系模式,就要对原有的关系模式进行分解。
现在我们将学习如何对一个关系模式进行合理的分解。
讲授新课
第04章关系模式的分解
第01节关系模式的分解
3.5.1关系模式的分解原则
解决关系模式的冗余、插入异常和删除异常的的方法是将其分解。
在分解中会涉及一些新问题。
这些新问题的实质是如何能够通过分解而保持原来关系模式的特性,这些特性就是函数依赖。
也即原关系模式的函数依赖通过分解并不丢失。
因此要求分解具备无损联接性和保持其原有的函数依赖。
设有关系模式R=AiA2...An,RbR2,...,Rk都是R的子集,其中R=RjUR2URkU...URkc关
系模式R],R2,...,Rk的集合用P表示,P={R[,R2,…,Rk}。
用P代替R的过程称为关系模式的分解。
3.4.1无损联接
(1)无损联接的定义
设关系模式R,它的一个分解是P={Ri,R2,.・・,Rk},F是R上的一个函数依赖集。
如果对于R中
满足F的每一个关系I•都有r=^RiCr)冈吨20*)冈…冈HRk(r)成立,则称分解P相对于F是“无损联接分解”(losslessjoindecomposition)o即i•是它在Rj的投影的自然连接。
其中^Ri(r)表示关系r在关系模式Ri的属性上的投影。
用mp(r)表示r的投影连接表达式,即:
mP(r)=71ri(r)E%(“冈...E
则称nip(r)为r的投影连接变换。
一般情况下r与mp(r)是不相等的。
关系模式R关于F的无损连接条件是:
任何满足F的关系「,都有r=mp(r)o
上述定义可以这样较为直观地理解:
设有关系模式R,如果把R分解为n个(n>l)子模式,相应一个R关系中的数据就要被分成n个子表Ri,R2,…,站。
如果这n个子表自然连接(即进行R]X
R2X...XRn)的结果与原来的R关系相同(即数据未损失),则称该分解具备无损连接性。
保持关系模式分解的无损连接性是必要的,因为它保证了该模式上的任何一个关系能由它的那些投影通过自然连接而得到恢复。
定理3・4设R是一个关系模式,P={Ri,R2,...,Rk}是关系模式R的一个分解"是R的任一关系,rj=JlRi(R)(lWiWk),则有:
®rCmP(r);②如果S=mP(r),则Hri(S);③mp(mP(r)=mP(r)
(2)无损联接的判定
定理3-5若R的分解p={R],R2},F为R所满足的两数依赖集,分解P具备无损联接的充分必要条件是:
R1nR2^(Ri-R2)eF+或者RiCIR2T(R2・R1)&F+
定理3-5中RiAR2为模式Ri和R2的交集,由两模式的公共属性组成;(Ri・R2)、依2次1)表示两模式的差集,分别由R]、R2中去除两模式的公共属性后的其它属性组成。
该定理表明当一个关系模式分解成两个关系模式时,如果两关系模式的公共属性能够函数决定它们屮的其它属性时,这样的分解具备无损联接性。
例3-13设有关系模式R(A,B,C),F={A~B},判断R的两个分解pi={Ri(A,B),R2(A,C)}>P2={Ri(A,B),R3(B,C)}是否具备无损连接性。
解:
根据定理3・5,pi具备无损连接性,P2不具备无损连接性。
算法3・3无损联接的测试算法。
输入:
关系模式R=AjA2...An,R上的函数依赖集F,R的一个分解P={Rj}(i=l,2,...,k)o
输出:
判断P相对于F是否具备无损联接特性。
方法:
①构造一张k行n列的表格,每列对应一个属性Ai(lWjWn),每行对应一个分解后的关系模式Ri(lWiW町。
如果Aj在Ri中,则在表格的第i行第j列上填写上色,否则填上bij。
2反复检查F的每一个函数依赖,并修改表格中的元素,其方法为(Chase过程):
取F的一个函数依赖XTY,如果表中有两行在X分量上相等,在Y分量上不等,则修改Y,使在这两行上的分量相等。
如果Y的分量上有一个是家则另一个也修改为如果没有$则用其中的某一个bij替
代另一个符号(尽量将ij改成较小的数),一直到表格不能再修改为止。
3判断:
若修改到最后表格中有一行是全a,即aia2...an,则可以下结论P相对于F是无损联
接。
例3・14关系模式R(S,A,I,P),F={S->A,{S,I}->P},p={Ri(SA),R2(SIP)},检验分解是否为无损联接分解。
解:
通过修改发现表中第二行元素变为aba2,...,an,所以该分解是无损联接分解。
例3-15已知关系模式R(A,B,C,D,E)及函数依赖集F={A->C,B->C,C->D,{D,E}->C,{C,E}->A},验
证分解p={Ri(A,D),R2(A,B),R3(B,E),R4(C,D,E),R5(A,E)}是否为无损联接分解。
解:
通过修改发现表中第三行元素变为ai,a2,...,am所以该分解是无损联接分解。
3.4.2保持函数依赖的分解
设F是属性集U上的函数依赖集,Z是U的一个子集,F在Z上的一个投影用Hz(F)表示,定义为:
Hz(F)={XtY|XtYef+且XYcZ}
设关系R的一个分解P={R],R2,...,Rk},F是R上的一个函数依赖集,如果F+=(Hri(F)UHr2(F)
U...U兀Rk(F))+,则称分解P保持函数依赖。
关系模式R的分解保持函数依赖意味着R的函数依赖集F在R分解后在数据库模式屮保持不变,即R到P={Ri,R2,…,Rk}的分解,应使得F被F在这些Ri(i=l,2,...,k)上的投影蕴含。
关系模式R的分解保持其函数依赖F是必要的:
因为F是对R的完整性约束,故而要求R分解以后必须保持F(即F对R的分解P也要有效)。
如果F的投影不蕴含F,而我们又用P={R1,R2,...,Rk}表达R,则可能出现一个数据库实例。
满足投影后的依赖,但不满足F,对。
的更新也可能违反函数依赖。
如果分解能保持函数依赖,则在作任何数据更新时,只要每个关系模式本身的函数依赖约束可满足,就可以确保整个数据库中数据的语义完整性不受破坏。
例3・16关系模式R={CITY,ST,ZIP},其屮CITY为城市,ST为街道,ZIP为邮政编码,F={(CITYST)-ZIP,ZIP->CITY}。
如果将R分解成R]={ST,ZIP}、R2={CITY,ZIP),检查分解是否具备无损连接和保持函数依赖。
解:
①检查无损连接性:
•・・R]QR2={ZIP},R]・R2={CITY},(ZIP-CITY)eF+
・・・该分解具备无损连接性。
2检查分解是否保持函数依赖:
•・•Hr1(F)=
(1),nR2(F)={ZIPfCITY},Hri(F)U兀r2(F)={ZIP—CITY}HF*
・•・该分解不保持函数依赖。
此例中,由于分解不保持函数依赖性,数据库管理系统不能保证关系数据的完整性。
因为R1在ST与ZIP之间无函数依赖,所以系统无法检查。
例如,在R1的关系中插入(Zhang-san,200433)(Zhang-san,200434),在R2的关系中插入(Shanghai,200433)、(Shanghai,200434)0将R1和R2的关系进行自然联接,结果如图4・7所示。
该结果关系破坏了原来的函数依赖(CITY,ST)-ZIP,其原因由于该函数依赖在分解中丢失。
图4・7不具备保持函数依赖的分解
3.4.3关系模式的分解算法
在本节的相关例题屮,关系模式A(U,F)的相关属性和函数依赖的含义为:
属性C表示课程、T
表示教师、H表示时间、R表示教室、S表示学生、G表示成绩;函数依赖C-T表示每门课程仅有
一名教师讲授、HR-C表示在任一时I'可内每个教室只能上一门课程、HT-R表示在一个时I'可内一个
教师只能在一个教室上课、CS->G表示每个学生的每门课程只有一个成绩、HS-R表示在一个时间
内每个学生只能在一个教室内听课、HS-C表示在一个时间内每个学生只能听一门课。
(1)将关系模式保持函数依赖地分解成3NF模式集的算法
算法3-4将关系模式保持函数依赖地分解成3NF模式集的算法。
输入:
关系模式R(U,F)
输出:
R的满足3NF且保持函数依赖的一个分解p
方法:
1对F进行极小化处理(设极小化处理后的最小函数依赖集为Fm),置p=4>;
2在U中找出所有不在Fm中出现的属性,将它们分离出去,单独构成1个关系模式并纳入p中;
3如果Fm中有一个函数依赖涉及R中的全部屈性,则R不能再分解,p=R,转⑤;
4对于Fm中的每一个X-A,构建一个关系模式XA并纳入p中;如果Fm中有X-A],X-
A2,...,XfAn,则可以用模式XAiA2...A口代替n个模式XAbXA2,...,XAn;
5输出p,算法结束。
例3・17设关系模式A(U,F),U={CTHRSGXYZ}(注:
{CTHRSGYZ}为{C,T,HR,S,G}的简略书写),F={CfT,CSfGHR—C,HSfR,THfR,CfX}。
将A分解为3NF且保持函数依赖的模式集。
解:
按算法3・4的步骤:
1对F进行极小化处理,Fm={C—T,CS-GHR-C,HS-R,TH-R,C-X},p=4>;
2p={YZ},U={CTHRSG}:
3Fm屮没有涉及A屮全部属性的函数依赖,故算法3-4的第③步不实施;
4U{CT,CSG,HRC,HSR,THR,CX}={YZ,CT,CSG,HRC,HSR,THR,CX}={YZ,CTX,CSGHRC,HSR,THR};
5输出p={YZ,CTX,CSGHRC,HSR,THR}。
(2)将关系模式保持函数依赖并具备无损连接性地分解成3NF模式集的算法
定理3-6设p={R1,R2,...,Rk}是由算法3-4得到的关系模式R的一个分解,X是R的一个候选键,则模式集t=pU{X}是R的一个分解,丫中所有模式都是3NF,这个分解保持函数依赖且具备无损联接性。
算法3-5将关系模式保持函数依赖并具备无损连接性地分解成3NF模式集。
输入:
关系模式R(U,F),R的一个候选键X
输出:
R的满足3NF且保持函数依赖并具备无损连接性的一个分解t
方法:
1按照算法3-4求得R的一个分解p二{Ri(Ui,Fi),R2(U2,F2),...,Rk(Uk,Fk)},p满足3NF且保持
函数依赖;
2置t=PU{R*(X,Fx)},其屮X是R的候选键;
3扫描t中每个Uj(i=l,2,...,k),若有某个Ui使XUUi成立,则从丫中去掉{R*(X,Fx)};
4输出t,算法结束。
例3・18设关系模式A(U,F),U={CTHRSGXYZ},F={C—T,CS-G,HR->C,HS-R,TH-R,C-X}。
将A保持函数依赖并具备无损连接性地分解成3NF模式集。
解:
容易求出HS是A的候选键。
按算法3・5的步骤:
1按算法3-4求得A的一个分解p={YZ,CTX,CSGHRC,HSR,THR};
2置T=pU{A*(HS,Fhs)}={YZ,CTX,CSGHRC,HSR,THR,HS};
3扫描T中每个Ui,发现U5=HSR使HSCHSR成立,故从t中去掉{HS};
4输出t={YZ,CTX,CSG,HRC,HSR,THR}。
(3)将关系模式具备无损连接性地分解成BCNF模式集的算法
对于任一关系模式R,可以找到一个分解达到3NF且具备无损连接性和保持函数依赖性;而将R分解为BCNF,可以保证无损连接性,但不一定能保持函数依赖性。
定理3・7设F是模式R的函数依赖集,P={R],R2,…,Rk}是相对于F的一个无损联接分解,贝U:
1对于某个i,设Fj=nRj(F),且Pl={Si,S2,・・・,Sm}是相对于Fj的R的一个无损联接分解。
那
么R分解成{Ri,R2,...,Ri・i,Si,S2,...,Sni,Ri+l,Ri+2,...,Rk}也是相対于F的一个无损联接分解。
2设P2={R1,R2,…,RkRk+1,…,Rn}是R的一个分解,那么P2相对于F也是无损联接分解。
算法3-6将关系模式具备无损连接性地分解成BCNF模式集。
输入:
关系模式R,R上成立的函数依赖集F。
输出:
R的一个具备无损连接性地的分解P={Ri,R2,...,Rk},每个Ri相对于兀Ri(F)是BCNF。
方法:
反复应用定理3・7,逐步分解R,使每次分解具备无损联接性且分解得到的模式是BCNFo
1置初值P={R};
2扫描P屮的关系模式,如果P屮所有关系模式都是BCNF,贝I」转④;
3如果P中有一个关系模式S不是BCNF,则S中必能找到一个X->A,其屮X不是S的候选键,且AWX,设S1=XA,S2=S・A,用分解{SI,S2}代替S,转②;
4输出P,算法结朿。
例3・19设关系模式R(U,F),U={N,C,GT,D}(S为学生学号,C为课程号,G为成绩,T为教师姓名,D为教师所在系),F={(N,C)fGC—T,TfD}。
将R具备无损连接性地分解成BCNF模式集。
解:
按算法3・6的步骤:
©:
R的键为(N,C),置初值P=R,有Up=U,Fp=F;
②〜③:
扫描P,因F中存在不为候选键的决定因素(即P不服从BCNF),需分解。
色选择符合算法3-6分解条件(X->A,X不是键且AGX)的T-D分解P:
将P分解为{S1,S2},其中:
S1={T,D},F1={T-*D};S1中T为候选键,故S1是BCNFS2={N,C,GT},F2={(N,C)->QC->T};S2中(N,C)为候选键,S2不是BCNF,需分解
0S2的键为(N,C),仿色选择C-T分解S2:
将S2分解为{S3,S4},其中:
S3={C,T},F3={C—T};S3中C为键,S3服从BCNF
S4={N,C,G},F4={(N,C)fG};S4中(N,C)为键,S4服从BCNF至此,P={S1,S3,S4},P中所有模式都是BCNF,分解完毕。
④:
P={(T,D),(C,T),(N,C,G)}
此例的分解结果中,分解模式的函数依赖集的并集为{T-*D,C-*T,(N,C)-*G},保持了F的所有函数依赖。
(4)关于模式分解的重要结论
1若要求分解保持函数依赖,则模式分解总可以达到3NF,但不一定达到BCNFo
2若要求分解具备无损连接性,则分解一定可以达到BCNFo
3若要求分解既保持函数依赖,又具备无损连接性,那么模式分解一定可以达到3NF,但不一定达至ljBCNFo
作业
设有关系模式R(U,F),其中U={A,B,C,D,E},F={(A,C}->E,E->D,A-B,B~>D},现对R有一个分解p={Rl(A,B,C),R2(E,D),R3(A,C,E)},判断p对于R是否是无损分解和保持函数依赖的分解。
教学内容的深化和拓展
课堂小结
教学后记