数据库理论7

8.29

考虑如下关系模型$r(A,B,C,D,E,F)$上的函数依赖集F:

$$A→BCD$$

$$BC→DE$$

$$B→D$$

$$D→A$$

  1. 计算$B^+$

    $B→BD$(依赖三)

    $BD→ABD$(依赖四)

    $ABD→ABCD$(依赖一)

    $ABCD→ABCDE$(依赖二)

    故$B^+=ABCDE$

  2. (使用Armstrong公理)证明$AF$是超码。

    $A→BCD$(依赖一)

    $A→ABCD$(A的增强)

    $BC→DE$(依赖二)

    $ABCD→ABCDE$($ABCD$的增强)

    $A→ABCDE$(传递性)

    $AF→ABCDEF(F$的增强)

    故$AF$是超码

  3. 计算上述函数依赖集$F$的正则覆盖;给出你的推到的步骤并解释。

    根据依赖三我们知道D在依赖一和依赖二中都是冗余值,所以当我们将这两个移除之后,我们就得到了新的规则:
    $A→BC$

    $BC→E$

    $B→D$

    $D→A$

    而$B^+$是$ABCDE$,而且$FDB→E$可以从这个集合里面被定义,因此,$C$在依赖三中也是一个冗余值,再将其移除,并且合并到我们的$FD$之中,我们得到如下正则覆盖:

    $A→BC$

    $B→DE$

    $D→A$

    现在已经没有任何的冗余值了。

  4. 基于正则覆盖,给出$r$的一个$3NF$分解。

    在正则覆盖中没有$FD,$使得属性集任何其他$FD$的子集。

    因此,每个$FD$都会产生自己的关系

    给出如下依赖关系:

    $r_1(A,B,C)$

    $r_2(B,D,E)$

    $r_3(D,A)$

    现在,属性$F$不依赖于任何属性。因此,它必须是每个超级钥匙的一部分。此外,上述模式中的任何关系都没有$F$,因此,它们都没有超级密钥。因此,我们需要使用超级键添加新关系。

    $r_4(A,F)$

  5. 利用原始的函数依赖集,给出$r$的一个$BCNF$分解。

    由已知有

    $r(A,B,C,D,E,F)$

    我们发现根据第一个$FD$,这个关系并不属于$BCNF,$根据这个可得

    $r_1(A,B,C,D)r_2(A,E,F)$

    发现$A→E$是一个在$F^2$中的$FD$,而且使得$r_2$不符合$BCNF$,所以我们再次将$r_2$分解得

    $r_1(A,B,C,D)r_2(A,F)r_3(A,E)$

  6. 你能否利用正则覆盖得到与上面的$r$相同的$BCNF$分解?

    如果我们直接在前面的最小函数依赖集中使用函数依赖,我们就无法得到上面的分解。但是,我们可以从最小函数依赖集推断出原始的依赖关系,如果我们将它们用于BCNF分解,就可以得到相同的分解。

8.33

给定一个关系模式$r(A,B,C,D),A→→BC$是否裸绩蕴含$A→→B$和$A→→C$?如果是请证明之,否则给出一个反例。

构造如下表:

A B C D
a1 b1 c1 d1
a1 b2 c2 d2
a1 b1 c1 d2
a1 b2 c2 d1

如果$A→→B,$那么就存在这么一个$t_1和t_3$,使得$t_1[B]=t_3[B]。$

$t_1$和$t_3$必须满足如下关系式:

  • $t_1=r_1 且 t_3=r_3 或者 t_1=r_3 且 t_3=r_1:$

    $在t_2=r_2或者t_2=r_4中,t_3[C]\neq t_2[C]$

  • $t_1=r_2 且 t_3=r_4 或者 t_1=r_4 且 t_3=r_2$

    $在t_2=r_1或者t_2=r_3中,t_3[C]\neq t_2[C]$

由此,$t_3[C]=t_2[C]$就无法被满足,所以这个推测是错误的。