《数据库系统原理自考-第3章关系模式设计理论》课件.ppt

《数据库系统原理自考-第3章关系模式设计理论》课件.ppt

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
属性集的闭包 算法:求属性集X(X?U)关于U上的函数依赖集F的闭包Xp+。输入:X,F;输出:XF+;步骤: (1)令X(0)=X,i=0 (2)求B,B={A|(?v)(?w)(v→w∈F∧V?X(i) )∧A∈W} (3)X(i+1)=B∪X(i) (4)判断X(i+1)=X(i)吗? (5)若相等或X(i+1)=U,则X(i+1)即为XF+,算法终止。 (6)若否,则i=i+1,返回(2)。 对于算法, 令ai =|X(i)|,{ai }形成一个步长大于1的严格递增的序列,序列的上界是 | U |,因此该算法最多 |U| - |X| 次循环就会终止。 例2:已知关系模式RU,F,U={A,B,C,D}, F={A→B,B→C,D→B}, 求(A)+,(AD)+,(BD)+ (1)求(A)+:X(0)=A,由A→B得X(1)=AB, 再由B→C得X(2)=ABC, X(3)=X(2),可得(A) + =ABC。 (2)求(AD)+ : X(0)=AD,由A→B,D→B得X(1)=ABD, 再由B→C得X(2)=ABCD, X(2) = U,可得(AD) + =ABCD。 (3)求(BD)+ :X(0)=BD,由B→C,D→B得X(1)=BCD, X(2)=X(1),可得(BD) + =BCD。 最小依赖集 例4:求FD集F={AB→C,C→A,BC→D,ACD→B, D→EG,BE→C,CG→BD,CE→AG}的最小依赖集。 (1)分解右部: AB→C,C→A, BC→D, ACD→B, D→E, D→G, BE→C, CG→B, CG→D, CE→A, CE→G (2)消去左部冗余:由于C→A,因此ACD→B可由CD→B代替;又CE→A可由C→A代替 (3)消去冗余的FD:由于CD→B和D→G,因此消去CG→B 由上得出Fm={AB→C,C→A, BC→D, CD→B, D→E, D→G, BE→C, CG→D, CE→G} 最小依赖集 注意:F的最小依赖集Fm不一定是惟一的,它与对各函数依赖FDi及X→A中X各属性的位置顺序有关。 例5:F={A→B, B→A, B→C, A→C, C→A} (1)由B→C, C→A,消去B→A, 再由A→B, B→C,消去A→C, 得Fm1={A→B, B→C, C→A} (2)由B→A, A→C,消去B→C, 得Fm2={A→B, B→A, A→C, C→A} 无损分解的测试方法 要灵活应用算法P79 例1:P79-3.11 例2:已知RU,F,U={A,B,C,D,E},F={AB→C, C→D,D→E},R的一个分解为{ABC,CD,DE},判断此分解是否为无损分解。 例3:R=ABCDE,R1=AD,R2=AB,R3=BE, R4=CDE,R5=AE,设F={A→C,B→C,C→D,DE→C, CE→A},判断R分解为{R1,R2,R3,R4,R5}是否为无损分解。 无损分解 定理:如果R的分解为p={R1,R2},F为R所满足的函数依赖集合,分解p具有无损联接性的充分必要条件是: R1∩R2→(R1-R2)或R1∩R2→(R2-R1) 其中R1∩R2表示两模式的交,即R1与R2公共属性构成; R1-R2表两模式的差集,即R1中去除两模式的公共属性。 即:当模式R分解成两个关系模式R1和R2时,如果R1和R2的公共属性能函数决定R1或R2中的其它属性,这样的分解具有无损连接性。 例4:R=ABC,F={A→B},判断分解p1={R1(AB),R2(AC)}, p2 ={R1(AB),R3(BC)}是否无损分解。 对p1 ,由于R1∩R2=A, R1-R2=B,因为有A→B,所以p1是无损联接; 对p2 ,由于R1∩R3=B, R1-R3=A, R3-R1=C,B→A和B→C均不在F中 ,所以p2不是无损联接。 例1:R(S#,C#,Score,T#,Title) FD:(S#,C#)→(T#,Title), C#→(T#,Title) 由于第一个FD局部依赖,所以R不是2NF。 可以分解为: R1(C#,T#,Title) R2(S#,C#,Score) 例2:商品供应关系Supply={Sno,Pno,Scity, Status,Price,Qty}(供应商号,零件号,供应商城市,供应商状态,零售价格,数量) FD:Sno→Scity,Scity→Status,Pno→Price,

文档评论(0)

秦圈圈 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档