运动问题问:
考虑一个关系 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,而第二件事是我没有了解选择标准的含义。
答案 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
之间的自然连接。自然连接基于所有具有相同名称的列用于连接关系。在此结果中,我们没有得到两个A
或B
,因为a)它们始终相等,并且b)元组元素按名称区分,因此您不能有多个具有相同名称的元素。因此,我们生成 U(A,B,C,D):
A B C D
----------
6 8 7 6
(因为仅(6,8,7)
中的元组R
和(6,8,6)
中的T
具有匹配的A
和B
值)。
最后,我们预计仅保留A
中的D
和U
。希望我不必解释。