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

BCNF分解
EN

Stack Overflow用户
提问于 2010-12-06 23:59:15
回答 1查看 10.8K关注 0票数 9

我正在尝试找出执行BCNF分解的正确步骤。我找到了这个例子,但我不明白如何执行正确的步骤。

模式= (A,B,C,D,E,F,G,H) FD's + {A -> CGH,AD->C,DE->F,G->G}

谁能告诉我正确的步骤?

EN

回答 1

Stack Overflow用户

发布于 2010-12-07 01:51:57

使用FD确定最小覆盖范围:

代码语言:javascript
复制
{A -> C, A -> G, A -> H, 
 B -> nothing, 
 C -> nothing,
 D -> nothing,
 E -> nothing,
 F -> nothing
 G -> nothing
 H -> nothing
 DE -> F}

AD -> C退出是因为A单独决定了C,这意味着D在FD中是多余的(参见阿姆斯特朗的公理-增强)。

3NF和BCNF定义涉及复合键的依赖关系。这里唯一的复合键是DEDE都不会参与任何其他非空FD,因此消除传递依赖并确保依赖属性依赖于“键,整个键,除了键之外什么都不是”在这里不是问题。

拆分关系,使FD左侧为键,右侧为该键的非键相关属性:

代码语言:javascript
复制
[Key(A), C, G, H]
[Key(D, E), F]

现在把这些属性从封面上去掉,剩下的就是独立的关系。

代码语言:javascript
复制
[Key(B)]

这应该在3NF/BCNF中

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

https://stackoverflow.com/questions/4368271

复制
相关文章

相似问题

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