前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >还在用维恩图可视化SQL的Join连接吗?你该看看这个

还在用维恩图可视化SQL的Join连接吗?你该看看这个

作者头像
IT大咖说
发布2022-04-12 12:41:01
7480
发布2022-04-12 12:41:01
举报
文章被收录于专栏:IT大咖说IT大咖说

维恩图是去年的事了

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

几周前,我在Reddit上发表了一篇关于 SQL Anti-Joins在Reddit上。在我分享后不久,我得到了这样的回应。

图片由作者提供

这引起了我的兴趣,因为到目前为止,我还没有读过或听说过有人认为维恩图是可视化SQL连接的坏方法,而我已经不断地用SQL编码了3年多。我个人认为,维恩图对于快速记忆和可视化两个表之间的连接类型很有帮助。所以这是我的回答。

图片由作者提供

在这篇评论之后,我得到了一些热情的回应,并意识到这个问题已经被广泛地讨论过了,而且背后有一些历史。当我在阅读更多相关内容时,我发现了一个流行的Reddit帖子,标题是, “Say NO to Venn Diagrams When Explaining Joins”.阅读别人对它的看法很有意思。我还发现了两年前发表在Towards Data Science上的一个相关的热门帖子,标题是, “ Can we stop with the SQL JOINs venn diagrams insanity?”.

这场辩论让我想起了关于如何发音SQL的争论,或者当我第一次听到关于 tabs vs. spaces debate.我决定写这篇文章,因为我思考了双方的争论,然后发现了我认为被低估的SQL连接的可视化,我称之为格子旗图。

快速的题外话:关于SQL的发音,SQL最初被拼成'SEQUEL',后来才改成'SQL'。due to a trademark issue.

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

但请记住,真正理解SQL连接的最好方法是进入代码并进行实践。

既然如此,我希望解决 "SQL维恩图大辩论 "中双方的关键点,并提出一个可能,只是可能,安抚双方人员的解决方案。

争论双方的关键点

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

  • 维恩图起源于集合理论,因此不 应该被用于可视化两个关系表之间的连接。
  • 有些人声称,在用维恩图介绍概念时,学生们很难理解连接。
  • 维恩图在技术上并不能正确表示一个连接的实际作用
  • 维恩图有各种限制:即不能很好地显示其他连接类型(如交叉连接),不能显示重复出现时的情况,等等。

这些是我发现的那些反对使用维恩图的人的主要批评意见。赞成使用SQL文氏图的人主要回应了两点。

  • 虽然维恩图在技术上可能并不正确,但它有助于人们记住连接的类型,而且更简单易懂。
  • 根据所选列的不同,连接和集合操作的结果可能完全相同。

不管你更同意哪一方,你现在对我决定写这篇文章的原因有了一些背景。

维恩图的一个替代解决方案

有一篇 popular article in 2016也反对使用维恩图,作者提出了另一种图,叫做 "连接图"。下面是一个内联接的例子,它被可视化为一个联接图。

图片由作者提供,灵感来自 Jooq Blog

这种图是有益的,因为它比维恩图更准确地表示了SQL连接中使用的表格结构。这个图的问题是,它以颜色显示主键,但在这些颜色中也有数字或字母。矩形内的字母和数字应该代表除了主键列(用颜色表示)之外的其他列,但这是这种可视化开始崩溃的地方。用一个矩形来表示多列,会让人感到困惑和不直观(至少对我来说是这样)。不管怎么说,这个可视化似乎对一些难以理解使用SQL连接的人有帮助。每个可视化都有其局限性。

方格旗图

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

这张图最初是由Hadley Wickham和Garrett Grolemund在他们的书中创建的 “R for Data Science”.的章节中可以找到该图。‘Relational data’.

我在下面展示的作弊表中重新制作了这些图表,但我也创建了一个Github资源库,以便你可以下载图片 here.

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

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

为什么我喜欢方格旗图?

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

  • 比连接图更准确地表示一个连接,因为它的主键具有相同的颜色和数字。
  • 为每个表显示1个额外的数值列,以帮助可视化除主键列之外的列中的数据所发生的情况。
  • 连接线有助于简化视觉,使其容易看到连接行。
  • 与连接图类似,连接产生的输出表显示在右边
  • 在适用的情况下会显示空值,这正是在SQL中执行连接时的情况
  • 可以显示交叉连接,与维恩图相比,这是一个优势。
  • 显示了SQL语法供参考,类似于维恩图的小抄。here

我仍然相信维恩图对于可视化SQL连接是很有用的,但它们所能代表的范围和准确性是有限的。希望这些格子旗图能够成为你学习SQL时的一个重要参考。

来源:

https://www.toutiao.com/article/7084420955828765192/?log_from=52a1ecb617681_1649639265337

“IT大咖说”欢迎广大技术人员投稿,投稿邮箱:aliang@itdks.com

来都来了,走啥走,留个言呗~

 IT大咖说  |  关于版权

由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT大咖说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ◆ 争论双方的关键点
  • ◆ 维恩图的一个替代解决方案
  • ◆ 方格旗图
  • ◆ 为什么我喜欢方格旗图?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档