当存在循环依赖时,将3NF转换为BCNF

时间:2014-05-31 00:17:29

标签: database-normalization 3nf

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

ABC -> D
D -> A

如何将R分解成BCNF关系?无论我如何看待,唯一合理的方式似乎是弃掉其中一个FD。还有其他办法吗?

1 个答案:

答案 0 :(得分:2)

没错,人们可以在保留FD的同时无损地分解为3NF,但BCNF可能无法保留它们。然而,它是一种无损分解:如果保持原件的投影,那么这些组件将加入到原始组件中。但只要原件具有给定值,组件就应该是它的预测。 (如果它们没有,则会出现错误,因此我们希望DBMS适当地约束组件。)因此,有必要但足以将组件约束为原始投影。 ABC非常简单(因为它是关键)。这使我们需要要求AD = ABCD PROJECT {DA}。我们说组件必须满足"平等依赖"。