我正在遵循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?
唯一给出的解释是:
前三个答案使元组(4,1,2,2)松散。在最后一个关节中,没有元组丢失。
请详细说明答案的作用是什么?
非常感谢您的关注!
答案 0 :(得分:1)
这是有关关系代数的自然联接和属性命名的问题。我猜想您的公式中的问题是“重命名”,通常用希腊字母“ rho ρ
”表示(请参阅Wikipedia链接)。
对于自然加入see the wikipedia example并注意
自然连接的结果是
R
和S
中所有元组的所有组合的集合,它们的公共属性名称相同。
由于四个公式中的重命名,通常,重命名的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返回空结果。