什么是属性集X关于F的闭包?
在关系模式R<U, F>中为F所逻辑蕴涵的函数依赖的全体叫做F的闭包(closure),记作。
设F为属性集U上的一组函数依赖,XU,
={A|X→A能由F根据Armstrong公里导出},
称为属性集X关于函数依赖集F的闭包。
另外,
设F为属性集U上的一组函数依赖,X,YU,X→Y能由F根据Armstrong公理导出的充分必要条件是Y
。
因此,判断X→Y是否能够由F根据Armstrong公理推导出的问题,就转化为求的问题,判断Y是否为
的子集即可。
可以用算法来求得!
如何求属性集X关于F的闭包
?
算法的核心思想是迭代。我们看这面这个例子。
【例题】已知关系模式R<U, F>,U是属性全集,F是U上的函数依赖集,其中U={A, B, C, D, E},F={AB→C, B→D, C→E, EC→B, AC→B},求。
解题思路:
(1)设=AB,计算
:从左逐一扫描函数依赖集函数依赖集F,找到左边属性为AB,或者A,或者B的函数依赖。
AB→C
B→D
=AB
CD=ABCD
(2)因为,继续计算
:寻找F中左边属性为ABCD子集的函数依赖,当然这里不再包括(1)中的。
C→E
AC→B
=
BE=ABCDE
(3)此时,但
已经是全部属性的集合,终止计算(如果
=
,则
为所求的闭包,同样终止计算)。
最终得到的计算结果为,=ABCDE。
参考自:《数据库系统概论》,王珊,萨师煊编著