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

多说无益,直接看题。

已知关系模式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是绝对成立的,有跟没有无差别

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐