Базы данных. Вводный курс


Внешние соединения - часть 2


Пусть s является результатом операции r1 RIGHT OUTER JOUN r2 WHERE comp (правое внешнее соединение r1 и r2 по условию comp). Тогда Hs = Hr1 union Hr2. Пусть tr1

Br1 и tr2
Br2. Тогда tr1 union tr2
Bs в том и только в том случае, когда comp (tr1 union tr2) = true. Если имеется кортеж tr2
Br2, для которого нет ни одного такого кортежа tr1
Br1, что comp (tr1 union tr2) = true, то tr1null union tr2
Bs, где tr1null – кортеж, соответствующий Hr1, все значения которого являются неопределенными.

Наконец, пусть s является результатом операции r1 FULL OUTER JOUN r2 WHERE comp (полное внешнее соединение r1 и r2 по условию comp). Тогда Hs = Hr1 union Hr2. Пусть tr1

Br1 и tr2
Br2. Тогда tr1 union tr2
Bs в том и только в том случае, когда comp (tr1 union tr2) = true. Если имеется кортеж tr1
Br1, для которого нет ни одного кортежа tr2
Br2, такого, что comp (tr1 union tr2) = true, то tr1 union tr2null
Bs, где tr2null – кортеж, соответствующий Hr2, все значения которого являются неопределенными. Если имеется кортеж tr2
Br2, для которого нет ни одного кортежа tr1
Br1, такого, что comp (tr1 union tr2) = true, то tr1null union tr2
Bs, где tr1null – кортеж, соответствующий Hr1, все значения которого являются неопределенными.

Понятно, что традиционными средствами SQL можно выразить все виды внешних соединений (например, с использованием переключателей), но такие запросы будут очень громоздкими. Компании-производители SQL-ориентированных СУБД пытались обеспечивать выразительные средства внешних соединений путем расширения системы обозначений для операций сравнения. Этот подход был не слишком удачным и не обеспечивал общего решения.

В стандарте языка SQL специфицирован отдельный специализированный подъязык для формирования выражений соединения таблиц. Такие выражения называются соединенными таблицами, и их можно использовать в качестве ссылок на таблицы в списке раздела FROM. Разработчики стандарта SQL не любят мельчить – в языке допускается 14 видов соединений:

  • прямое соединение;
  • внутреннее соединение по условию;
  • внутреннее соединение по совпадению значений указанных одноименных столбцов;
  • естественное внутреннее соединение;
  • левое внешнее соединение по условию;
  • правое внешнее соединение по условию;
  • полное внешнее соединение по условию;
  • левое внешнее соединение по совпадению значений указанных одноименных столбцов;
  • правое внешнее соединение по совпадению значений указанных одноименных столбцов;
  • полное внешнее соединение по совпадению значений указанных одноименных столбцов;
  • естественное левое внешнее соединение;
  • естественное правое внешнее соединение;
  • естественное полное внешнее соединение;
  • соединение объединением.




Начало  Назад  Вперед