【发布时间】:2016-02-01 00:40:49
【问题描述】:
因此,作为我的任务的一部分,我必须证明具有两个属性的任何关系都在 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。而另一个非关键属性在功能上决定了关键。
【问题讨论】:
-
你的推论与你要证明的东西有什么关系?另外:您解决了 BCNF 不持有的充分条件,但您没有解决所有 BCNF 情况。所以你的共鸣是不健全的。另外:当一些FD持有其他人时。 (包括琐碎的 FD)。但你没有解决这个问题。
-
并不是每个二元关系都在 BCNF 中。您的教师忽略了当 {} 是行列式而不是 CK 时,即某些属性/子行在每个元组中必须具有相同的值但可以有多个元组,那么关系甚至不在 2NF 中,因为 { } 是一个行列式,它是比任何 CK 更合适/更小的子集。 (它可以分解为 2 个组件,其中一个是属性/子元组上的投影,另一个是所有其他属性)。正确的是,{} 不是行列式(或者是但是 CK)的每个二元关系都在 BCNF 中。
标签: database-normalization functional-dependencies bcnf