1

如果我们有一个关系模式 R(A, B, C, D),具有一组依赖项:

ABC -> D
D -> A

如何将 R 分解为 BCNF 关系?唯一可行的方法似乎是丢弃其中一个 FD,不管我怎么想。还有其他方法吗?

4

1 回答 1

2

没错,人们总是可以在保留 FD 的同时无损地分解为 3NF,但 BCNF 可能不会保留它们。尽管如此,这是一个无损分解:组件,如果持有原件的投影,将加入原件。但是,只要原始值具有给定值,组件就应该是它的投影。(如果不是,则发生错误,因此我们希望 DBMS 适当地约束组件。)因此,将组件约束为原始投影是必要但足够的。ABC 是微不足道的(因为它是一把钥匙)。这让我们需要要求 AD = ABCD PROJECT {DA}。我们说组件必须满足“平等依赖”。

于 2014-05-31T04:47:56.273 回答