【问题标题】:Relational Algebra - Natural join - few basics关系代数 - 自然连接 - 一些基础知识
【发布时间】:2013-09-11 10:33:59
【问题描述】:

我有两个关于自然连接的基本问题。

假设A是一个关系,那么:

  1. (A) 自然连接 (A) = A 吗?

  2. 是 (A) 自然连接(空集)= A 吗?

据我所知,这两个问题的答案都是肯定的,对吗?

注意:这不是作业问题,我只是想了解一些自然连接的基础知识。

谢谢。

【问题讨论】:

    标签: sql database join relational-algebra natural-join


    【解决方案1】:
    1. (A) 自然连接 (A) = A 吗? 是的
    2. (A) 自然连接(空集)是否 = A? 没有

    这是working demo

    由于自然连接比较两个表中具有相同列名的所有列,并且对于同名列仅返回一列,因此连接 A 将导致 A。对于第 #2 点,连接不会匹配任何行,因此结果将是空表(不是 A)。

    注意:The Cartesian product of A and the empty set is the empty set

    另外,请查看Why is the Cartesian product of a set A and empty set an empty set?

    【讨论】:

    • 我的错误。我没有注意到我在谈论关系代数。根据关系代数中自然连接的定义,似乎(2)也是正确的......我是对的吗?
    • 但是根据自然连接的定义——(R)自然连接(S)等于(R)X(S)如果(R)相交(S)是空集。也就是说,如果 R 和 S 没有任何匹配的列,我们将得到笛卡尔积。我由此暗示(R)自然连接(空集)将是R。
    • 好吧,由于某种原因,我发现它并不简单。我使用“数据库系统概念”一书作为指导,其中笛卡尔积定义如下:对于 r 中的每个元组,附加 s 中的所有元组。无论如何,谢谢你的帮助。非常感谢。
    • "对于 r 中的每个元组附加 s 中的所有元组" 这是正确的,除非 s 为空。祝你好运!
    【解决方案2】:
    1. 正确

    2. 问题含糊不清,答案可能是肯定的或否定的。自然连接是对两个关系的操作。在这种情况下,“空集”可能至少意味着两件事:(a)没有元组的关系(零基数); (b) 带有空标题(零度)的关系,这意味着它没有任何属性,但可能包含也可能不包含元组。

    2(a) 如果 A 或 B 的基数为零,则 A ⋈ B 也是空的。如果 A 和 B 具有不同(且非空)的标题,则 A ⋈ B 实际上与 A 无法比较,因为连接的结果与 A 具有不同的标题,因此在这种情况下,说结果是不正确的是“等于”A。A ⋈ B 可能导致与 A 相同的标题当然在这种情况下 A ⋈ B 可能等于 A。

    2(b) 只有两个带有空标题的关系,一个带有零元组,一个带有单个元组。按照惯例,它们分别称为 DUM 和 DEE。 A ⋈ DUM 导致与 A 具有相同标题但元组为零的关系。 A ⋈ DEE = A。

    【讨论】:

      最近更新 更多