首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定BCNF

如何确定BCNF
EN

Stack Overflow用户
提问于 2016-10-08 14:01:21
回答 1查看 11.9K关注 0票数 0

我已经在SO上阅读了很多其他涉及BCNF的线程,但我仍然有点困惑,不知道如何编写函数来确定关系是否在BCNF中,给定关系和它的函数依赖列表。

显然,如果FD的所有输入和输出的并集不等于关系,那么它就不在BCNF中,但这也是我需要检查的所有内容。

代码语言:javascript
复制
So, say I'm given an input: 
R(A,B,C,D,E,F,G)
A->B
C,D->F
G->E

那么我需要检查什么才能确定它是否是BCNF?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-08 15:38:57

关系是BCNF中的当且仅当每个函数依赖X → Y都有一个作为超键的行列式(X),也就是说,它决定了关系的所有其他属性。

要观察这一点,您可以计算行列式相对于函数依赖集的“闭包”:如果它包含所有属性,则它是超键。

例如,在您的示例中,A的闭包是A本身加上B:

代码语言:javascript
复制
A+ = AB

这意味着A不是超键,关系也不在BCNF中。事实上,你们关系中唯一的关键是A C D G

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

https://stackoverflow.com/questions/39929215

复制
相关文章

相似问题

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