1

我正在尝试理解BCNF数据库,但我无法完全理解它。

考虑以下关系:

R (A, B, C, D, E, F, G)

以下函数依赖成立:

A -> E, F
A -> G
A, B -> D
B -> C
E, F -> G
A -> D

我将如何使它成为BCNF

4

3 回答 3

2

非正式地说,在家庭作业问题中,您可以通过以下方式进入 BCNF

  • 假设你至少处于 1NF,
  • 删除部分关键依赖项以达到 2NF(至少),
  • 移除传递依赖以达到 3NF(至少),最后
  • 删除剩余的功能依赖关系,其中左侧不是到达 BCNF 的候选键(至少)。

部分键依赖的一个例子是对

AB->D
A->D

由于 A 单独决定 D,因此函数依赖 AB->D 具有部分键依赖。

传递依赖的一个例子是对

A->EF
EF->G

不能保证您可以将给定的关系规范化为 BCNF而不是更高的. (这似乎在大学生中引起了很多关于 SO 的困惑。)删除部分密钥依赖关系以达到 2NF 可能会留下 5NF 中的所有关系。

于 2012-08-02T11:51:54.573 回答
1

)我们可以使用阿姆斯壮公理得到 F+

A -> D,E,F,G

B -> C (A,B -> D 被忽略,因为 A -> D)

E,F -> G

我们可以得到主键(A,B)。

根据 BCNF 的定义,我们必须将 A-> (E,F), B->C, A -> D 和 (E,F) -> G 从原始模式中分离出来。

(A,B) 主键(A,B)

(B,C) 主键(B)

(A,D) 主键(A)

(A,E,F) 主键(A)

(E,F,G) 主键(E,F)

这就是 BCNF 分解。

于 2013-12-04T02:03:19.700 回答
0

您可以试试这个: 表 1:A、B、D、E、F 与复合主键(A、B)和外键(B)参考表 2(B) 表 2:B、C 与 B 为主键表 3:A、E、F、G 和复合主键(A、E、F)

于 2020-08-09T19:13:28.853 回答