LR候选码求解
候选键求解:
1.给定关系模式R(U,F),根据F为属性分四类L、R、LR和N
L:仅出现在函数依赖集F左部的属性。
R:仅出现在函数依赖集F右部的属性。(不是R的候选码成员)
LR:在函数依赖集F的左右部都出现的属性。
N:在函数依赖集F中未出现的属性。(必是R的候选码成员)
2.令X=L∪N,Y=LR。若X的闭包等于U,则X为R的候选码,否则下一步。
3.Y中选取1个属性A,求(XA)的闭包是否等于U,若为真,即为候选码,否则调换属性,反复进行这个过程,直到试完Y中的所有属性。
4.如果还未找出候选码,在Y中依次选取2~n个属性,求闭包等于U,即为R的候选码。
【题1】给定 R(U,F),U=ABCD,F={A→B,B→C},求 R(U,F)上的所有候选码。
解:
①分4类
L:A
R:C
LR:B
N:D
②组X,Y,求X闭包
X=L∪N={AD},Y=LR={B}
∵X+={AD}+={ADBC}
∴{AD}是R的候选码。
【题2】给定 R(U,F),U=ABCDE, F={AB→C,C→ED,D→A},求 R(U,F)上的所有候选码。
解:
①分4类
L:B
R:E
LR:ACD
N:
②组X,Y,求X闭包
X=L∪N={B}
Y=LR={ACD}
∵X+={B}+={B}≠U
∴{AD}不是R的候选码。
③选Y中一个属性与X求闭包
{BA}+={BACED}=U,即候选码
{BC}+={BCEDA}=U,即候选码
{BD}+={BDACE}=U,即候选码
综上所述:R的候选码有AB、BC、BD。