1.(S,Z)可以为候选码,但因为存在部分依赖Z-->C,R不是3NF。
2.判断函数依赖一定要有Y--/-->X的条件。

解决方案 »

  1.   

    to blackhawk_yps(原来是这样)
    1.如果,(s,z)也为候选码,则主属性为s,c,z。"当R没有非主属性时,R必属于3NF"所以我觉得,R应为3NF
    2.若必须要有Y--/-->X的条件,那书中的这句:“例如,已知关系模式R(A,B,C),其函数依赖集F={A--->B,  B---->C},根据传递函数依赖的定义,A---->C也必然是R的函数依赖。”该怎么解释,它并没有判断B---/--->A.
      

  2.   

    1。没仔细看,因为没有(s,z)-->c的条件,(s,z)不是候选码。R为3NF。
    2。是一个用词问题。传递函数依赖是函数依赖,但函数依赖不一定是传递函数依赖啊,书上写的也没错。
      

  3.   

    to  blackhawk_yps(原来是这样)
    1.书中给的条件R:(S,C)----->Z,        Z---->C
       sc是候选码,确定无疑。既然有Z---->C,那肯定有sz--->c,所以我觉得,sz也应为候选码。2.多谢!
      

  4.   

    候选码的定义:设k为r<u,f>的属性或属性组合。若u完全依赖于k,则k为r的候选码。
    c部分依赖于(s,z),故(s,z)不是候选码。
      

  5.   

    我们老师给出的求候选关键字的算法是这样的:
    输入:R及F
    输出:R的所有key
    方法:
        1.将R的所有属性分为l,r,n,lr四类且令x代表ln类,y代表lr类。
    (l表示仅出现在F的函数依赖左端的属性,r表示仅出现在F的函数依赖右端的属性,n表示不出现在函数依赖集中的属性,lr表示既出现在函数依赖左端有出现在右端的属性)
        2.求x的闭包,若x的闭包包含r的全部属性则x为r的唯一候选关键字。转5,否则转3。
        3.在y中取一属性a求(xa)的闭包,若他饱含r的全部属性,则转4,否则调换一个属性反复进行着一过程,直到试完y中的属性。
        4.如果已找到所有的候选关键字则转5,否则在y中依次取2,3......个属性,直到试完y中的所有组合。
        5.结束。输出结果。如果按以上算法,则对R(S,C,Z) F={SC--->Z Z---->C}候选码为SC和SZ,主属性为SCZ。