如果没有共同属性,自然连接是什么?

22

如果关系代数中的表没有具有相同名称的属性,自然连接将返回什么?它会是空值还是与交叉连接(笛卡尔积)相同?

如果在自然连接时表没有具有相同名称的属性,则其结果将类似于交叉连接(笛卡尔积)。

3个回答

31
如果两个关系之间没有共同的属性,并且您执行了自然连接,它将返回这两个关系的笛卡尔积。

4
自然连接是一种连接方式,其中比较两个表中的所有列,并将任何一个表中名称相同的列进行连接。结果是一个包含这些配对表每个列的单独列的表。如果没有共同的列,则没有需要连接的内容,因此所有内容都会连接在一起,即笛卡尔积。 - Andrew Martin
如果表格中有相同的列名,则连接这些列的信息。然后基于此连接所有其他列。因此,如果表A具有列1和2,而表B具有列2、3和4,则笛卡尔积将创建一个包含列1、2、3和4的单个表。它将根据两个“2”列的连接确定如何匹配这个表。如果没有共同的列,则最终结果集是表a中的所有内容和表b中的所有内容 - 因此表b中的每个元组都与表a中的第一个元组连接,然后每个元组都与表a中的第二个元组连接,以此类推。 - Andrew Martin
这是自然连接的一个例子:http://en.wikipedia.org/wiki/Relational_algebra#Natural_join_.28.E2.8B.88.29接下来是另一个例子,这次是笛卡尔积:http://en.wikipedia.org/wiki/Cartesian_product#Examples - Andrew Martin
一个后续问题:自然连接被归类为“内连接”。我对内连接的俗语定义是,只有在连接条件中产生匹配的值才会被保留。如果没有匹配的列,就不会有匹配。那么这个操作不会违反“内连接”的条件吗? - undefined

8

将返回两个表的笛卡尔积。这是因为当我们对两个表执行任何JOIN操作时,这些表的笛卡尔积就会形成。然后,根据WHERE子句中的任何选择条件,返回结果行。但这里,由于没有共同的列,所以在找到笛卡尔积后该过程停止。


然后,根据WHERE子句中的任何选择条件,返回结果行。错误。当存在公共列时,自然连接不会返回笛卡尔积的限制/选择。它返回可以粗略描述为笛卡尔积的限制/选择的某个投影 - 尽管正确描述取决于代数的关系和运算符。 - philipxy

-1

它将返回表的笛卡尔积。如果有任何共同属性,则自然连接将删除重复属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接