Естественное соединение
Пусть даны отношения А(А1, А2,…,Аn, Х1, Х2,…,Хр) и В(Х1, Х2,…,Хр, В1, В2,…,Вm), имеющие одинаковые атрибуты Х1, Х2,…,Хр (т.е. атрибуты с одинаковыми именами и определенные на одинаковых доменах).
Тогда естественным соединением отношений А и В называется отношение с заголовком (А1, А2,…,Аn, Х1, Х2,…,Хр, В1, В2,…,Вm), и телом, содержащим множество соответствующих кортежей.
Естественное соединение настолько важно, что для него используют специальный синтаксис: A JOIN B.
Замечания:
§ В синтаксисе естественного соединения не указываются, по каким атрибутам производится соединение. Естественное соединение производится по всем одинаковым атрибутам.
§ Естественное соединение эквивалентно следующей последовательности реляционных операций:
1. Переименовать одинаковые атрибуты в отношениях
2. Выполнить декартово произведение отношений
3. Выполнить выборку по совпадающим значениям атрибутов, имевших одинаковые имена
4. Выполнить проекцию, удалив повторяющиеся атрибуты
5. Переименовать атрибуты, вернув им первоначальные имена
§ Можно выполнять последовательное естественное соединение нескольких отношений. Естественное соединение (как и соединение общего вида) обладает свойством ассоциативности, т.е. (A JOIN B) JOIN С = A JOIN (B JOIN С), поэтому его можно записать, опуская скобки A JOIN B JOIN С.
Применяя естественное соединение, результат, полученный в таблице 7.6, можно было получить операцией A JOIN B, но с одним условием, атрибут отношения В используемый для связи с отношением А должен иметь имя совпадающее с атрибутом связи отношения А (т.е. Код товара).
Деление.Пусть даны отношения А(Х1,Х2,…,Хn,Y1,Y2,…,Ym) и B(Y1,Y2,…,Ym), причем атрибуты (Y1,Y2,…,Ym) - общие для двух отношений. Делением отношений А на В называется отношение с заголовком (Х1,Х2,…,Хn) и телом, содержащим множество кортежей (х1,х2,…,х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 - Результирующее отношение (А : В)
Номер поставщика |
Дата добавления: 2015-11-18; просмотров: 1171;