Естественное соединение
Таблица 18 Отношение PD (Поставки)
Таблица 17 Отношение D (Детали)
Таблица 16 Отношение P (Поставщики)
Номер детали DNUM | Наименование детали DNAME |
1 | Болт |
2 | Гайка |
3 | Винт |
Номер поставщика PNUM | Номер детали DNUM | Поставляемое количество VOLUME |
1 | 1 | |
1 | 2 | |
1 | 3 | |
2 | 1 | |
2 | 2 | |
3 | 1 |
Ответ на вопрос, какие детали поставляются поставщиками, дает экви-соединение . На самом деле, т.к. в отношениях имеются одинаковые атрибуты, то требуется сначала переименовать атрибуты, а потом выполнить экви-соединение. Запись становится более громоздкой:
Обычно, такой сложной формой записи не пользуются. Но как бы то ни было, в результате имеем отношение:
Номер поставщика PNUM1 | Наименование поставщика PNAME | Номер поставщика PNUM2 | Номер детали DNUM | Поставляемое количество VOLUME |
Иванов | ||||
Иванов | ||||
Иванов | ||||
Петров | ||||
Петров | ||||
Сидоров |
Таблица 19 Отношение "Какие детали поставляются какими поставщиками"
Недостатком экви-соединения является то, что если соединение происходит по атрибутам с одинаковыми наименованиями (а так чаще всего и происходит!), то в результатирующем отношении появляется два атрибута с одинаковыми значениями. В нашем примере атрибуты PNUM1 и PNUM2 содержат дублирующие данные. Избавиться от этого недостатка можно, взяв проекцию по всем атрибутам, кроме одного из дублирующих. Именно так действует естественное соединение.
Определение 10. Пусть даны отношения и , имеющие одинаковые атрибуты (т.е. атрибуты с одинаковыми именами и определенные на одинаковых доменах).
Тогда естественным соединением отношений и называется отношение с заголовком и телом, содержащим множество кортежей , таких, что и .
Естественное соединение настолько важно, что для него используют специальный синтаксис:
Замечание. В синтаксисе естественного соединения не указываются, по каким атрибутам производится соединение. Естественное соединение производится по всем одинаковым атрибутам.
Замечание. Естественное соединение эквивалентно следующей последовательности реляционных операций:
- Переименовать одинаковые атрибуты в отношениях
- Выполнить декартово произведение отношений
- Выполнить выборку по совпадающим значениям атрибутов, имевших одинаковые имена
- Выполнить проекцию, удалив повторяющиеся атрибуты
- Переименовать атрибуты, вернув им первоначальные имена
Замечание. Можно выполнять последовательное естественное соединение нескольких отношений. Нетрудно проверить, что естественное соединение (как, впрочем, и соединение общего вида) обладает свойством ассоциативности, т.е.
поэтому такие соединения можно записывать, опуская скобки:
Пример 10. В предыдущем примере ответ на вопрос "какие детали поставляются поставщиками", более просто записывается в виде естественного соединения трех отношений (для удобства просмотра порядок атрибутов изменен, это является допустимым по свойствам отношений):