这是来自数据库课程(现在在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。
我做错了什么?
答案 0 :(得分:2)
你在原始问题陈述中提到的依赖关系B-> D在哪里?
除了
原始问题陈述本身存在相当大的缺陷。谈论在数据库设计中“跨越”多个关系模式的依赖关系是非常不寻常的。 A-> D就是这样做的。
它可能意味着FD应该保持在给定关系模式之间进行自然连接所产生的关系中,但这是一种非经典的假设经典规范化理论。我所知道的经典归一化理论并不涉及这种FD。