无损分解与依赖保留

Adi*_*idu 4 database-design decomposition database-normalization functional-dependencies

他们中的任何一个都暗示另一个吗?

我的逻辑是,如果保留所有依赖项,则不会丢失信息,同样,如果分解是无损的,则一定不会违反功能依赖项。

所以本质上,依赖保留是一种确保您的分解无损的方法。

我很难接受/拒绝它。那么这两者是相互保证的,还是有一种情况可以在没有另一个的情况下实现?

Ren*_*nzo 5

一般来说,这是两个独立的东西:您可以进行保留依赖关系的无损分解,以及保留依赖关系但不是无损的分解。

所以,你的第一个问题的答案是否定的,它们都没有暗示另一个。

但是,这两个属性可以通过以下基本结果“连接”起来,这给出了一个充分(即使不是必要)条件来确定依赖保留分解是否也是无损的:

让 ?= {R(T i ,F i )} 保留依赖关系的关系模式 R(T,F) 的分解。如果对于某些 j,T j是 R(T,F) 的超键,那么分解 ? 是无损的。

实际上,这个性质应用于分解 3NF 关系的“合成”算法的最后一步:如果在前面的步骤中获得的模式没有包含原始关系的超键,则添加一个新模式,其中包含该关系的任何候选键。原始关系。

这保证了算法产生的分解既无损又保留了依赖关系,而另一方面,众所周知,在 BCNF 中分解关系的“分析”算法在某些情况下会产生功能损失依赖关系。