我不自然地理解和理解这个问题的答案

时间:2019-07-04 09:00:19

标签: relational-database relational-algebra

我正在遵循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

在所有这些请求之间,哪一个返回相同的关系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))(注意:这是正确的答案)< / li>

唯一给出的解释是:

  

前三个答案使元组(4,1,2,2)松散。在最后一个关节中,没有元组丢失。

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

1 个答案:

答案 0 :(得分:1)

这是有关关系代数的自然联接和属性命名的问题。我猜想您的公式中的问题是“重命名”,通常用希腊字母“ rho ρ”表示(请参阅Wikipedia链接)。

对于自然加入see the wikipedia example并注意

  

自然连接的结果是RS中所有元组的所有组合的集合,它们的公共属性名称相同。

由于四个公式中的重命名,通常,重命名的R的结果将没有与原始R相同的属性名称,或者在产生的同名属性。

我建议您进行每四个重命名,然后找出每个结果的“标题”,即结果属性名称是什么。

您会在请求1、2、3中找到至少一个与原始R同名的结果属性。该属性的值不是一样。

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

但是在请求4中,投影将丢弃新命名的属性G, F并折叠回原来的A, B, C, D。因此,一般而言,请求4始终会完全返回原始的R

根据R的内容,请求1.,2、3有时可能返回原始的R。但是在显示的内容中,存在名称不相同的新名称属性冲突,因此它们会“丢失”元组。

顺便说一句,尽管元组<4, 1, 2, 2>确实在这三个请求中确实“丢失”,但这并不是唯一一个“丢失”的元组。特别是在请求3中,请注意,对于示例数据,B, C之间没有共同的值,因此在重命名中四舍五入交换它们的结果是从Join返回空结果。