候选码的求解基本方法集合
一、求解候选码基本算法的具体步骤.
第1 步,求关系模式R 的最小函数依赖集F
第2 步, 按照上面的定义, 分别计算出UL ,UR , UB (UL 表示仅在函数依赖集中各依赖关系式左边出现的属性的集合; UR 表示仅在函数依赖集中各依赖关系式右边出现的属性的集合;另记UB = U - UL - UR )
第3 步,若UL ≠Φ,计算UL的闭包,若UL+ = U ,则UL 为R 的唯一的候选码,算法结束. 若UL+ ≠U ,转第4 步. 若UL = Φ,转第5 步.
第4 步,将UL 依次与UB 中的属性组合,利用上述的定义4 判断该组合属性是否是候选码; 找出所有的候选码后,算法结束.
第5 步,对UB 中的属性及属性组合利用上述的定义4 依次进行判断;找出所有的候选码后,算法结束.
简而言之:取最小依赖集,计算UL闭包,如果UL闭包包含全属性,则UL为唯一侯选码,如果不包含,则依次与UB属性组合后再求闭包是否包含全属性。
(UL为空时,直接取UB依次组合求闭包)
二、多属性依赖集候选码求解法
输入:关系模式R及其函数依赖集F。
输出:R的所有候选码。
具体步骤:
1)把R的所有属性分为L、R、N和LR四类,并令X代表L、N类,Y代表LR类。
2)求X+,如果X+包含了R的全部属性,则X为R的唯一候选码,转(5);否则,转(3)。
3)在Y中取一个属性A,求(XA)+,如果它包含了R的全部属性,则转(4);否则,调换一个属性反复进行这一过程,直到试完所有Y中的属性。
4)如果已经找到所有的候选码,则转(5);否则在Y中依次去两个、三个……求它们的属性闭包,直到其闭包包含R的所有属性。
5)停止