属性闭包在关系数据理论中及应用.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
属性闭包在关系数据理论中及应用

属性闭包在关系数据理论中的应用 0 引言 设计任何一种数据库应用系统时,不论是层次的、网状的还是关系的,都会遇到如何构造合适的数据模式即逻辑结构的问题。针对一个具体问题,应该如何构造一个适合于它的数据模式,即应该构造几个关系模式、每个关系由哪些属性组成等,这是数据库设计的问题。关系数据理论是数据库逻辑结构设计的重要理论基础。数据库设计理论主要包括数据依赖、范式和规范化方法。关系模式分解的程度用范式来衡量,确定一个关系模式的最高范式时首先要找出所有主属性和非主属性。确定主属性和非主属性的前提是要找出所有的候选键(候选键中的属性就是主属性)。可见,候选键的确定在数据库逻辑结构设计中具有重要地位。本文结合自己在教学过程中的体会谈谈属性闭包在关系数据理论中的应用。 1 闭包的含义与计算 (1)定义: 设关系模式R(U,F ),U 为其属性集,F 为其函数依赖集,则称在所有用Armstrong 公理从F 推出的函数依赖X → Ai 中,Ai 的属性集合为X 的属性闭包,记为X+。 (2)计算: 求属性集X 关于函数依赖F 的属性闭包X+。设关系模式R 的全部属性集为U,在U 上的函数依赖集为F,U 的一个子集为X,计算X 关于F 的属性闭包X+ 。 具体方法如下: ①置初始X(0)= Ф,X(1)=X; ②如果X(0)≠ X(1),置X(0)=X(1),否则转④; ③对F 中的每一个函数依赖Y → Z,若Y X(1),置X(1)=X(1)∪ Z,转②; ④结束,即X(1)为X+。 下面我们借助一个例子来说明属性闭包的计算过程。 例1: 设有关系模式R(U,F),其中U={A,B,C,D,E},F={ AB → C,B → D,C → E,CE → B,AC → B},计算(AB)+。 解: 由上述算法得: 第一次: ① X(0)= Ф,X(1)=AB; ②由于X(0)≠ AB,置X(0)=AB; ③搜索F中的每一个函数依赖,得AB →C与B→D为AB,B X(1),置X(1)=AB ∪ C ∪ D=ABCD; 第二次: ② X(0)≠ ABCD,则X(0)=ABCD; ③找到C → E 与AC → B,置X(1)=ABCD ∪ E ∪ B=ABCDE; 第三次: ② X(0)≠ ABCDE,则X(0)=ABCDE; ③找到CE → B,置X(1)=ABCDE ∪ B=ABCDE; 第四次: ② X(0)=X(1),转④; ④结束,即X(1)=(AB)+=ABCDE。 2 候选键的求解理论与算法 (1)候选键的定义[2]: 设有关系模式R(U),U 为其所有属性集,F 为其函数依赖集,X 为U 的一个子集,如果X 能完全函数确定U,而对于X的任何一个真子集X1都不能完全函数确定U,则称X为R的一个候选键。 (2)候选键的求解理论算法[1]对于给定的关系R(A1,A2,?,An)和函数依赖集F,可将其属性分为四类: L 类: 仅出现在F 的函数依赖左部的属性; R 类: 仅出现在F 的函数依赖右部的属性; LR 类: 在F 的函数依赖左右两边均出现的属性; N 类: 在F 的函数依赖左右两边均未出现的属性。 其中: L 类和N 类属性一定包含在R 的任何一个候选键 中; R类属性一定不包含在R 的任何一个候选键中; LR类属 性可能包含在R 的某个候选键中。 具体操作请参考下面的实例。 例2: 设有关系模式R(A,B,C,D,E,P),函数依赖 集F={ AB → E,AC → P,AD → B,B → C,C → D},请找出R 的所有候选键。 解: 首先将R中的属性分类: 考察F发现,A属性是L类 属性,故A 必在R 的任何一个候选键中; 因为E、P 两属性是 R 类属性,故E、P 一定不在R 的任何候选键中; N 类属性没 有。 其次考虑L类属性与N类属性: 因为A+=A≠ABCDEP,故 A 不能单独作候选键,LR 类属性B、C、D 三个属性必有部分 或全部在候选键中。下面将B、C、D 依次与A 结合,分别求 闭包。 因为(AB)+=ABCDEP,所以AB 为R 的一个候选键; 因为(AC)+=ABCDEP,所以AC 为R 的一个候选键; 因为(AD)+=ABCDEP,所以AD 为R 的一个候选键。 综上所述,关系模式R 共有三个候选键:AB、AC 和AD。 通过本例,我们发现如果L 类属性和N 类属性组合不能 作候选键,则将LR类属性逐个与L 类和N类属性结合做进一 步的考察。有时要将LR类全部属性与L类、N类属性组合,最 坏情况下R 中所有属性组合才能作为候选键。 通过上面对属性闭包的定义以及例2的解释,我们清楚 了闭包的含义,同时知道如何利用属性闭包来求关系模式的 候选键。下面谈谈属性闭包在关系模式范式确定中的应用。 3 利用

文档评论(0)

liwenhua00 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档