网站大量收购独家精品文档,联系QQ:2885784924

模式分解的例子.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模式分解的例子

模式分解、最小函数依赖集 函数依赖的公理系统: ??? 设有关系模式R(U),X,Y,Z,W均是U的子集,F是R上只涉及到U中属性的函数依赖集,推理规则如下: 自反律:如果YXU,则X→Y在R上成立。 增广律:如果X→Y为F所蕴涵,ZU,则XZ→YZ在R上成立。(XZ表示XZ,下同) 传递律:如果X→Y和Y→Z在R上成立,则X→Z在R上成立。 以上三条为Armstrong公理系统 合并律:如果X→Y和X→Z成立,那么X→YZ成立。 伪传递律:如果X→Y和WY→Z成立,那么WX→Z成立。 分解律:如果X→Y和ZY成立,那么X→Z成立。 这三条为引理??? 注意: 由自反律所得到的函数依赖均是平凡的函数依赖。 模式分解的几个重要事实: 若只要求分解具有“无损连接性”,一定可以达到4NF; 若要求分解要“保持函数依赖”,可以达到3NF,但不一定能达到BCNF; 若要求分解既要“保持函数依赖”,又要具有“无损连接性”,可以达到3NF,但不一定能达到BCNF; 试分析下列分解是否具有无损联接和保持函数依赖的特点: 设R(ABC),F1={A→B} 在R上成立,ρ1={AB,AC}。 首先,检查是否具有无损联接特点: 第1种解法--算法4.2: ? A B C AB a1 a2 b13 AC a1 b22 a3 A B C a1 a2 b13 a1 a2 a3 (1) 构造表 (2)根据A→B进行处理 结果第二行全是a行,因此分解是无损联接分解。 第2种解法:(定理4.8)   R1(AB)∩R2(AC)=A   R2- R1=B   A→B,∴该分解是无损联接分解。 然后,检查分解是否保持函数依赖   πR1(F1)={A→B,以及按自反率推出的一些函数依赖}   πR2(F1)={按自反率推出的一些函数依赖}   F1被πR1(F1)所蕴涵,所以该分解保持函数依赖。保持函数依赖的模式分解 一、转换成3NF的保持函数依赖的分解 算法: ρ={R1U1,F1,R2U2,F2,...,RkUk,Fk}是关系模式RU,F的一个分解,U={A1,A2,...,An},F={FD1,FD2,...,FDp},并设F是一个最小依赖集,记FDi为Xi→Alj,其步骤如下: ?对RU,F的函数依赖集F进行极小化处理(处理后的结果仍记为F); ?找出不在F中出现的属性,将这样的属性构成一个关系模式。把这些属性从U中去掉,剩余的属性仍记为U; ?若有X→A?F,且XA=U,则ρ={R},算法终止; ?否则,对F按具有相同左部的原则分组(假定分为k组),每一组函数依赖Fi所涉及的全部属性形成一个属性集Ui。若Ui?Uj(i≠j),就去掉Ui。由于经过了步骤,故 ,于是构成的一个保持函数依赖的分解。并且,每个Ri(Ui,Fi)均属于3NF且保持函数依赖。 ? 例1:关系模式RU,F,其中U={C,T,H,I,S,G},F={CS→G,C→T,TH→I,HI→C,HS→I},将其分解成3NF并保持函数依赖。 解:根据算法进行求解 (一)计算F的最小函数依赖集 ?利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖。由于F的所有函数依赖的右边都是单个属性,故不用分解。 ?去掉F中多余的函数依赖 A.设CS→G为冗余的函数依赖,则去掉CS→G,得: F1={C→T,TH→I,HI→C,HS→I} 计算(CS)F1+: 设X(0)=CS 计算X(1):扫描F1中各个函数依赖,找到左部为CS或CS子集的函数依赖,找到一个C→T函数依赖。故有X(1)=X(0)T=CST。 计算X(2):扫描F1中的各个函数依赖,找到左部为CST或CST子集的函数依赖,没有找到任何函数依赖。故有X(2)=X(1)。算法终止。 ?(CS)F1+= CST不包含G,故CS→G不是冗余的函数依赖,不能从F1中去掉。 B.设C→T为冗余的函数依赖,则去掉C→T,得: F2={CS→G,TH→I,HI→C,HS→I} 计算(C)F2+: 设X(0)=C 计算X(1):扫描F2中的各个函数依赖,没有找到左部为C的函数依赖。故有X(1)=X(0)。算法终止。故C→T不是冗余的函数依赖,不能从F2中去掉。 C.设TH→I为冗余的函数依赖,则去掉TH→I,得: F3={CS→G,C→T,HI→C,HS→I} 计算(TH)F3+: 设X(0)=TH 计算X(1):扫描F3中的各个函数依赖,没有找到左部为TH或TH子集的函数依赖。故有X(1)=X(0)。算法终止。故TH→I不是冗余的函数依赖,不能从F3中去掉。 D.设HI→C为冗余的函数依赖,则去掉HI→C,得: F4={CS→G,C→T,TH→I,HS→I} 计算(HI)F4+: 设X(0)=HI 计算X(1):扫描F4中的各个函数依

文档评论(0)

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

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

1亿VIP精品文档

相关文档