1、函数依赖集的闭包
定义:在关系模式R(U,F)中,U是R的属性全集,F是R上的一组函数依赖。设X,Y是U的子集,对于关系模式R的任一关系r,如果r满足F,则r满足XY,那么称F逻辑蕴涵XY,或称函数依赖XY可由F导出:所有被F逻辑蕴涵的函数依赖的全集称为F的闭包。
2属性集闭包
一般情况下,由函数依赖集F计算其闭包厂是相当麻烦的,因为即使P很小,F也
能很大。计算F”的目的是为了判断函数依赖是否为F所蕴涵,然而要导出F的全部函数
赖是很费时的事情,而且由于F+中包含大量的冗余信息,因此计算F~”的全部函数张赖是
必要的。那么是否有更简单的方法来判断X→Y是否为F所蕴涵呢?
在开始确定一个关系的函数依赖集合F时,首先是确定那些语义上非常明显的画数常
赖,然后,应用Armstrong公理从这些函数依赖推导出附加的正确的函数依赖确定这些
加的函数依赖的一种系统化方法是先确定每一组会在函数依赖左边出现的属性组I,再确定
所有依赖于X的属性组X*,X*称为X在P下的闭包。
对关系模式R(U,F),求属性集X相对于函数依赖集F的闭包X*的算法如下:
步骤1:初始,X*=X。
步骤2:如果F中有某个函数依赖Y→Z满足YCX*。则X*=X*UZ。
步骤3:重复步骤2,直到X*不再增大为止。
3、候选键的求解方法
对于给定的关系模式R(A1,A2.....,An)和函数依赖集F,现将R的属性分为如下
L类:仅出现在函数依赖左部的属性。
R类:仅出现在函数依赖右部的属性。
N类:在函数依赖的左部和右部都不出现的属性。
LR类:在函数依赖的左部和右部都出现的属性。
对R中的属性X,可有以下结论:
(1)若X是L类属性,则X一定包含在关系模式R的任何一个候选键中;若X包含了
R的全部属性,则X为关系模式R的唯一候选键。
(2)若X是R类属性,则X不包含在关系模式R的任何一个候选键中。
(3)若X是N类属性,则X一定包含在关系模式R的任何一个候选键中。
(4)若X是LR类属性,则X可能包含在关系模式R的某个候选键中。
方法总结:
1、先找L类
2、(L+)=U 则是唯一候选键或者(L,N)+=U是唯一候选键
3、不等于ULR类
4、(L,N,LR)+=U
5、得到唯一候选键
————————————————
版权声明:本文为CSDN博主「我算这块小饼干346」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_62910182/article/details/125239643