【问题标题】:Understanding natural join in Relational algebra理解关系代数中的自然连接
【发布时间】:2018-09-04 18:19:39
【问题描述】:

我已经看到自然连接只是选择和笛卡尔积的组合,但在各种网站上,它被称为投影和笛卡尔积的组合,两者完全不同,那么哪个定义应该更准确地对应它?

【问题讨论】:

  • 自然连接可以通过乘积、选择和投影来计算,因此请尝试更仔细地阅读所写的内容。 PS 网络不是可靠的资源。读一本教科书。数十个免费在线。这也可能是一个常见问题解答,尽管 SO 有很多不好的关系答案。请始终在谷歌上搜索您的问题/问题/目标的许多清晰、简洁和特定的版本/措辞,带和不带您的特定字符串/名称,并阅读许多答案。如果您没有找到答案,请发布,使用一个变体搜索您的标题和关键字作为您的标签。请参阅向下投票箭头鼠标悬停文本。
  • 有许多不同版本的“关系代数”,甚至在“关系”是什么的概念上也有所不同。您正在使用的参考是什么?你的教科书是什么?产品的版本特别多。如果您不准确告诉我们您的产品是如何工作的,我们如何详细告诉您如何使用它进行计算?

标签: database relational-algebra


【解决方案1】:

“关系代数”有许多不同的版本,甚至在“关系”的概念上也有所不同。没有一种 PRODUCT 或 NATURAL JOIN。

某些版本的关系代数具有作为属性名称列表的关系标题。 PRODUCT 为每个输入列表元素输出一个属性。如果有一个 NATURAL JOIN,那么它的结果就像首先做 PRODUCT,然后在相同名称属性对的相等性上限制/选择,然后投影出每对的一个属性。当没有共享属性名称时,它们给出相同的结果。 PRODUCT 适用于任何两个输入,但当输入具有重复的属性名称时,NATURAL JOIN 可能未定义。

一些版本的关系代数有关系标题,它们是属性名称的集合。 (元素是无序且唯一的。) NATURAL JOIN 的结果有一个标题,它是输入标题的并集。 (元组具有两个输入共有的每个属性名称的副本和一个输入唯一的每个属性名称的副本。)它返回具有该标题的所有元组,这些元组可以通过组合来自每个输入表的元组来生成。这与有多少通用属性名称无关,包括零。 PRODUCT 仅在输入不共享属性名称但其他行为类似于 NATURAL JOIN 时才定义。 PRODUCT 的作用是确认您期望没有共享属性名称。当所有的列名都相同时,这就是一种 INTERSECTION。

所有这一切都与 PK、UNIQUE、FK 和其他约束无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多