我想知道对这个代数πA,D(R⋈σB= 8(S))的转换是什么

时间:2018-09-05 11:29:55

标签: relational-algebra

运动问题问:

  

考虑一个关系 R(A,B,C) S(A,B,D)   以下元组:

A  B  C          A  B  D
-------          -------
6  8  7          5  8  7
6  6  7          6  6  7
7  8  6          6  8  6
     

表达式产生的结果   π A,D (R⋈σ B = 8 (S))

给出答案为:

A  D
----
6  6

这是为什么?

我知道pi是投影,因此它只会输出表A和D。我不明白的第一件事是为什么在新表中它不是AAD,因为有2个A,而第二件事是我没有了解选择标准的含义。

2 个答案:

答案 0 :(得分:1)

从S中选择B = 8将得出

A B D 
5 8 7 
6 8 6 

加入R会给出

A B C D
6 8  7 6

因为R表(第一行)中的A = 6和B = 8,而得到的S表(第二行)中

从投影中您将看到答案

答案 1 :(得分:1)

让我们由内而外地工作。首先,考虑σ B = 8 (S)。这是一个选择。我们使用S作为源,但是我们只允许通过符合B=8条件的元组。因此,让我们将此新关系标记为 T(A,B,D)

A  B  D
-------
5  8  7
6  8  6

6,6,7元组未选中,因为其B值不等于8


现在让我们考虑R⋈T。这是我上面的T元组和R之间的自然连接。自然连接基于所有具有相同名称的列用于连接关系。在此结果中,我们没有得到两个AB,因为a)它们始终相等,并且b)元组元素按名称区分,因此您不能有多个具有相同名称的元素。因此,我们生成 U(A,B,C,D)

A  B  C  D
----------
6  8  7  6

(因为仅(6,8,7)中的元组R(6,8,6)中的T具有匹配的AB值)。

最后,我们预计仅保留A中的DU。希望我不必解释。