欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQLServer属性集的闭包,最小函数依赖集等题目讲解

程序员文章站 2022-05-03 17:54:31
多说无益,直接看题。 已知关系模式r(u,f),其中u={ a,b,c,d,e},f是这样的关系集合{ab—>c,b—>d,c—>e,ec&md...

多说无益,直接看题。

已知关系模式r(u,f),其中u={ a,b,c,d,e},f是这样的关系集合{ab—>c,b—>d,c—>e,ec—>b,ac—>b},求ab的闭包。

第一步,设x0=ab,在f中找出这样的关系,左边是ab的子集,即左边为a,b,ab,从题目可得ab—>c,b—>d

第二步,将x0的子集推出的属性,这里是c,d与x0并起来得到x1=abcd,因为x1不等于x0(直到xi=xj)继续运算

重复第一步,但此时注意,你要找的是x1的子集,而且是从来没用过的子集,像a,b,ab就不需要重新计算了,此时找的应该是c—>e,ac—>b

重复第二步,得到x2=abcde,此时虽然x2!=x1,但是x2却包含所有属性集合了,也可以停止继续运算,即ab的闭包为abcde

总结:也就是说,我们找一个属性集的闭包时,就是在找该属性所有能直接或间接推导出来的属性,然后不断合并。

最小函数依赖集,首先要满足下列条件:

一个函数依赖中右部分只能含有一个属性

不含多与依赖,即去掉某一函数依赖后形成的集合b和原来的集合a是等价的,在说白点,b可以退出去掉的函数依赖

不含部分依赖,像f{ab—>c,a—>c}就不是最小函数依赖集

已知关系模式r(u,f),其中u={a,b,c},f是这样的关系集合{a—>bc,b—>c,ab—>c,a—>b}

求该模式的最小函数依赖集。

答案:f={b—>c,a—>b},a—>bc不满足一个函数依赖中右部分只能含有一个属性,b—>c,ab—>c存在部分依赖,

也可看做多余依赖,因为b—>c,ab—>c是绝对成立的,有跟没有无差别