多说无益,直接看题。
已知关系模式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是绝对成立的,有跟没有无差别