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

Пусть даны отношения А(А1, А2,…,Аn, Х1, Х2,…,Хр) и В(Х1, Х2,…,Хр, В1, В2,…,Вm), имеющие одинаковые атрибуты Х1, Х2,…,Хр (т.е. атрибуты с одинаковыми именами и определенные на одинаковых доменах).

Тогда естественным соединением отношений А и В называется отношение с заголовком 1, А2,…,Аn, Х1, Х2,…,Хр, В1, В2,…,Вm), и телом, содержащим множество соответствующих кортежей.

Естественное соединение настолько важно, что для него используют специальный синтаксис: AJOIN B.

Замечания:

§ В синтаксисе естественного соединения не указываются, по каким атрибутам производится соединение. Естественное соединение производится по всем одинаковым атрибутам.

§ Естественное соединение эквивалентно следующей последовательности реляционных операций:

1. Переименовать одинаковые атрибуты в отношениях

2. Выполнить декартово произведение отношений

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

4. Выполнить проекцию, удалив повторяющиеся атрибуты

5. Переименовать атрибуты, вернув им первоначальные имена

§ Можно выполнять последовательное естественное соединение нескольких отношений. Естественное соединение (как и соединение общего вида) обладает свойством ассоциативности, т.е. (A JOIN B) JOIN С = A JOIN (B JOIN С), поэтому его можно записать, опуская скобки A JOIN B JOIN С.

Применяя естественное соединение, результат, полученный в таблице 7.6, можно было получить операцией A JOIN B, но с одним условием, атрибут отношения В используемый для связи с отношением А должен иметь имя совпадающее с атрибутом связи отношения А (т.е. Код товара).

Деление. Пусть даны отношения А(Х12,…,Хn,Y1,Y2,…,Ym) и B(Y1,Y2,…,Ym), причем атрибуты (Y1,Y2,…,Ym) - общие для двух отношений. Делением отношений А на В называется отношение с заголовком 12,…,Хn) и телом, содержащим множество кортежей 12,…,хn), только таких, для которых найдутся все кортежи (y1,y2,…,ym)ÎВ, в отношении А.

Синтаксис операции деления: А DEVIDBY В (А: В)

Замечание. Типичные запросы, реализуемые с помощью операции деления, обычно в своей формулировке имеют слово «все» - «какие поставщики поставляют все детали?».

Таблицы 6.6 и 6.7 нуждаются в логическом дополнении, т.е. нужна таблица, связывающая поставляемые товары и поставщиков (по их кодам). Введем такую таблицу и на ее примере рассмотрим операцию деления.

Таблица 7.7 - Отношение Х «Поставщики-Детали»

Номер поставщика Номер детали
   
   
   
   
   
   

 

Требуется узнать, какой поставщик поставляет все детали. Отношение Х возьмем в качестве делимого, а проекцию таблицы 7 «детали» - Y=B[Номер детали] (таблица 7.8):

 

 

Таблица 7.8 - Отношение Y = B[Номер детали]

 

Номер детали
 
 
 

 

Деление Х DEVIDBY Y дает список номеров поставщиков, поставляющих все детали (таблица 7.9):

 

Таблица 7.9 - Результирующее отношение (А: В)

 

Номер поставщика
 

 


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



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