觉得看完有帮助的可以顺手点个赞哦!
首先我们要知道闭包是什么:
设有关系模式R(U),U是属性集,F是函数依赖集,X⊆U。F+中所有X->A的A的集合称为X的闭包,记为X+。
ps:可以理解为X+表示所有X可以决定的属性
属性集闭包求法
下面介绍的是比较简单传统的闭包求法
求取属性集闭包的步骤:
- 设要求的闭包属性集是Y,把Y初始化为X.
- 检查函数依赖集F中的每个函数依赖A->B,如果属性集A中的所有属性都在Y中,而B中有属性不在Y中,则将其加入到Y中。
- 重复第二步,直到没有属性可以添加到Y中为止。最后得出的Y就是X+。
*例子:*设有关系模式R(M,N,X,Y,Z)其依赖集F={M->H,H->Z,Y->Z,N->Y,Z->M}。求M+,MH+
第一步:设要求的闭包属性集是Y,把Y初始化为X.
令X={M},我们先看M->H,由于函数依赖M->H左边的所有属性都在X中,而右边H不在X中,所以可以把H添加到X 中,此时X={M,H}
然后按照顺序我们再看H->Z,我们不难发现函数依赖H->Z左边的所有属性都在X中,右边的属性Z又不在X中,仍旧添加,这时X={M,H,Z}
下一个
Y->Z,可以发现Y属性不在X中,条件不满足
N->Y,可以发现N属性不在X中,条件不满足
Z->M,Z属性在X中条件满足,但右边M也在X中条件不满足。
属性判断完 ,那么属性M的闭包:M+=MHZ。
MH+的求法也一样
令X={M,H},先看M->H,不难看出M在X中,H也在,右不满足。
H->Z,H在X中,属性Z不在,所以可以把Z加入到X中,这时X={M,H,Z}
Y->Z,Y属性就不满足,pass
N->Y,N属性也不在X中,pass
Z->M,右边M属性在X中不满足添加条件
即MH+=MHZ