0

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

考虑以下关系模式:

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。

我究竟做错了什么?

4

1 回答 1

2

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

除了。

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

这大概意味着 FD 应该保持在给定关系模式之间进行自然连接所产生的关系中,但这是经典归一化理论的一个非常非正统的假设。据我所知,经典归一化理论不涉及此类 FD。

于 2013-12-28T21:49:31.473 回答