2

因此,作为我的任务的一部分,我必须证明具有两个属性的任何关系都在 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

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

4

3 回答 3

4

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

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}

相当于前面的情况,只是交换了A1and的作用;A2

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}超键,并且该关系不在 BCNF 中,因为非平凡函数依赖 ( {} -> {A1}) 具有不是超键的行列式。


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 ,虽然有时是允许的,或者不讨论。

于 2015-10-31T20:17:46.123 回答
2
For any relation to be in BCNF, the following must holds.

X → Y is a trivial functional dependency (Y ⊆ X).

X is a superkey for schema R

维基百科链接在这里

For Example, there is a relation R = {A,B} with two attributes. 
The only possible (non-trivial) FD's are {A}->{B} and {B}->{A}. 
So, there are four possible cases:

1. No FD's holds in R. {C.K = AB}, Since it is an all key relation it's always in BCNF.

2. Only A->B holds. In this case {C.K = A} and relation satisfies BCNF.

3. Only B->A holds. In this case {C.K = B} and relation satisfies BCNF.

4. Both A->B and B->A holds. In this case there are two keys {CK = A and B} and
   relation satisfies BCNF.

Hence, every Binary Relation (A relation with two attributes) is always in BCNF!
于 2018-05-06T17:59:27.383 回答
-1

证明任何具有两个属性的关系都在 BCNF 中。 Boyce-Codd 范式规则:

如果 R 处于第三范式并且对于每个 FD,LHS 是超级键,则关系 R 处于 BCNF

所以如果,A1 和 A2 是唯一的属性:A1 -> A2 和 A2 -> A1 作为函数依赖,那么在两个函数依赖中,左边是一个超级键。满足 BCNF 的条件。

于 2021-11-14T12:42:07.610 回答