Можем ли мы использовать диаграммы Венна для характеристики взаимосвязи между INNER, OUTER, LEFT и RIGHT JOINs? - PullRequest
0 голосов
/ 09 мая 2020

Связанный вопрос и ответ ( Уместно ли использовать диаграммы Венна для изображения SQL Соединений, где таблицы представляют собой наборы? ) демонстрируют, что в целом нецелесообразно характеризовать соединения следующими Диаграмма Венна:

enter image description here

Однако моя интуиция все еще подсказывает, что диаграммы Венна могут быть полезны для изображения некоторых отношений между внутренними / внешними / левыми / правыми соединениями. Можно ли формализовать эту интуицию?

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Я согласен с ответами на другой вопрос, который указывает, что диаграммы Венна не подходят для объяснения JOIN s.

Основная причина в том, что диаграммы Венна ДЕЙСТВИТЕЛЬНО представляют что-то полезное и что-то важное для понимания множеств - и, следовательно, SQL, который основан на наборах. То, что обозначено как "INNER JOIN", на самом деле INTERSECT. То, что обозначено как «ПОЛНОЕ СОЕДИНЕНИЕ», на самом деле UNION.

Следовательно, я думаю, что использование диаграмм, которые точно изображают операторы множества и называют их чем-то другим, сбивает с толку. Операторы множества и JOIN - это разные вещи.

Если вы хотите визуализировать соединения, вам действительно понадобятся дополнительные измерения.

0 голосов
/ 09 мая 2020

Да. Существует диаграмма Венна, которая имеет смысл характеризовать отношения между различными типами соединений. Однако в вопросе показана не диаграмма Венна. Это неуместно, как показано в связанном вопросе. Итак, какая диаграмма Венна подходит?

Хорошо, допустим, мы уже определили множества, представляющие результат левого и правого соединения. Назовем эти наборы Left и Right. Тогда у нас есть следующие отношения:

  • LeftRight = Полное внешнее соединение
  • LeftRight = Внутреннее соединение

В виде диаграммы Венна:

enter image description here

Педагогическое примечание

Хотя эти диаграммы Венна точно характеризуют соотношение между различными типами объединений их недостаточно для определения объединений. Так что, если вы хотите разобраться в принципах объединения с нуля, это не место для начала. Но если вы уже знакомы с тем, что означают JOIN, и ищете объединяющую картину, которая связывает воедино все различные типы соединений, то вот оно.

Конечно, технически можно сказать, что это позволяет нам определять внутреннее и внешнее соединение в терминах соединений LEFT и RIGHT. Но соединения LEFT и RIGHT сами по себе сложнее определить, чем соединения INNER, поэтому для этой цели диаграмма имеет ограниченное использование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...