BCNF分解 - 我做错了什么

时间:2013-12-28 05:53:51

标签: database relational-database functional-dependencies decomposition database-theory

这是来自数据库课程(现在在coursera.org上自学)的问题,2011年秋季。

考虑以下关系模式:

R1(A,B,C),R2(B,D)

(a)考虑模式并假设在该模式中保持关系的唯一功能依赖性是A→B,A→C,B→A,A→D,以及从这些依赖的所有依赖性。 BCNF中的架构是什么?

(b)假设我们从(a)部分省略了依赖A→D。 BCNF中的架构是什么?

(a)问题的答案是肯定的,它确实对应于我的答案。 对第二个问题的正确答案也是肯定的。但它并不符合 我的回答。

当我们省略A→D依赖时,则D不再依赖于B,因此 B不是B→D中的关键。因此,我们违反了BCNF。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

你在原始问题陈述中提到的依赖关系B-> D在哪里?

除了

原始问题陈述本身存在相当大的缺陷。谈论在数据库设计中“跨越”多个关系模式的依赖关系是非常不寻常的。 A-> D就是这样做的。

它可能意味着FD应该保持在给定关系模式之间进行自然连接所产生的关系中,但这是一种非经典的假设经典规范化理论。我所知道的经典归一化理论并不涉及这种FD。