Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции БД.doc
Скачиваний:
34
Добавлен:
23.09.2019
Размер:
1.93 Mб
Скачать

Эквисоединение, естественное и -соединение

Мы увидели, что отношения можно соединять по одноимённым атрибутам. Чтобы соединить отношения по различным атрибутам с одинаковыми доменами, требуется выполнить две операции: переименование и соединение. Подобные соединения с переименованиями встречаются очень часто, поэтому эту пару операций разумно представить одной.

Определение. Пусть r(R), s(S) – отношения, AiR , Bi S , dom(Ai) = dom(Bi), 1  in (Ai и Bi могут быть одинаковыми). Эквисоединением r и s по A1, A2,…,Am и B1, B2,…, Bm называется отношение q(RS) = {t | tr r, tss, t(R) = tr, t(S) = ts, t(Ai) = t(Bi)}.

В дальнейшем операцию эквисоединения отношений r и s по A1, A2,…,Am и B1, B2,…, Bm будем обозначать так:

r [A1 = B1, A2 = B2,…, Am = Bm] s.

Пример

З

приписка (пилот аэропорт)

Алексеев

Норильск

Борисов

Казань

Воронин

Казань

Грушин

Москва

Дорофеев

Омск

Егоров

Чебоксары

маршрут (рейс пункт отправления пункт назначения)

84

Чебоксары

Норильск

109

Норильск

Омск

117

Казань

Москва

213

Норильск

Москва

214

Москва

Норильск

аданы отношения маршрут, в котором указаны аэропорты отправления и назначения авиарейсов, и приписка, которое определяет аэропорт, где работает пилот. Следует назначить пилотов на рейсы из аэропорта их приписки. Задача решается эквисоединением по столбцам пункт отправления и аэропорт.

К

маршрут [пункт отправления = аэропорт] приписка =

= назначение (рейс

пункт отправления

пункт назначения

пилот

аэропорт)

84

Чебоксары

Норильск

Егоров

Чебоксары

109

Норильск

Омск

Алексеев

Норильск

117

Казань

Москва

Борисов

Казань

117

Казань

Москва

Воронин

Казань

213

Норильск

Москва

Алексеев

Норильск

214

Москва

Норильск

Грушин

Москва

онец примера

Уточним определение. Не исключается существования A такого, что (AR) & (AS). Потребуем, чтобы в эквисоединении все атрибуты различались по именам, то есть, чтобы RS = . Это не сильное ограничение, так как путем переименования атрибутов в s и r можно добиться пустого пересечения их схем.

Замечание. Если в эквисоединении нет сравнений, то оно совпадает с декартовым произведением: r [ ] s = rs.

Соединение, определённое ранее, иногда называют естественным.

Утверждение. Эквисоединение может быть выражено через переименование и естественное соединение.

Естественное соединение также может быть выражено через эквисоединение. Например, для отношений r(A, B, C), s(B, C, D), атрибутов B и C с dom(B) = dom(B), dom(C) = dom(C): rs = (r [B = B, C = C] B, CB, C (s) ).

До сих пор при сравнении значений доменов мы пользовались лишь равенством, но их можно сравнивать, используя и неравенства. В общем случае вводится  – множество символов бинарных операций над парами доменов.

Определение. Если знак сравнения , а A и B – атрибуты, то говорят, что A -сравним с B, если – бинарное отношение в dom(A)  dom(B).

Определение. Атрибут A -сравним, если он -сравним сам с собой.

Расширим оператор выбора, используя понятие -сравнимости. Пусть r – отношение со схемой R, атрибут AR, adom(A) – константа, , A -сравним. Тогда расширенный оператор выбора Aa(r) = {tr | t(A)  a}. Аналогично этот оператор определяется для случая сравнения между атрибутами, с учетом того, что BR, dom(B)=dom(A): AB = {tr | t(A)t(B)}.

Пример

О

время (рейс время вылета время прибытия)

84

15:00

17:30

+

109

11:40

12:00

*

117

22:00

00:30

*

+

213

07:00

08:00

*

214

14:00

16:00

+

тношение время определяет время вылета рейса из аэропорта отправления и время его прибытия в аэропорт назначения. Применим оператор выбора для нахождения рейсов, у которых время прибытия не превышает 12 часов, и рейсов, у которых время вылета меньше времени прибытия, по крайней мере, на 2 часа (обозначим соответствующую операцию как <<). Кортежи первой выборки (s), пометим символом «*», второй (q) – «+».

s = время прибытия 12.00 (время)

q = время вылета << время прибытия (время)

Конец примера

Эквисоединение – это расширенное соединение для сравнения разных столбцов на равенство. Можно не ограничиваться равенством, а воспользоваться любой операцией .

Определение. Пусть r(R) и s(S) – отношения, для которых RS = , и пусть AR и BS -сравнимы для . Тогда -соединением называется отношение q(RS) = {t | trr, tss, t(R) = tr, t(S) = ts, tr(A)ts(B)}, которое обозначается q(RS) = r [AB] s.

П

время_ab (рейс вылет прилёт)

60

9:40

11:45

91

12:50

14:47

112

16:05

18:15

306

20:30

22:25

420

21:15

23:11

время_bc (рейс вылет прилёт)

11

8:30

9:52

60

12:25

13:43

156

16:20

17:40

158

19:10

20:35

ример

В приведенных отношениях заданы времена вылета и прилета самолетов, совершающих рейсы соответственно из пункта a в пункт b и из пункта b в пункт c. Требуется узнать, какие рейсы могут проходить транзитом из города a в c через b.

транзит_ac = время_ab [прилёт < вылет] N, прилёт, вылетN, прилёт, вылет(время_bc) =

= транзит_ac

(N

вылет

прилёт

N

вылет

прилёт)

60

9.40

11.45

60

12.25

13.43

60

9.40

11.45

156

16.20

17.40

60

9.40

11.45

158

19.10

20.35

91

12.50

14.47

156

16.20

17.40

91

12.50

14.47

158

19.10

20.35

112

16.05

18.15

158

19.10

20.35

Конец примера