闭包算法:
闭包有四类:
L类:只出现在左边的属性
R类:只出现在右边的属性
LR类:此属性两边都有此属性
N类:此属性不在函数依赖里
则可能为候选码的为,L,LR,N类
闭包的查找:
对于N类直接加入候选码中,
对于L类,LR类,找到他们的闭包,然后如果L类的闭包是自己,则与LR类进行组合,看哪个组合可以推出全部属性,如果L类闭包不是自己,则先组合L类,再组合LR类,
设有关系模式R<U,F>,U={ A,B,C,D,E,G },F={ E->D,C->B,CE->G,B->A},求该关系模式的码。
先找L类:C,E
再找R类:A,G,D
再找LR类:B
没有N类。
{C}的闭包:{B,A,C}
{E}的闭包:{D,E}
{C,E}的闭包为:{A,B,C,D,E,G}
{B}的闭包为:{B,A}
因为{C,E}的闭包里面的属性含有所有
所以C,E为唯一候选码