求最小函数依赖集例题.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于闭包的求最小函数依赖集算法 定义:如果函数依赖集 F 满足下列条件, 则称 F 为最小函数依赖集或最小覆 盖。 ① F 中的任何一个函数依赖的右部仅含有一个属性; ② F 中不存在这样一个函数依赖 X→A,使得 F 与 F- {X →A} 等价; ③ F 中不存在这样一个函数依赖 X→A,X 有真子集 Z 使得 F- {X →A} ∪{Z →A} 与 F 等价。 算法:计算最小函数依赖集。 输入 一个函数依赖集 输出 F 的一个等价的最小函数依赖集 G 步骤:① 用分解的法则,使 F 中的任何一个函数依赖的右部仅含有一个属 性; ② 去掉多余的函数依赖: 从第一个函数依赖 X→Y 开始将其从 F 中去 掉,然后在 剩下 的函数依赖中求 X 的闭包 X+,看 X+是否包含 Y,若是,则去掉 X→Y; 否则不能去掉,依次做下去。直到找不到冗余的函数依赖; ③ 去掉各依赖左部多余的属性。一个一个地检查 经过第②步去掉了 多余依赖后 的函数依赖左部非单个属性的依赖。 例如 XY→A,若要判 Y 为多余的, 则以 X→A 代替 XY→A 是否等价?若 A 属于 (X)+ ,则 Y 是多余属性,可以去掉。 注:以下题目中有些步骤 (如判断左部单属性的依赖是否为多余依赖的步骤) 作 者嫌麻烦就省略掉了 例题 1:已知关系模式 R,U={A,B,C,D,E,G} , F={AB→C,D→EG,C→A,BE→C,BC→D,CG→BD,ACD→B,CE→AG},求 F 的最小函数 依赖集。 解 1:利用算法求解,使得其满足三个条件 ① 利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖, 得 F 为: F={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→B,CG→D,ACD→B,CE→A,CE→G} ② 去掉 F 中多余的函数依赖 A.设 AB→C 为冗余的函数依赖,则去掉 AB→C,得: F1={D→E,D→G,C→A,BE→C,BC→D,CG→B,CG→D,ACD→B,CE→A,CE→G} 计算 (AB)F1+:设 X(0)=AB 计算 X(1) :扫描 F1 中各个函数依赖, 找到左部为 AB 或 AB 子集的函数依赖, 因为找不到这样的函数依赖。故有 X(1)=X(0)=AB ,算法终止。 (AB)F1+= AB 不包含 C,故 AB→C 不是冗余的函数依赖,不能从 F1 中去掉。 B.设 CG→B 为冗余的函数依赖,则去掉 CG→B,得: F2={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,ACD→B,CE→A,CE→G} 计算 (CG)F2+:设 X(0)=CG 计算 X(1) :扫描 F2 中的各个函数依赖,找到左部为 CG或 CG子集的函数依 赖,得到一个 C→A 函数依赖。故有 X(1)=X(0) ∪A=CGA=ACG。 计算 X(2) :扫描 F2 中的各个函数依赖,找到左部为 ACG或 ACG子集的函数 依赖,得到一个 CG→D 函数依赖。故有 X(2)=X(1) ∪D=ACDG。 计算 X(3) :扫描 F2 中的各个函数依赖,找到左部为 ACDG或 ACDG子集的函 数依赖,得到两个 ACD→B 和 D→E 函数依赖。故有 X(3)=X(2) ∪BE=ABCDEG,因 为 X(3)=U ,算法终止。 (CG)F2+=

文档评论(0)

187****3997 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档