9.2.4闭包及候选键求解方法
1.函数依赖集的闭包
在关系模式R(U,F)中,U是R的属性全集,F是R上的一组函数依赖。设X,Y是U的子集,对于关系模式R的任一关系r,如果r满足F,则r满足X—>Y,那么称F逻辑蕴含X—>Y,或称函数依赖X—>Y可由F导出。
以下是例题
f4e8460ac5e147e5acaf650cddaba9bb.jpg
2.属性集闭包
设有关系模式R(U,F),U为R的属性集,F是R上的函数依赖集,X是U的一个子集(X⊆U)。用函数依赖推理规则可从F推出的函数依赖X—>A中所有A的集合,称为属性集X关于F的闭包,记为X+(这个+在X的右上方小写)
步骤1:初始,X+=X
步骤2:如果F中有某个函数依赖Y—>Z满足Y⊆X+。则X+=X+∪Z(这个∪是并集符号)
步骤3:重复步骤2,直到X+不再增大为止。
下面为例题:
0565ee78ddf042b3912b7ac4af905687.jpg
3.候选键的求解方法
对于给定的关系模式R(A1,A2,…,An)和函数依赖集F,现将R的属性分为如下四类:
(1)L类:仅出现在函数依赖左部的属性
(2)R类:仅出现在函数依赖右部的属性
(3)N类:在函数依赖的左部和右部均不出现的属性
(4)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的某个候选键中
以下是例题:
9157923056a64cab937494f0e7e70a70.jpg
简单来说步骤就是
1.是否有L,N类属性
2.(L,N)+是否=U
3.(L,N,LR)+是否=U
4.得出候选键