Существует ли особый случай соединения SQL, в котором имеет смысл диаграмма Венна? - PullRequest
0 голосов
/ 09 мая 2020

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

Однако моя интуиция все еще говорит, что в этой картине есть некоторая «правда», хотя в общем случае это не формально. Итак, я спрашиваю, есть ли особый случай INNER JOIN и интерпретация приведенной ниже диаграммы или что-то близкое, благодаря чему диаграмма имеет смысл?

enter image description here

1 Ответ

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

Да, существует по крайней мере один особый случай (а может и больше) соединения и диаграмма Венна, тесно связанная с показанной, которая характеризует указанный особый случай соединения. И хотя это особый случай в математическом смысле, на самом деле это очень распространенный вариант использования в реальном мире, вплоть до практически стандартного варианта использования соединения. Так что это заслуживает внимания.

Особый случай соединения, который мы будем рассматривать, имеет следующие ограничения:

  • Обе объединяемые таблицы имеют уникальные ключи. Назовем их IDa и IDb
  • Условие ON: IDa = IDb

В этом случае мы можем определить два набора SetA и SetB, которые - это наборы всех идентификаторов в столбцах IDa и IDb. Отсюда, поскольку оба набора принадлежат к одному типу, они могут иметь непустое пересечение. Каждый идентификатор на пересечении будет определять запись в результирующей объединенной таблице. Поскольку идентификатор находится на пересечении обоих наборов и поскольку идентификаторы уникальны, он будет соответствовать ровно одной записи в каждой таблице. Таким образом, запись в результирующей таблице будет комбинацией (объединение сопоставлений столбцов в значения) записи в Table A и записи в Table B для этого идентификатора.

Пример

На следующем рисунке показаны две таблицы TableA и TableB, которые удовлетворяют особому случаю и результат объединения:

enter image description here

Точное SQL для соединение:

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

Наборы идентификаторов: 1, 2, 3 и 1, 2, 4 соответственно. Итак, пересечение 1, 2. Поэтому мы выбираем строки с идентификаторами 1 и 2 из обеих таблиц и складываем их вместе, чтобы получить строки в результирующей таблице. На диаграмме Венна эти наборы и их пересечение представлены следующим образом:

enter image description here

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

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

...