- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库系统概论17模式分解等价标准
授课主题;消除非主属性对码的部分函数依赖
消除非主属性对码的传递函数依赖
消除函数依赖的决定因素是非码; 规范化过程就是把一个关系模式分解为若干个关系模式,而且这种分解应该是可逆的。所谓可逆,是要求模式的分解是没有信息丢失,并保证分解后产生的关系模式集合和原来的关系模式等价。
如何对关系模式进行分解才能保证没有信息丢失呢?
对于同一个关系模式可能有多种分解方案。下面的例子给出三种分解方案,如何判断哪种分解方案更好呢?;三种分解方案(模式分解不唯一);sno;sno;6.4.1 模式分解的等价标准;(1)无损连接的定义
指的是对关系模式分解时,原关系模式下任一合法的关系实例在分解之后应能通过自然连接运算恢复起来。
定义:设ρ={R1,R2,……,Rk}是关系模式RU,F的一个分解,如果对于R的任一满足F的关系r都有
r=∏R1(r) ??R2(r) … ∏Rk(r)
则称这个分解ρ是满足依赖集F的无损连接。;(2)验证无损连接的充要条件
如果R的分解为ρ={R1,R2},F为R所满足的函数依赖集合,则分解ρ具有无损连接性的充分必要条件为
R1∩R2→(R1-R2)∈F+ 或R1∩R2→(R2-R1)∈F+ ;(3)无损连接的测试方法------表格法(算法6.2,P189)
算法:检验无损连接性。
输入:关系模式R(A1,A2,…,An),它的函数依赖集F以及分解ρ={R1,R2,…,Rk}。
输出:确定ρ是否具有无损连接性。
方法:
①构造一个k行n列的表,第i行对应于关系模式Ri,第j列对应于属性Aj。如果Aj∈Ri,则在第i行第j列上放符号aj,否则放符号bij。
②逐个检查F中的每一个函数依赖,并修改表中的元素。其方式如下:取F中一个函数依赖X→Y,在X的分量中寻找相同的行,然后将这些行中Y的分量改为相同的符号,如果其中有aj,则将bij改为aj;若无aj,则改为bij(i是这些行的行号最小值)。
③这样反复进行,如果发现某一行变成了a1,a2,…,ak,则分解ρ具有无损连接性;如果F中所有函数依赖都不能再修改表中的内容,且没有发现这样的行,则分解ρ不具有无损连接性。;例:对给定的关系模式R(U,F),U={A,B,C,D,E},F={A→C,B→C,C→D,DE→C,CE→A},有如下的分解: ρ={AD,AB,BE,CDE,AE},判断分解ρ是否无损。;(3)根据C→D,对上表进行处理,由于属性列C上的第1,2,3,5是相同的符号b13,而D列的1,2,3,5行中有a4,所以将D列的b24、b34、 b54改为相同的符号a4,修改后的表如表1-3所示。;(5)根据CE→A,将属性列A上的第3、4行改为a1,修改后如表1-5所示。;课堂练习:对给定的关系模式R(U,F),U={U,V,W,X,Y,Z},F={U→V,W→Z,Y→U,WY→X},现如下的分解:
(1)ρ1={WZ,VY,WXY,UV}
(2)ρ2={UVY,WXYZ}
判断上述分解是否具有无损连接性。;6.4.3 分解保持函数依赖;例:对给定的关系模式R(U,F),U={A,B,C,D},F={A→B,B→C,C→D,D→A},判断关系模式R的分解ρ={AB,BC,CD}是否具有函数依赖保持性。;前例:现有关系模式R(A,B,C),其上的函数依赖集F={A→B,C→B},判断ρ1={AB,AC}, ρ2={AB,BC}是否保持函数依赖。 ;说明:
(1)分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。它们两者之间是没有联系的。具有无损连接性的分解不一定保持函数依赖,保持函数依赖的不一定具有无损连接性。例如上一例题的二种分解,一种具有无损连接性但没有保持函数依赖,另一种不具有无损连接性但保持了函数依赖。
因此,关系模式的一个分解可能是保持函数依赖的,可能是具有无损连接的,也可能是既具有无损连接性又保持函数依赖的。
(2)若要求分解既具有无损连接性,又保持函数依赖,则模式分解可以达到3NF,但不一定能达到BCNF。;6.4.3 模式分解的算法
算法1、把一个关系模式分解为3NF,使它具有无损连接性又具有依赖保持性。
输入:关系模式R和R的最小依赖集Fm
输出:R的一个分解ρ={R1,R2,…,Rk},Ri为3NF(i=1,…,k), ρ具有无损联接性和依赖保持性。
方法:
(1)如果Fm中只有一依赖X→A,且XA=R,则输出ρ=(R),则转(4)。
(2)如果R中某些属性与F中所有依赖的左边和右边都无关(N类属性),则将它们构成关系模式,R中将它们分出去。
(3)对于Fm中的每一个X
文档评论(0)