无损分解与依赖保留

时间:2016-09-13 07:48:48

标签: database-design database-normalization functional-dependencies decomposition

他们中的任何人是否意味着另一个?

我的逻辑是,如果保留所有依赖关系,那么就不会丢失信息,同样,如果分解是无损的,那么就不会违反任何功能依赖。

基本上,依赖性保留是一种确保分解无损的方法。

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

1 个答案:

答案 0 :(得分:3)

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

所以,你的第一个问题的答案是没有,没有一个暗示另一个。

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

  

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

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

这保证了算法产生无损的分解并保留了依赖性,而另一方面,已知用于分解BCNF中的关系的“分析”算法在某些情况下可以产生丧失功能依赖性。