如果我们找到两个传递关系,我们将在规范化中做什么

If we find two transitive relations what would we do in normalization

假设我们有六列 A B C D E F,在移除传递依赖时我们遇到了依赖 F-> E,D,C,B,A(假设 F 是主键)

A->B (A is a transitive key towards B)

C->D (C is a transitive key towards D)

在这种情况下,我们会怎么做,我们会制作一个包含四列的新 table 还是制作两个每个包含两列的 table?

如果您的关系模式 R(A B C D) 具有依赖关系:

A → B
C → D

那么以下事实成立:

  • 关系的关键是:

    A C

  • 关系既不在 Boyce-Codd 范式中,因为两个依赖项(A → BC → D)都违反了行列式应该是超键的规则,也不在第三范式(因为,除了前面的事实,BD 不是质数属性)。

  • 通过将关系分解为 三个 关系,可以将关系转换为第三范式(以及 Boyce-Codd 范式):

    1. R1(A B),以 A 作为键和唯一依赖项:A → B
    2. R2(C D),以 C 作为键和唯一依赖项:C → D
    3. R3(A C),以 A C 为键且没有非平凡的依赖关系

已编辑

既然你改了问题,那答案肯定是完全不同的。您应该知道,要解决归一化问题,应该有两件事(并且只有那两件事):

  1. 关系模式的属性列表

  2. 一组函数依赖

不需要其他信息,而只提供部分信息只会造成混淆,不会产生正确答案。

所以,如果我理解了你的问题,你需要规范化一个关系模式

R(A B C D E F)

存在以下函数依赖关系:

A → B
C → D
F → A B C D E

这个特例中,

  • 关系的只有(候选)键是F;

  • 这个关系不在 BCNF 中,因为 A → BC → D 都违反了行列式应该是超级键的规则,也不在 3NF 中(因为,除了之前的事实,BD 不是质数属性);

  • 关系可以通过分解为三个关系在3NF(以及BCNF)中转换:

    1. R1(A B),以 A 作为键和唯一依赖项:A → B
    2. R2(C D),以 C 作为键和唯一依赖项:C → D
    3. R3(A C E F),以 F 作为键和依赖项:F → AF → CF → E.