【问题标题】:How to determine BCNF [closed]如何确定 BCNF [关闭]
【发布时间】:2017-02-17 03:50:04
【问题描述】:

我已经在 SO 上阅读了一堆涉及 BCNF 的其他线程,但我仍然对如何编写一个函数来确定关系是否在 BCNF 中给定关系及其功能列表有点困惑依赖关系。

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

So, say I'm given an input: 
R(A,B,C,D,E,F,G)
A->B
C,D->F
G->E

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

【问题讨论】:

    标签: database bcnf


    【解决方案1】:

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

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

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

    A+ = AB
    

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

    【讨论】:

    • 啊,这让事情变得更有意义了。谢谢!
    • 这并没有回答所提出的问题,最后一个问题是重复的,并且正文说了一些无意义的事情并且实际上并没有解决 BCNF 的定义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多