Естественное соединение.
Экви-соединение.
Наиболее важные частный случай Q-соединения – это когда Q есть простое равенство. Синтаксис экви-соединения: : R1[R11 = R21] R2.
Пример 8. Пусть имеются отношения R1, R2 и R3, хранящие информацию о студентах, дисциплинах и оценках соответственно.
Таблица 16. Отношение R1(Студенты)
Личный номер | Фамилия студента |
Котова | |
Серова | |
Леонидов |
Таблица 17. R2(Дисциплины)
Код дисциплины | Название дисциплины |
Высшая математика | |
Иностранный язык | |
Философия |
Таблица 18. R3(Оценки)
Личный номер | Код дисциплины | Оценка |
Если необходимо получить из данных отношений информацию, касающуюся всех оценок, полученных студентами, то нужно использовать экви-соединение: R1[личный-номер = личный-номер] R3.
Так как в отношениях имеются одинаковые атрибуты, то сначала необходимо переименовать атрибуты, а потом выполнить экви-соединение:
(R1 rename личный-номер as личный-номер_1) [личный_номер_1 = личный_номер_2]
(R3 rename личный_номер as личный_номер_2)
Но, как правило, такой сложной формой записи не пользуются. Итак, результатом такого экви-соединения является отношение
Таблица 19. Отношение («Какие оценки получены студентами»)
Личный номер (1) | Фамилия студента | Личный номер (2) | Код Дисциплины | Оценка |
Котова | ||||
Котова | ||||
Котова | ||||
Серов | ||||
Серов | ||||
Леонидов |
Замечание: Недостатком экви-соединения является то, что при соединении отношений с одинаковыми атрибутами в результирующем отношении появляются два атрибута с одинаковыми значениями. Избавиться от этого недостатка можно, взяв проекцию по всем атрибутам, кроме одного из дублирующих. Именно так действует естественное соединение.
Пусть даны отношения R1(R11, R12,…,R1n, Z1, Z2,…,Zp) и R2(Z1, Z2,…,Zp R21, R22,…,R2m), имеющие, однако атрибуты Z1, Z2,…,Zp (т.е. атрибуты с одинаковыми именами и определенные на одинаковых доменах). Тогда естественным соединением отношений R1 и R2 называется отношение с заголовком (R11, R12,…,R1n, Z1, Z2,…,Zp, R21, R22,…,R2m) и телом, содержащим множество кортежей (r11, r12,…,r1n, z1, z2,…,zp, r21, r22,…,r2m) таких, что (r11, r12,…,r1n, z1, z2,…,zp,)Î R1 и (z1, z2,…,zp, r21, r22,…,r2m)Î R2.
Для обозначения естественного соединения используется следующий синтаксис: R1 join R2
Замечание: Естественное соединение эквивалентно следующей последовательности реляционных операций:
· переименовать одинаковые атрибуты в отношениях;
· выполнить декартово произведение отношений;
· выполнить выборку по совпадающим значениям атрибутов, имевших одинаковые имена;
· выполнить проекцию, удалив повторяющиеся атрибуты;
· переименовать атрибуты, вернув им первоначальные имена.
Можно выполнять последовательное естественное соединение нескольких отношений. Легко заметить, что естественное соединение обладает свойством ассоциативности: (R1 join R2) join R3 = R1(R2 join R3), в силу чего такие соединения можно записывать в виде: R1 join R2 join R3
Пример 10.Для предыдущего примера ответ на вопрос «Какими студентами получены какие оценки?» можно записать в виде естественного соединения трех отношений R1 join R2 join R3
Таблица 20. Отношение R1 join R2 join R3