Определение
Пусть даны отношения A(A1, A2, …, An, X1, X2, …, Xp) и B(X1, X2, …, Xp, B1, B2, …, Bm), имеющие одинаковые атрибуты X1, X2, …, Xp (т.е. атрибуты с одинаковыми именами и определенные на одинаковых доменах). Тогда естественным соединениемотношений A и B называется отношение с заголовком (A1, A2, …, An, X1, X2, …, Xp, B1, B2, …, Bm) и телом, содержащим множество кортежей (a1, a2, …, an, x1, x2, …, xp, b1, b2, …, bm), таких, что (a1, a2, …, an, x1, x2, …, xp)ÎA и (x1, x2, …, xp, b1, b2, …, bm)ÎB.
Естественное соединение настолько важно, что для него используют специальный синтаксис: A JOIN B
Замечание. В синтаксисе естественного соединения не указываются, по каким атрибутам производится соединение. Естественное соединение производится по всем одинаковым атрибутам.
Замечание. Естественное соединение эквивалентно следующей последовательности реляционных операций:
1. Переименовать одинаковые атрибуты в отношениях
2. Выполнить декартово произведение отношений
3. Выполнить выборку по совпадающим значениям атрибутов, имевших одинаковые имена
|
|
4. Выполнить проекцию, удалив повторяющиеся атрибуты
5. Переименовать атрибуты, вернув им первоначальные имена
Замечание. Можно выполнять последовательное естественное соединение нескольких отношений. Нетрудно проверить, что естественное соединение (как, впрочем, и соединение общего вида) обладает свойством ассоциативности, т.е. (A JOIN B) JOIN C = A JOIN (B JOIN C), поэтому такие соединения можно записывать, опуская скобки: A JOIN B JOIN C.
Пример В предыдущем примере ответ на вопрос "какие детали поставляются поставщиками", более просто записывается в виде естественного соединения трех отношений P JOIN PD JOIN D (для удобства просмотра порядок атрибутов изменен, это является допустимым по свойствам отношений):
Номер поставщика PNUM | Наименование поставщика PNAME | Номер детали DNUM | Наименование детали DNAME | Поставляемое количество VOLUME |
Иванов | Болт | |||
Иванов | Гайка | |||
Иванов | Винт | |||
Петров | Болт | |||
Петров | Гайка | |||
Сидоров | Болт |
Отношение P JOIN PD JOIN D