如果我们找到两个传递关系,我们将在规范化中做什么
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 → B
和 C → D
)都违反了行列式应该是超键的规则,也不在第三范式(因为,除了前面的事实,B
和 D
不是质数属性)。
通过将关系分解为 三个 关系,可以将关系转换为第三范式(以及 Boyce-Codd 范式):
R1(A B)
,以 A
作为键和唯一依赖项:A → B
R2(C D)
,以 C
作为键和唯一依赖项:C → D
R3(A C)
,以 A C
为键且没有非平凡的依赖关系
已编辑
既然你改了问题,那答案肯定是完全不同的。您应该知道,要解决归一化问题,应该有两件事(并且只有那两件事):
关系模式的属性列表
一组函数依赖
不需要其他信息,而只提供部分信息只会造成混淆,不会产生正确答案。
所以,如果我理解了你的问题,你需要规范化一个关系模式
R(A B C D E F)
存在以下函数依赖关系:
A → B
C → D
F → A B C D E
在这个特例中,
关系的只有(候选)键是F
;
这个关系不在 BCNF 中,因为 A → B
和 C → D
都违反了行列式应该是超级键的规则,也不在 3NF 中(因为,除了之前的事实,B
和 D
不是质数属性);
关系可以通过分解为三个关系在3NF(以及BCNF)中转换:
R1(A B)
,以 A
作为键和唯一依赖项:A → B
R2(C D)
,以 C
作为键和唯一依赖项:C → D
R3(A C E F)
,以 F
作为键和依赖项:F → A
、F → C
、F → E
.
假设我们有六列 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 → B
和C → D
)都违反了行列式应该是超键的规则,也不在第三范式(因为,除了前面的事实,B
和D
不是质数属性)。通过将关系分解为 三个 关系,可以将关系转换为第三范式(以及 Boyce-Codd 范式):
R1(A B)
,以A
作为键和唯一依赖项:A → B
R2(C D)
,以C
作为键和唯一依赖项:C → D
R3(A C)
,以A C
为键且没有非平凡的依赖关系
已编辑
既然你改了问题,那答案肯定是完全不同的。您应该知道,要解决归一化问题,应该有两件事(并且只有那两件事):
关系模式的属性列表
一组函数依赖
不需要其他信息,而只提供部分信息只会造成混淆,不会产生正确答案。
所以,如果我理解了你的问题,你需要规范化一个关系模式
R(A B C D E F)
存在以下函数依赖关系:
A → B
C → D
F → A B C D E
在这个特例中,
关系的只有(候选)键是
F
;这个关系不在 BCNF 中,因为
A → B
和C → D
都违反了行列式应该是超级键的规则,也不在 3NF 中(因为,除了之前的事实,B
和D
不是质数属性);关系可以通过分解为三个关系在3NF(以及BCNF)中转换:
R1(A B)
,以A
作为键和唯一依赖项:A → B
R2(C D)
,以C
作为键和唯一依赖项:C → D
R3(A C E F)
,以F
作为键和依赖项:F → A
、F → C
、F → E
.