【发布时间】:2012-07-15 12:12:14
【问题描述】:
换句话说,是不是真的: r1 ⋈ (r2 - r3) = r1 ⋈ r2 - r1 ⋈ r3
其中 r1 r2 和 r3 是关系
如果不是例子呢?
【问题讨论】:
标签: relational-algebra natural-join
换句话说,是不是真的: r1 ⋈ (r2 - r3) = r1 ⋈ r2 - r1 ⋈ r3
其中 r1 r2 和 r3 是关系
如果不是例子呢?
【问题讨论】:
标签: relational-algebra natural-join
是的。
取一个元组 t,具有 JOIN 的所有属性。 设 t1 为其“R1”部分。 设 t2 为其“R2”部分(由于 R2-R3 是有效表达式,它也是 t 的“R3”部分)。
元组 t 出现在 R1 JOIN (R2 MINUS R3) 当且仅当:
t1 出现在 R1 中,AND t2 出现在 R2 中,AND t2 不出现在 R3 中。
元组 t 出现在 (R1 JOIN R2) MINUS (R1 JOIN R3) 当且仅当:
t1 出现在 R1 中,AND t2 出现在 R2 中,并且(并非如此)(t1 出现在 R1 中,AND t2 出现在 R3 中)。
由于 t1 必须出现在 R1 中,这简化为:
t1 出现在 R1 中,AND t2 出现在 R2 中,NOT(真正的 AND t2 出现在 R3 中)。
t1 出现在 R1 中,AND t2 出现在 R2 中,NOT(t2 出现在 R3 中)。
与第一种情况比较,观察条件相同。
证明性质的另一种方法是观察比 (R2 MINUS R3) 等价于 (R2 INTERSECT CMP(R3)),其中 CMP(R3) 表示 R3 的补码(关于其类型的全称关系),然后应用 JOIN OVER INTERSECTION 的分布性。
【讨论】:
我对所提出的问题没有答案,但即使它是真的,我也不相信等价是对称的。考虑
r1 = (a1, a2)
r2 = (a1, a2, a3)
r3 = (a2, a3)
那么r1 ⋈ r2 - r1 ⋈ r3 是可能的,因为每个操作数都是联合兼容的,而r2 - r3 不是。
【讨论】: