永发信息网

候选关键字的一般的求候选码的算法

答案:1  悬赏:30  手机版
解决时间 2021-01-09 14:41
  • 提问者网友:浮克旳回音
  • 2021-01-09 04:57
候选关键字的一般的求候选码的算法
最佳答案
  • 五星知识达人网友:深街酒徒
  • 2021-01-09 05:11
已知关系模式R(U)属性集是A1A2...An及R的函数依赖集F,求R(U)的一个候选码。
算法:
KEY(X,F)
K=A1A2…An;
For i=1 to n
{求K-Ai相对于F的属性闭包(K-Ai)F+;
if (K-Ai)F + =U then K=K-Ai
else then K=K; }
return K;
利用此算法求R(U)的候选码时,只能求出一个,并不能保证求出所有的码。但可以用同样的方法调整属性的删除次序而把所有的候选码都求解出来。
如此题设关系R(ABCD)及R上成立的函数依赖集为F,F={AB→C,C→D,D→A},求R的所有码。
按照上面的算法具体步骤如下:
设K={ABCD},当K=BCD时,由于KF+=ABCD,所以根据算法可删除A;
K=CD,由于KF+=ACD又因KF+不等于ABCD,所以根据算法,B不可删除;
K=BD,由于KF+=ABCD且因KF+=AB-CD,所以根据算法C可删除;
K=B,由于KF+=B又因KF+不等于ABCD,
所以根据算法,D不可删除;最后可求出KEY=BD,用同样的方法调整属性的删除次序,还可以得到另外的一个候选码AB,所以最后可以得到R的码为BD和AB。
一般求解算法适用于在判断了所有的属性均是属于在函数依赖的左部和右部都出现且在后面的几种算法都不适合的情况下采用的。
简而言之:算法概述——有N个属性,从1到N循环。K初始为全部属性,每次循环时减去第N个属性,如果KF+包含全部属性,则K的值重新附值为K减去第N个属性后的值;否则K仍为上次循环后的值。(算法适于所有属性皆为LR类且其他算法不合适时,实际算时要更换删除顺序后反复计算)

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯