Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用维恩图来描述表集合所在的SQL连接是否合适?_Sql_Join_Inner Join_Outer Join - Fatal编程技术网

使用维恩图来描述表集合所在的SQL连接是否合适?

使用维恩图来描述表集合所在的SQL连接是否合适?,sql,join,inner-join,outer-join,Sql,Join,Inner Join,Outer Join,通过在internet上搜索SQL join,可以找到以下图像: 我们能用下面的方式来解释这是一个问题吗 标有表A的圆圈是表A中的一组记录 标有表B的圆圈是表B中的一组记录 集合的交集表示内部联接,也就是SQL中的just join 动机 所示的图表以各种形式广泛出现在网络上,看起来非常像维恩图。所以第一个直觉是把它看作是维恩图。但是,在定义表A和表B集合的内容时可能会遇到困难 互联网上还有一些信息似乎存在冲突。这个问题希望有助于解决出现的一些冲突。一些网站认为我们不应该使用维恩图来解释连接:

通过在internet上搜索SQL join,可以找到以下图像:

我们能用下面的方式来解释这是一个问题吗

标有表A的圆圈是表A中的一组记录 标有表B的圆圈是表B中的一组记录 集合的交集表示内部联接,也就是SQL中的just join 动机 所示的图表以各种形式广泛出现在网络上,看起来非常像维恩图。所以第一个直觉是把它看作是维恩图。但是,在定义表A和表B集合的内容时可能会遇到困难

互联网上还有一些信息似乎存在冲突。这个问题希望有助于解决出现的一些冲突。一些网站认为我们不应该使用维恩图来解释连接:

虽然还有其他信息使用表A和B之间的维恩图来解释这些表上的连接,例如


不可以。如果要表示连接,则该图不能解释为维恩图。让我们用一个反例来说明原因。让我们选择一个最小的反例来避免混乱。因此,让我们假设两个表只有一列:ID。此外,让我们假设两个表中只有两条记录,并且它们都有相同的两条记录:只有ID 1和2。所以两个表都是这样的:

现在,假设我们运行以下SQL:

select * from A join B
由于没有ON子句,我们将返回A中所有记录组合的表以及B中的所有记录。由于每个表中有2条记录,我们将返回4=2*2条记录。select的结果表如下所示,其中A和B的ID列完全由表名限定:

然而,如维恩图所示,两组记录的交集并不等于此,无论我们对记录选择何种解释

解释1:每个记录只是一个值的元组。在本例中,因为每个表中只有一列,所以元组可以归结为单个值。因为我们的ID列是数字的,所以这种解释归结为一个记录只是一个数字ID。集合的交集是集合{1,2}与自身的交集。这只是最初的一套。或者作为表格,交叉点将是:

解释2:表A中的每一条记录都与表B中的任何记录或表A中的任何其他记录完全不同。在这种情况下,由于没有两个记录是相同的,因此两个集合的交集将为空,即空集合。因此,作为一个表,它肯定不会与联接的结果相同


这就证明了Venn图的这种精确解释不能被视为代表SQL连接。

考虑将问题标记为您的奖金,让主持人将奖金移到此处,或者取消奖金,以免在此处造成混乱。但要解释清楚。你可以参考。但这个问题只是询问1维恩标签的特定解释,而没有理由认为这些解释是任何人在写作或阅读中使用过的。所以现在还不清楚这是否是你想要回答的问题。对于内部和外部,有一个有效的Venn。祝你好运。谢谢@philipxy。正是你的评论让我明白了这一点:在这个已经杂乱无章的问题上增加奖金可能是个坏主意。然而,我不愿意为我自己的问题带来额外的好处,因为它似乎有点引人注目。这个问题已经得到了很好的回答,所以这就像是在说嘿,伙计们,看看我的好答案!请向上投票,这样我就可以挽回我在奖金上失去的一些代表。另外,关于这个问题,我还想问和回答其他问题。这当然不是结束。