函数依赖理论第一讲.ppt

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

函数依赖理论 郑子仪 函数依赖定义 函数依赖(functional dependency, 简称FD)是一种完整性约束,是现实世界事物属性之间的一种制约关系,它广泛地存在于现实世界之中。 设r(R)为关系模式,??R,??R。对任意合法关系r及其中任两个元组ti和tj,i?j,若ti[?]=tj[?],则ti[?]=tj[?],则称?函数确定? 或 ? 函数依赖于?,记作???。 ? ? 图5-3 ??? 函数依赖图 下图所示的是满足函数依赖AB?C的关系模式r(A, B, C, D)的一个关系实例。 对于任意两个在属性集{A, B}上取值相同的元组,它们在属性C上的取值也相同。 A B C D a1 b1 c1 d1 a1 b1 c1 d2 a1 b2 c2 d1 a2 b1 c3 d1 如果在图中再增加一个元组(a1, b1, c2, d1),AB?C 还成立吗? 注意: 1.函数依赖不是指关系模式R的某个或某些关系满足的条件,而是指R的一切关系均要满足的约束条件 2.函数依赖是语义范畴的概念,只能根据数据的语义来确定函数依赖,是不能够被证明的。 3.数据库设计者可以对现实世界作强制的规定。 平凡与非平凡函数依赖 在关系模式r(R)中,??R,??R。若???,但???,则称???是非平凡函数依赖。否则,若???, 则称???是平凡函数依赖。 对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。 ? ? ? ? (a) 非平凡函数依赖 (b) 平凡函数依赖 图5-5 非平凡及平凡函数依赖图 完全函数依赖和部分函数依赖 在关系模式r(R)中,??R,??R,且???。若对任意的???,???都不成立,则称???是完全函数依赖,简称完全依赖。否则,若存在非空的???,且???成立, 则称???是部分函数依赖,简称部分依赖。 ? ? ? 图5-6 部分依赖???的依赖图 完全函数依赖和部分函数依赖举例 当?是单属性时,则???完全函数依赖总是成立的。 例如,在关系SCE中 完全依赖: studentNo ? studentName courseNo ? courseName {studentNo, courseNo} ? score 部分依赖: {studentNo, courseNo} ? studentName {studentNo, courseNo} ? courseName 传递函数依赖 在关系模式r(R)中,??R,??R,???,??R。若???,???,???,则必存在函数依赖???,并称???是传递函数依赖,简称传递依赖。 与部分依赖一样,传递依赖也可能会导致数据冗余及产生各种异常。 ? ? ? 图5-7 传递依赖??? 的依赖图 函数依赖集闭包 对于给定关系模式r(R)及其函数依赖集F,有时只考虑给定的函数依赖集是不够的,而需要考虑在r(R)上总是成立的所有函数依赖。 若给定函数依赖集F,可以证明其他函数依赖也成立,则称这些函数依赖被F逻辑蕴涵。 令F为一函数依赖集,F逻辑蕴涵的所有函数依赖组成的集合称为F的闭包,记为F+。 函数依赖集F的闭包计算方法 Armstrong公理的推理规则 Armstrong公理 自反律(reflexivity rule):若存在???,则有??? 增补律(augmentation rule):若存在???,则有????? 传递律(transitivity rule):若存在???且???,则有??? Armstrong公理三个推论 合并律(union rule):若有???且???,则有???? 分解律(decomposition rule):若有????,则有???和??? 伪传递律(pseudotransitivity rule):若有???且????,则有???? 函数依赖集闭包计算举例 令r(R)=r(A, B, C, G, H, I),函数依赖集F={A?B, A?C, CG?H, CG?I, B?H}。我们可列出F+中的几个依赖: 由传递律可得A?H,因为A?B且B?H; 由合并律可得CG?HI,因为CG?H,CG?I; 由伪传递律可得AG?I,因为A?C且CG?I。 属性集闭包 如果想要判断一个给定的函数依赖???是否在函数依赖集F的闭包中,不用计算F+就可以判断出来。 令r(R)为关系模式,F为函数依赖集,A?R,则称在函数依赖集F下由A函数确定的所有属性的集合为F下A的闭包,记为A+。 闭包计算算法 closure :=A; repeat until (closure没有变化) do for each ???

文档评论(0)

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

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

1亿VIP精品文档

相关文档