1、王珊的书上说:如果x->y, y->z, 且y不函数决定x,y不包含于x,则说z传递函数依赖于x.
我的问题是:如果有一个关系模式R(A, B, C, D)有如下函数依赖:
(A, B)->C, C->B,(还有其他的依赖,我没写) 那么按上述定义可以说B传递函数依赖于(A,B),但很显然B是(A,B)的子集,是一个平凡函数依赖,那还能说B是传递函数依赖于(A,B)吗?
我觉得不应该是传递函数依赖,我查别的资料,又有一说:在上述描述的前提下,还有条件z不包含于x或y, 只有这样才可以称为是传递函数依赖。难道是王珊的书上写错了?
2、另一个问题是,3NF到BCNF是消除了主属性对码的部分函数依赖和传递函数依赖,请麻烦给我举个主属性传递函数依赖码的例子,谢谢!

解决方案 »

  1.   

    还是以王珊书上的为准吧,毕竟(A, B)->C, C->B
    最后还可以用(A,B)->B,所以它仍然是一个传递依赖!
    我们讨论的所有依赖如果没有特别的声明都是平凡依赖!
    包括传递和部分依赖!
    举一个王珊书上的例子吧!
    存在关系模式STJ(S,T,J)
    S代表学生,T代表教师,J代表课程。
    有如下条件:每一教师只教一门课。每门课又若干教师,某一学生选定某门课,就对应一个固定教师。
    那么便有如下函数依赖!
    (S,J)->T
    (S,T)->J
    T->J
    在这里(S,J)(S,T)都是候选码,
    但是T->J,也就是说主属性之间存在函数依赖,
    那么现在这个关系是3NF,而不是BCNF!
      

  2.   

    第1个问题依然想得到大家的讨论!
    第2个问题:主属性部分函数依赖码,正如 guyanxifei 所举例子一样,但我想看一个主属性传递函数依赖码的例子呀!
      

  3.   

    关系模式CSZ(CITY,ST,ZIP),其属性组上的函数依赖集为
    F={(CITY,ST)→ZIP,ZIP→CITY}
    即城市,街道决定邮政编码,邮政编码决定城市.容易看出,(CITY,ST)和(ST,ZIP)是两个候选码.CITY,ST,ZIP都是主属性. 利用 Armstrong公理系统的推理规则,对于关系模式CSZ的已知条件,证明(ST,ZIP)→(CITY,ST,ZIP).证明:根据题意不难看出只要证明(ST,ZIP)是一个候选码即可,证明步骤如下:
    因为ZIP→CITY (F中已给出)
    所以(ST,ZIP)→(CITY,ST) 
    (利用增广率,即在函数依赖的两端加ST)
    (ST,ZIP)→(CITY,ST,ZIP) 
    (用增广率,加ZIP)
    这就是主属性之间的传递依赖!
      

  4.   

    1、王珊的书上说:如果x->y, y->z, 且y不函数决定x,y不包含于x,则说z传递函数依赖于x. 
    我的问题是:如果有一个关系模式R(A, B, C, D)有如下函数依赖: 
    (A, B)->C, C->B,(还有其他的依赖,我没写) 那么按上述定义可以说B传递函数依赖于(A,B),但很显然B是(A,B)的子集,是一个平凡函数依赖,那还能说B是传递函数依赖于(A,B)吗? 
    我觉得不应该是传递函数依赖,我查别的资料,又有一说:在上述描述的前提下,还有条件z不包含于x或y, 只有这样才可以称为是传递函数依赖。难道是王珊的书上写错了? z不可以为主属性,我也看了一本王珊的书,里面是这样说的.
      

  5.   

    guyanxifei你好!你举的第二个例子其实和第一个本质是一样的,只是语义不同而已。但我觉得你还是没有说清楚主属性传递函数依赖于码呀?
    我是说要按王珊书上对传递函数依赖的定义所描述的那样,举出一个主属性传递函数依赖于码的例子。比如:(A, B)->C, C->D, 按定义D是传递函数依赖(A,B)。假设(A,B)是一个码,D是一个主属性,这样不就是主属性传递函数依赖码了吗?我想问的这样的例子。谢谢!