计算关系代数中的theta连接

时间:2013-01-26 11:34:16

标签: relational-algebra

我遇到了这个问题:

假设关系R(A,B)具有以下元组:

A   B
1   2
3   4
5   6

和关系S(B,C,D)具有以下元组:

B   C   D
2   4   6
4   6   8
4   7   9

计算R和S的theta-join,条件R.A< S.C AND R.B< S.D.结果中有哪些以下元组?假设每个元组都有模式(A,R.B,S.B,C,D)。

从以下答案中选择:

(3,4,2,4,6)
(1,2,4,4,6)
(1,2,2,6,8)
(3,4,4,7,8)

所以,当我尝试时,我看到了

(1, 2) matches (2, 4, 6)
(3, 4) matches (4, 6, 8)
(3, 4) matches (4, 7, 9)

所以我发现了以下元组(他们都尊重这个条件):

(1, 2, 2, 4, 6)
(3, 4, 4, 6, 8)
(3, 4, 4, 7, 9)

问题是在多个选择中找不到这些......

我做错了吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

为了计算θ-join,人们基本上做了两个关系的笛卡尔积(这里是R和S),并且得到了所有可能的组合。在每个元组上,你应用条件theta并得到那些真实的元组。

这里,笛卡儿给出了3x3 = 9个元组。其中,8个元组满足条件(R.A< S.C AND R.B< S.D)。这使得元组(3,4,2,4,6)成为theta连接集的一个元素。

你所做的是(R.B = S.B AND R.A< S.C AND R.B< S.D)的θ联接。希望能帮助您获得成功。