gpt4 book ai didi

database-normalization - 每个二元关系BCNF如何?

转载 作者:行者123 更新时间:2023-12-02 00:57:06 26 4
gpt4 key购买 nike

因此,作为我作业的一部分,我必须证明具有两个属性的任何关系都在 BCNF 中。

根据我的理解,如果对于一个关系,我们有第三范式并且一个非关键属性在功能上确定关键属性,则它违反了 BCNF。

假设我的关系由两个属性 A1、A2 组成

场景1(只有一个功能依赖)

A1 -> A2 (so A1 is the key, and A2 does not FD A1 : so no violation)

同样适用于

A2 -> A1

但是如果

A1->A2 and A2->A1

这里的key可以是A1,A2。而另一个非键属性在功能上决定了键。

最佳答案

在每个函数依赖X -> Y 中,XY 是属性集。当 XY 是空集1 时,这需要特别注意。因此,在只有两个属性 A1A2 的示例中,我们拥有所有可能的重要依赖项:

1. {} -> {A1}
2. {} -> {A2}
3. {} -> {A1 A2}
4. {A1} -> {A2}
5. {A2} -> {A1}

所有其他可能的依赖关系都是微不足道的依赖关系,即右集是左集的子集(例如 {A1} -> {}{} -> {} {A1} -> {A1}{A1 A2} -> {A1} 等)。我们知道这些依赖关系始终成立,因此在范式的定义中不考虑它们。

<强>1。当从依赖项中排除空集时,定理成立

考虑依赖关系 4 和 5。我们有四种可能的情况:

1. Only 4 holds, so we have: {A1} -> {A2}

这意味着 {A1} 是一个候选键(因为从 {A1} -> {A2} 我们可以推导出 {A1}-> {A1 A2}),BCNF 条件满足,因为每个依赖项都有一个超键作为决定因素;

2. Only 5 holds, so we have: {A2} -> {A1}

等价于上例,只是A1A2的角色互换;

3. Neither 4 nor 5 hold (no functional dependencies),

因此 BCNF 正式满足(因为没有依赖项违反 BCNF);最后:

4. both hold, so we have {A1} -> {A2} and {A2} -> {A1}

在这种情况下,关系也在 BCNF 中,因为 {A1}{A2} 都是候选键,因为它们确定所有属性(简单地放在一起上面的 1 和 2)。

<强>2。当我们在函数依赖中允许空集时,定理不成立

考虑一个关系R(A1, A2),其依赖项覆盖F

F = { {}-> {A1} }

{} -> {A1} 的含义,通过记忆函数依赖的定义,就是 A1 列有一个常量值。所以我们与两列有关系,其中一列始终具有相同的值。在这种情况下,唯一的候选键是 {A2},因为 {A2}+ = {A1 A2}{A1 A2} 是 super 键,并且该关系不在 BCNF 中,因为非平凡的函数依赖性 ({} -> {A1}) 具有一个不是 super 键的行列式。


1 请注意,在有关该主题的科学文献(以及有关数据库的书籍)中,有时会明确排除函数依赖中出现空集的可能性(例如,参见:Tsou, Don -Min 和 Patrick C. Fischer。“将关系方案分解为 Boyce-Codd 范式。”ACM SIGACT 新闻 14,第 3 期(1982 年 7 月 1 日):23–29。https://doi.org/10.1145/990511.990513 ),而有时它允许,或不讨论。

关于database-normalization - 每个二元关系BCNF如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33455459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com