首页
学习
活动
专区
圈层
工具
发布

BCNF转换
EN

Stack Overflow用户
提问于 2012-08-02 16:22:18
回答 3查看 8.6K关注 0票数 1

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

考虑以下关系:

代码语言:javascript
复制
R (A, B, C, D, E, F, G)

以下函数依赖关系成立:

代码语言:javascript
复制
A -> E, F
A -> G
A, B -> D
B -> C
E, F -> G
A -> D

我如何让它成为BCNF

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-02 19:51:55

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

  • 假设你至少在1NF中,
  • 移除部分键依赖项以获得2NF (至少),
  • 移除传递依赖项以获得3NF (至少),以及finally
  • removing剩余的函数依赖项,其中左侧不是获得BCNF (至少)的候选键。

部分密钥依赖关系的一个示例是对

代码语言:javascript
复制
AB->D
A->D

因为A单独确定D,所以函数依赖AB->D具有部分键依赖。

传递依赖的一个示例是对

代码语言:javascript
复制
A->EF
EF->G

不能保证你可以将给定的关系规范化,比方说,BCNF,没有更高的。(这似乎在大学生中造成了很多困惑。)删除部分键依赖项以获取2NF可能会将所有关系保留在5NF中。

票数 2
EN

Stack Overflow用户

发布于 2013-12-04 10:03:20

我们可以使用阿姆斯特朗公理来得到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分解。

票数 1
EN

Stack Overflow用户

发布于 2020-08-10 03:13:29

您可以尝试这样做:表1:具有复合主键(A,B)和外键( B)的A,B,D,E,F参见表2(B)表2: B,带有B的C是主键表3:具有复合主键( A,E,F)的A,E,F,G

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11773606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档