无损连接分解

时间:2010-11-29 04:25:02

标签: sql database

我正在学习考试,这是在学习指南表上。这不是作业,也不会被评分。

关系模式R =(A,B,C,D,E)

功能依赖性=(AB-> E,C-> AD,D-> B,E-> C)

r1 =(A,C,D)r2 =(B,C,E)OR

x1 =(A,C,D)x2 =(A,B,E)无损连接分解?为什么?

3 个答案:

答案 0 :(得分:4)

我的关系代数非常生疏,但这就是我记得要去的方式

如果FD中有r1 ∩ r2 -> r1 - r2r1 ∩ r2 -> r2 - r1,则表示您有无损分解。

r1 ∩ r2 = C
r1 - r2 = AD

C->AD处于功能依赖关系=>无损

表示x1和x2

x1 ∩ x2 = A
x1 - x2 = CD

A->CD不在FD中 现在检查x2 - x1

x2 - x1 = BE

A->BE也不在FD中,因此有损

引用here,请检查我可能犯下的可怕错误

答案 1 :(得分:0)

这是我的理解,基本上你看看你的分解,并确定关系之间的共同属性是否是至少一个关系的关键。

因此对于R1和R2 - 它们之间唯一共同点是C.C将是R1的关键,因为你得到了C - >广告。所以它是无损的。

对于X1和X2,唯一常见的是A,它本身不是来自函数依赖关系的X1或X2的键。

答案 2 :(得分:0)

功能依赖性=(AB-> E,C-> AD,D-> B,E-> C)

当执行Chase算法时,r1 =(A,C,D)r2 =(B,C,E)是无损的。 可以看出,两个表都同意'C',并且依赖关系C-> AD保留在表ACD中。

x1 =(A,C,D)x2 =(A,B,E)是有损的,因为您将在执行Chase算法后得出结论。 或者,可以看出两个表仅在A上达成一致,并且没有完全依赖于A的依赖性。