我不明白这个问题的答案是自然连接和投影

I don't understand the answers of this question with natural join and projection

我正在学习 MOOC,但我不明白正确答案和其他答案。
MOOC关闭了,我不能在论坛上提问

这是问题:

考虑以下关系 R:
A B C D
1 0 2 2
4 1 2 2
6 0 6 3
7 1 2 3
1 0 6 1
1 1 2 1

在所有这些请求中,哪一个return相同的关系R?

  1. ΠA,B,C,D(R⋈δA→D,D→F(R))
  2. R⋈δA→D,D→A(R)
  3. R⋈δB→C,C→B(R)
  4. ΠA,B,C,D(R⋈δB→G,C→F(R))(注: 这是正确答案)

唯一给出的解释是:

The first 3 answers loose the tuple(4,1,2,2). In the last joint, no tuple is lost.

能否详细说明答案的作用是什么?
非常感谢您的关注!

这是一个关于关系代数的自然连接和属性命名的问题。我认为你的公式中波浪形的东西是为了重命名,通常用希腊字母 rho ρ 表示(参见维基百科 link)。

对于自然连接 see the wikipedia example 并注释

The result of the natural join is the set of all combinations of tuples in R and S that are equal on their common attribute names.

由于四个公式中的重命名,一般情况下,重命名的R的结果不会与原来的R具有相同的属性名称,或者在值上不相等在生成的 same-named 属性中。

我建议您仔细检查每四个重命名,并计算出每个结果的 'heading' 是什么 -- 也就是说,生成的属性名称是什么。

您会在请求 1.、2.、3. 中找到至少一个结果属性 same-named 作为原始 R 该属性的值不同。

在请求 4. 中,虽然属性 B, C 已重命名,但它们的新名称不会与 R 中的任何现有属性冲突。因此,原始 R 的自然连接将使用属性 A, D。这将产生一个有趣的中间结果:考虑元组 <1, 0, 6, 1>, <1, 1, 2, 1>,每个元组在其 A 属性和 D 属性中包含相等的值。

但是在请求 4. 中,投影将丢弃 newly-named 属性 G, F 并折叠回原始 A, B, C, D。所以一般来说,请求 4.总是 returns 完全是原来的 R.

请求 1.、2.、3. 有时可能 return 原始 R,具体取决于 R 的内容。但是对于您显示的内容,新 same-named 属性与 non-equal 值存在冲突,因此它们会 'lose' 元组。

顺便说一句,尽管元组 <4, 1, 2, 2> 在这三个请求中确实得到了 'lost',但它并不是唯一得到 'lost' 的元组。特别是在请求 3. 中,请注意,对于示例数据,B, C 之间没有共同的值,因此在重命名中将它们交换过来具有 return 从 Join 返回空结果的效果.