在SQL Join的特殊情况下,维恩图是否有意义?

问题描述 投票:0回答:1

在一个相关的问题(用江恩图来描绘表为集的SQL连接是否合适?)表明,一般情况下,用表A和表B来描述Inner Join是不合适的,用很具体的维恩图来解释它。

但是,我的直觉还是说,这幅图有一定的 "道理",尽管它在一般情况下形式上并不正确。那么,我问,有没有一种特殊的情况,即 INNER JOIN以及对下图的解释,或类似于下图的解释,从而使图有意义?

enter image description here

sql join inner-join venn-diagram
1个回答
1
投票

是的,至少有一种特殊情况(但可能更多)的连接和一个与图中所示密切相关的维恩图,它确实描述了所述特殊情况的连接。虽然从数学意义上讲,这是一种特殊情况,但实际上在现实世界中,它是一种非常常见的使用情况,以至于实际上它几乎是join的标准使用情况。所以它值得关注。

我们要考虑的join的特殊情况有以下限制。

  • 两个被连接的表都有唯一的键。我们称它们为 IDaIDb
  • 开机条件是 IDa = IDb

在这种情况下,我们可以定义两个集合 SetASetB,它们是列中所有ID的集合。IDaIDb. 从那里,由于两个集合是相同的类型,它们可以有一个非空的交集。交集中的每一个ID都将在所产生的连接表中定义一条记录。由于ID在两个集合的交叉点中,而且ID是唯一的,所以它将正好对应于每个表中的一条记录。因此,结果表中的记录将是列与值映射的组合(列与值映射的结合),在 Table A 和记录 Table B,为该ID。

例子

下图是满足特殊情况的两个表TableA和TableB,以及连接的结果。

enter image description here

连接的具体SQL是:

SELECT * FROM TableA JOIN TableB ON TableA.ID = TableB.ID

表A和表B的ID集是 1, 2, 31, 2, 4 分别为。所以交点是 1, 2. 因此,我们选择ID为 12 从这两个表中,把它们放在一起,得到结果表中的行。这些集合及其交点的维恩图表示为。

enter image description here

教学说明

虽然在单个唯一ID上的加入是现实世界中非常常见的用例,但必须理解江恩图在一般情况下解释加入的局限性。只要你理解了这一点,在理解这种特殊情况时应用江恩图是没有坏处的。

© www.soinside.com 2019 - 2024. All rights reserved.