您现在的位置是:首页 > 关系模式的候选码怎么求

关系模式的候选码怎么求,

​​​​​​​9527人已围观日期:2024-06-15

内容导航:
  • 有关系模式R(S,T,C,D,G).F={(S,C)-T,C-D,(S,C)-G,T-C,求关系模式...
  • 数据库求关系模式中的候选键问题
  • 候选关键字的一般的求候选码的算法
  • 有关系模式R(S,T,C,D,G).F={(S,C)-T,C-D,(S,C)-G,T-C,求关系模式...

    ①(S,C)-T,(S,C)-G可以推出(S,C)-(T,G)
    T-C,与上面的结果共同推出(S,C)-(T,G,C)
    C-D,与上面的结果共同推出(S,C)-(T,G,C,D)
    所以某个
    候选码
    是(S,C)

    另一个角度
    :T-C,C-D,(S,C)-G,所以(S,T)也是候选码之一
    综上,候选码是(S,C)和(S,T)

    数据库求关系模式中的候选键问题

    选择B。
    详解:
    超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键
    候选键(candidate key):不含有多余属性的超键称为候选键
    根据定义来说讲也就是说我们没有C列的值也可以唯一的标识一条数据实体。
    具体的解说:
    选择A的话(第二列数据实例A1B1与第四列数据实例相同)不符合定义所以错误
    选择C的话(第一列数据实例A1C1D1与第三列数据实例相同)不符合定义所以错误
    选择D的话(第二列数据实例A2B1C1与第四列数据实例相同)不符合定义所以错误
    希望能帮到你!

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

    已知关系模式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类且其他算法不合适时,实际算时要更换删除顺序后反复计算)

    相关文章