Loseless Join:如果一个人有更多的信息或者必须在加入之前进行投射

时间:2015-10-15 02:22:04

标签: sql join

是否考虑将原始表R(ABCD)加入失败,然后我们列出R1(ABC)R2(BCD)。我们验证ABC是R1, but only C is a key in R2`中的关键字。如果我们通过C加入R1和R2,这是一个失败的连接吗?或者它不是一个失败的连接,因为我们需要在加入之前进行R2(CD)的投影。

例如

R1             R2
a1, b1, c1     b2, c1, d1

通过C加入,结果是

a1, b1, c1, d1
a1, b2, c1, d1

我们有比开始时更多的信息!因此,我不确定这是否会被视为失败的加入。

1 个答案:

答案 0 :(得分:0)

R1(ABC), R2(BCD)

R1 ∩ R2 = BC
R1 - R2 = A

- >如果A->BC处于函数依赖关系中=>无损

检查

R2 - R1 = D

- >如果D->BC处于函数依赖关系中=>无损