Пример. Равносоединение и естественное соединение отношений S и SP
Декартово произведение отношений S и SP
S TIMES (SP RENAME S# As SPS#)
S# | SNAME | STATUS | CITY | SPS# | P# | QTY |
S1 | Smith | London | S1 | P1 | ||
S1 | Smith | London | S1 | P2 | ||
S1 | Smith | London | S1 | P3 | ||
S1 | Smith | London | S2 | P1 | ||
S1 | Smith | London | S2 | P2 | ||
S1 | Smith | London | S3 | P2 | ||
S2 | Jones | Paris | S1 | P1 | ||
S2 | Jones | Paris | S1 | P2 | ||
S2 | Jones | Paris | S1 | P3 | ||
S2 | Jones | Paris | S2 | P1 | ||
S2 | Jones | Paris | S2 | P2 | ||
S2 | Jones | Paris | S3 | P2 | ||
S3 | Black | Paris | S1 | P1 | ||
S3 | Black | Paris | S1 | P2 | ||
S3 | Black | Paris | S1 | P3 | ||
S3 | Black | Paris | S2 | P1 | ||
S3 | Black | Paris | S2 | P2 | ||
S3 | Black | Paris | S3 | P2 |
Таблица 1.
Равносоединение отношений S и SP
(S TIMES (SP RENAME S# As SPS#)) WHERE S# = SPS#
S# | SNAME | STATUS | CITY | SPS# | P# | QTY |
S1 | Smith | London | S1 | P1 | ||
S1 | Smith | London | S1 | P2 | ||
S1 | Smith | London | S1 | P3 | ||
S2 | Jones | Paris | S2 | P1 | ||
S2 | Jones | Paris | S2 | P2 | ||
S3 | Black | Paris | S3 | P2 |
Таблица 2.
Естественное соединение отношений S и SP
Если в этом отношении (Таблица 2.) опустить один атрибут, например SPS#, то получим естественное соединение.
((S TIMES (SP RENAME S# As SPS#)) WHERE S# = SPS#){All BUT SPS#} (А)
S# | SNAME | STATUS | CITY | P# | QTY |
S1 | Smith | London | P1 | ||
S1 | Smith | London | P2 | ||
S1 | Smith | London | P3 | ||
S2 | Jones | Paris | P1 | ||
S2 | Jones | Paris | P2 | ||
S3 | Black | Paris | P2 |
Таблица 3.
Выражение (А) эквивалентно выражению S JOIN SP
Получить всю информацию о поставщиках и поставках деталей ‘P2’
(S JOIN SP) WHERE P = ‘P2’ (В)
S# | SNAME | STATUS | CITY | P# | QTY |
S1 | Smith | London | P2 | ||
S2 | Jones | Paris | P2 | ||
S3 | Black | Paris | P2 |
((S JOIN SP) WHERE P = ‘P2’){SNAME} (С)
SNAME |
Smith |
Jones |
Black |
Последнее выражение определяет имена поставщиков детали ‘Р2’. Первым выполняется естественное соединение S и SP по общему атрибуту S#. Затем в результате соединения выбираются кортежи, в которых P# = ‘P2’, и далее выполняется проекция по атрибуту SNAME полученной выборки.
Предыдущее выражение можно преобразовать в логически эквивалентное и более рациональное выражение следующего вида
((SP WHERE P# = ‘P2’) JOIN S){SNAME} (D)
Реляционная алгебра может служить хорошим основанием для оптимизации.
Пример естественного соединения
C D
X | Y | Y | Z | |
A1 | B1 | B1 | C1 | |
A2 | B1 | B2 | C1 | |
A3 | B2 | B3 | C2 |
C JOIN D
X | Y | Z |
A1 | B1 | C1 |
A2 | B2 | C1 |
A3 | B2 | C1 |
Деление.Пусть отношения С и D имеют заголовки {X1, X2, …, XM} {Y1, Y2, …, YN} соответственно. Заголовки не пересекаются. Пусть имеется отношение Я с заголовком {X1, X2, …, XM, Y1, Y2,…, YN}. Результат деления отношения С на D по отношению Z (C DIVIPEBY D PER Z, где С - делимое, D - делитель, Z - отношение-посредник) называется отношение, содержащее такие значения Х из отношения С, для которых соответствующие значения Y из Z включают все значения Y из D.