一般来说有这两个独立的things:可以无损分解without依赖关系保留,以及保留依赖关系的分解,但那是not无损。
这是这个事实的一个例子。
给定关系:
R (A B C D)
涵盖了函数依赖关系:
F = {A B → C, C → B, D → C}
分解:
R1 = (A B C)
R2 = (C D)
保留函数依赖性,但不是无损分解(如果您加入R1
and R2
您将获得比原始关系更多的元组)。
另一方面,分解:
R1 (A C D)
R2 (B C D)
是无损的,但不保留功能依赖性(在本例中A B → C
不保留)。
所以,你的第一个问题的答案是no,它们都没有暗示另一个。
然而,这两个属性可以通过以下基本结果“连接”,即充足的(即使没有必要)确定依赖关系保留分解是否也是无损的条件:
Let ρ = {R(Ti,Fi)} a decomposition of a relation schema R(T,F) that preserves the dependencies. If, for some j, Tj is a superkey of R(T,F), then the decomposition ρ is lossless.
实际上,这个属性应用于分解 3NF 关系的“合成”算法的最后一步:如果前面步骤中获得的模式不包含原始关系的超键,则添加一个具有该关系的任何候选键的新模式。原来的关系。
这保证了该算法产生的分解既无损又保留了依赖性,而另一方面,众所周知,在 BCNF 中分解关系的“分析”算法在某些情况下可能会产生功能性的损失。依赖关系。
因此,前面关系的 3NF 分解既无损又保留了依赖关系(注意 R3 包含R
):
R1 (A B C)
R2 (C D)
R3 (A D)
但关系R1
由于依赖关系,不在 BCNF 中C → B
(而唯一的候选键R1
is {A B}
.