Естественное соединение

Определение

Пусть даны отношения 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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: