龙空技术网

您应该使用它来可视化 SQL 连接而不是维恩图

杨同学编程 814

前言:

当前看官们对“sql 图片”大约比较关心,各位老铁们都需要剖析一些“sql 图片”的相关文章。那么小编同时在网摘上汇集了一些关于“sql 图片””的相关内容,希望你们能喜欢,小伙伴们一起来学习一下吧!

去年的维恩图是如此

编辑

搜图

图片由作者提供,灵感来自R for Data Science

几周前,我在 Reddit 上发表了一篇关于SQL 反连接的文章。分享后不久,我收到了这样的回复:

作者图片

这激起了我的兴趣,因为到目前为止我还没有读过或听说过任何人认为维恩图是可视化 SQL 连接的不好方法,而且我已经持续使用 SQL 编码超过 3 年。就个人而言,我认为维恩图有助于快速记住和可视化两个表之间的连接类型。所以这是我的回应:

作者图片

在那条评论之后,我得到了一些热情的回应,并意识到这已经被广泛讨论,并且背后有一些历史。当我阅读更多关于它的内容时,我发现了一篇受欢迎的 Reddit 帖子,标题为“在解释连接时对维恩图说不”。阅读其他人对此的看法很有趣。我还发现了 2 年前发表在 Towards Data Science 上的一篇相关热门文章,标题为“我们可以停止使用 SQL JOIN 维恩图疯狂吗?” .

这场辩论让我想起了关于如何发音 SQL 的争论,或者当我第一次听说制表符与空格的争论时。在考虑了双方的论点后,我决定写这篇文章,然后发现我认为是被低估的 SQL 连接可视化,我称之为方格旗图。

快速旁注:关于 SQL 的发音,SQL 最初的拼写是“SEQUEL”,只是由于商标问题才改为“SQL”。

尽管我对这个话题有自己的看法,但我认为值得说明的是,我相信争论双方都有一些有效的观点,并且这些可视化都是表示 SQL 连接的有效方式。存在这种辩论的原因是因为双方都看到了不同学习方法的好处,这没关系。当然,对于大多数人来说,可能有一条最佳的学习路径,但学习是一种量身定制的体验,所以我不想贬低其他人通过使用不同的可视化方式发现的好处。但请记住,真正理解 SQL 连接的最佳方法是进入代码并练习!SQL Practice.com是我发现用于练习 SQL 的一个很好的资源。

但请记住,真正理解 SQL 连接的最佳方法是进入代码并练习!

话虽如此,我希望在“伟大的 SQL 维恩图辩论”中解决双方的关键点,并提出一个可能,只是可能,安抚双方的人的解决方案。

论据对立面的要点

为了更好地了解双方,我阅读了很多关于 Reddit 的意见以及一些文章。以下是我发现人们不同意使用维恩图来可视化 SQL 连接的原因:

维恩图源自集合论,因此不应用于可视化两个关系表之间的连接有些人声称学生在使用维恩图介绍连接概念时很难理解维恩图在技术上并不能正确地表示连接实际在做什么维恩图有各种限制:即不能很好地可视化其他连接类型(例如交叉连接),不能显示重复发生时会发生什么,等等……

这些是我从那些反对使用维恩图的人那里发现的主要批评。那些支持 SQL 维恩图的人回应了两个要点:

虽然维恩图在技术上可能不正确,但它们可以帮助人们记住连接的类型并且更容易理解根据所选列的不同,连接和集合操作可能会产生完全相同的结果

无论您更同意哪一方,您现在都了解了我决定写这篇文章的原因。

维恩图的另一种解决方案

2016 年有一篇热门文章也反对使用维恩图,作者提出了一个替代图,称为“连接图”。下面是一个可视化为连接图的内部连接示例:

编辑

搜图

作者图片,灵感来自Jooq 博客

此图是有益的,因为它比维恩图更准确地表示 SQL 连接中使用的表格结构。该图的问题在于它将主键显示为颜色,但这些颜色中也包含数字或字母。矩形内的字母和数字应该表示除主键列(由颜色表示)之外的列,但这是此可视化开始分解的地方。使用一个矩形表示多列可能会令人困惑和不直观(至少对我而言)。无论如何,这种可视化似乎对一些难以理解使用 SQL 的连接的人有所帮助。每个可视化肯定都有限制。

方格旗图

当我回顾可视化 SQL 连接的不同方法时,我发现了我个人最喜欢的方法。我希望这张图可以弥合双方之间的差距,或者至少提供另一种选择来帮助人们理解 SQL 连接。

该图最初由 Hadley Wickham 和 Garrett Grolemund 在他们的“R for Data Science”一书中创建。这些图表可以在“关系数据”一章中找到。

我在下面显示的备忘单中重新创建了这些图表,但我还创建了一个 Github 存储库,因此您可以在此处下载图像。

编辑

搜图

图片由作者提供,灵感来自R for Data Science

编辑

搜图

图片由作者提供,灵感来自R for Data Science

为什么我方格旗图

以下是我喜欢这个图表的所有原因:

比连接图更准确地表示连接,因为它的主键具有相同的颜色和数字为每个表显示 1 个额外的值列,以帮助可视化除主键列之外的列中数据发生的情况连接线有助于简化视觉效果,便于查看连接行与连接图类似,连接产生的输出表显示在右侧Null 值在适用时显示,这正是在 SQL 中执行连接时发生的情况可以显示交叉连接,与维恩图相比,这是一个优势显示 SQL 语法以供参考,类似于此处的维恩图备忘单

我仍然相信维恩图对于可视化 SQL 连接很有用,但它们在表示的范围和准确性方面受到限制。希望这些方格旗图可以成为您学习 SQL 时的一个很好的参考。谢谢阅读!

标签: #sql 图片