了解 BCNF 函数依赖
Understanding BCNF Functional Dependency
我正在学习 this BCNF 分解教程。给出的功能依赖性是:
A->BCD
BC->AD
D->B
现在,这些都与关系R(A,B,C,D)有关。 BCNF的条件包括:
The relation must be in 3NF and when X->Y, X must be a super key
给定的关系虽然没有可传递的 FD 但 D->B 是部分 FD(或者)是否三个 FD 代表 3 个独立的关系?
如果,它们代表 3 个独立的关系,为什么 D 不是键,如果它们都在同一个关系中,那么 D->B 是部分函数依赖。
我完全糊涂了。请帮我度过难关。
如果我们用 单例右侧 编写给定的 FD 集,我们有 -
A->B
A->C
A->D
BC->A
BC->D
D->B
我们可以立即看到 2 个传递依赖项。我们有 A->D 和 D->B,所以我们不需要 A->B,而且我们有 BC->A 和 A->D,所以我们不需要 BC->D。所以现在我们有 -
A->C
A->D
BC->A
D->B
或
A->CD
BC->A
D->B
这里的键是A、BC和CD。由于关系 R 的每个属性在每个键中至少出现一次,因此关系 R 中的所有属性都是主要属性。
请注意,如果一个关系具有所有主要属性,那么它已经在 3NF 中。
因此给定关系 R 在 3NF 中。我希望你明白为什么你在这里完全错了 - "The given relation though doesn't have a transitive FD but D->B is a partial FD "。我刚刚证明了关系是 3NF,这是比 2NF 更高的范式,因此反过来证明关系是 2NF,因此 没有部分依赖。
要在 BCNF 中,对于每个函数依赖项 X->Y,X 应该是一个键。我们看到最后一个函数依赖 D->B 违反了这一点,因为 D 不是键。因此,要转换为 BCNF,我们可以将关系 R 分解为 R1 和 R2 为 -
R1(A,C,D)
R2(B,D)
我正在学习 this BCNF 分解教程。给出的功能依赖性是:
A->BCD
BC->AD
D->B
现在,这些都与关系R(A,B,C,D)有关。 BCNF的条件包括:
The relation must be in 3NF and when X->Y, X must be a super key
给定的关系虽然没有可传递的 FD 但 D->B 是部分 FD(或者)是否三个 FD 代表 3 个独立的关系?
如果,它们代表 3 个独立的关系,为什么 D 不是键,如果它们都在同一个关系中,那么 D->B 是部分函数依赖。
我完全糊涂了。请帮我度过难关。
如果我们用 单例右侧 编写给定的 FD 集,我们有 -
A->B
A->C
A->D
BC->A
BC->D
D->B
我们可以立即看到 2 个传递依赖项。我们有 A->D 和 D->B,所以我们不需要 A->B,而且我们有 BC->A 和 A->D,所以我们不需要 BC->D。所以现在我们有 -
A->C
A->D
BC->A
D->B
或
A->CD
BC->A
D->B
这里的键是A、BC和CD。由于关系 R 的每个属性在每个键中至少出现一次,因此关系 R 中的所有属性都是主要属性。
请注意,如果一个关系具有所有主要属性,那么它已经在 3NF 中。
因此给定关系 R 在 3NF 中。我希望你明白为什么你在这里完全错了 - "The given relation though doesn't have a transitive FD but D->B is a partial FD "。我刚刚证明了关系是 3NF,这是比 2NF 更高的范式,因此反过来证明关系是 2NF,因此 没有部分依赖。
要在 BCNF 中,对于每个函数依赖项 X->Y,X 应该是一个键。我们看到最后一个函数依赖 D->B 违反了这一点,因为 D 不是键。因此,要转换为 BCNF,我们可以将关系 R 分解为 R1 和 R2 为 -
R1(A,C,D)
R2(B,D)