metBD (1084482), страница 9
Текст из файла (страница 9)
Пример.
Создать список всех арендаторов, которые осматривали объекты недвижимости, с указанием их имен и сделанных ими комментариев.
В предыдущем примере для составления этого списка использовалось соединение по эквивалентности, но в нем присутствовало два одинаковых атрибута «личный № арендатора».
Для удаления одного из этих атрибутов можно воспользоваться операцией естественного соединения.
( П «Арендатор») ) (П («Осмотр») )
личн.№, ФИО №аренд.,№ объекта, коммент.
Внешнее соединение
Зачастую при соединении двух отношений кортеж из одного отношения не находит соответствующего кортежа в другом отношении. Иначе говоря, в столбцах соединения оказываются несовпадающие значения. Может потребоваться, чтобы строка из одного отношения была представлена в результате соединения, даже если в другом отношении не совпадающего значения. Эта цель может быть достигнута с помощью внешнего соединения.
R S Левым внешним соединением называется соединение, при котором кортежи отношения R, не имеющие совпадающих значений в общих столбцах отношения S, также включаются в результирующее отношение.
Д ля обозначения отсутствующих значений во втором отношении используется определитель NULL. Внешнее соединение становится все более распространенным в реляционных СУБД, к тому же в настоящее время оно является оператором. Включенным в новый стандарт SQL. Преимуществом внешнего соединения является то, что при таком соединении сохраняется исходная информация, т.е. внешнее соединение сохраняет кортежи, которые были бы утрачены при использовании других типов соединения.
Пример (Левое внешнее соединение)
Создать отчет о ходе проведении осмотров объектов недвижимости.
В данном случае необходимо создать отношение, состоящее как из перечня осмотренных клиентами объектов недвижимости (с приведением их комментариев по этому поводу), так и перечня объектов недвижимости, которыееще не осматривались. Это можно сделать с помощью следующей операции
(П («Объекты») ) («Осмотр»)
№ объекта, город, улица
Результатом этой операции будет являться следующее отношение
Таблица 19
№ объекта | Город | Улица | Личн.№ аренд. | Дата осмотра | Комментарии |
01 | Воронеж | Плехановская | 01 | 02.01.03 | Нет балкона |
09 | Воронеж | Ленинградская | 01 | 03.02.03 | Грязный подъезд |
12 | Курск | Ленина | 04 | 12.03.03 | Требуется ремон |
11 | Воронеж | Ленина | NULL | NULL | NULL |
С уществует также правое внешнее соединение , называемое так потому, что в результирующем отношении содержатся все кортежи правого отношения. Кроме того, существует и полное внешнее соединение, в результирующем отношении которого помещаются все кортежи из обоих отношений и в котором для обозначения несовпадающих значений кортежей используются определители NULL.
Полусоединение
R S –
F
Операция полусоединения определяет отношение, которое содержит те кортежи отношения R, которые входят в соединение отношений R и S.
Преимущество полусоединения заключается в том, что оно позволяет сократить количество кортежей, которое нужно обработать для получения соединения. Это особенно полезно при вычислении соединений в распределенных системах.
Пример.
Создать отчет, содержащий полную информацию обо всех сотрудниках, работающих в отделении компании, расположенном в городе Воронеже.
« Отделения» «Персонал»
Отделения.личн.№ = Персонал.личн. № and
город = «Воронеж»
Результатом этой операции будет являться следующее отношение:
Таблица 20
Личн. № | Имя, отч. | Фамилия | Адрес | Телефон | Долж-ность | Пол | Дата рожд. | Зарплата | № страх | № отделения |
45 | Юрий Иванович | Иванов | Воронеж, Пр-т Революции, д. 8, кв. 23 | 56-87-88 | менеджер | м | 21.89.56 | 15000 | 4567990 | В5 |
78 | Сергей Андреевич | Лосев | Воронеж, ул. Беговая, д.89 | 13-54-78 | менеджер | м | 09.06.70 | 2100 | 5678904 | В5 |
01 | Николай Николаевич | Петров | Воронеж, ул. Ленина, д.78, кв.13 | 56-89-56 | менеджер | м | 08.11.68 | 3500 | 4637892 | В5 |
08 | Иван Петрович | Смирнов | Воронеж, ул. Донская, д.156 | 13-98-99 | менеджер | ж | 10.05.61 | 2300 | 8765435 | В5 |
R S Операция пересечения определяет отношение, которое содержит кортежи, присутствующие как в отношении R, так и в отношении S. Отношения R и S должны быть совместимы по объединению
Пример.
Создать список всех городов, в которых имеется отделение компании и объект недвижимости
(П «Отделение») ) U (П («Объекты») )
город город
Результатом пересечения будет отношение
Таблица 21
Город |
Воронеж |
Курск |
Деление
Оператор деления может быть полезен в случае запросов особого типа, котрые довольно часто встречаются в приложениях баз данных.
Если А – множество атрибутов отношения R, а В – отношения S, причем В является подмножеством А и С = А - В.
R/S Результатом оператора деления является набор кортежей отношения R, определенных на множестве атрибутов С, которые соответствуют комбинации всех кортежей отношения S.
Этот оператор можно сформулировать на основе других основных операторов
Т1 = Пс (R)
Т2 = Пс ((SхT1) – R)
T = T1 – T2
Правила преобразования операций реляционной алгебры
Пусть есть три отношения:
R, определенное на множестве атрибутов А={A1,...,AN}
S-B={B1,...,BM}
T – С=(С1,…., СP)
p, q, r – предикаты
L, L1, L2, M, M1, M2, N – наборы атрибутов
-
Операция выборки с конъюнктивным предикатом может быть преобразована в последовательность операций выборки по членам конъюнкции (и наоборот).
(R) = ( ( (R)))
p q r p q r
Этот метод преобразования иногда называют каскадной выборкой. Например
(Персонал) = ( (Персонал) )
№=3 оклад=1500 оклад=1500 №=3
-
Правило коммутативности операций выборки
( (R)) = ( (R))
p q q p
-
В
последовательности операций проекции необходима только последняя из этих операций
П П …. П (R) = П(R)
L M N
-
Правило коммутативности операций выборки и проекции
Если предикат p включает только атрибуты, входящие в список проекции, то операции выборки и проекции будут обладать свойством коммутативности.
П (( (R)) =( (П R))
Ai...Am p p Ai...Am
где р {A1, A2,......, Am}
-
Правило коммутативности операции тета-соединения (и декартового произведения)
R S = S
R
P P
R x S = S x R
О перации соединения по эквивалентности и естественного соединения являются особыми случаями операции тета-соединения, поэтому приведенное выше правило применимо и к этим двум операциям.
-
Правило коммутативности операций выборки и тета-соединения (или декартового произведения).
Если предикат операции выборки включает атрибуты только одного из соединяемых отношений, то операции выборки и соединения (или декартового произведения) будут обладать свойством коммутативности.
(R S) = (R) S
p r p r
(R x S) = ( (R)) x S
p p, где p {A1, A2,......, An}
В альтернативном случае, когда предикат операции выборки представляет собой конъюнкцию предикатов вида (p q ), где предикат p включает в себя атрибуты только отношения R, а предикат q включает атрибуты только отношения S, операция выборки и тета-соединения будут обладать следующим вариантом свойств коммутативности:
(R S) = (R) ( S)
pq r p r q
(R x S) = ( (R)) x ( ( S))
pq p q
-
Правило коммутативности операций проекции и тета-соединения (или декартового произведения)
Если список атрибутов операции проекции имеет вид
L = L1 U L2 , где в подсписок L1 входят атрибуты только отношения R, а в подсписок L2 - атрибуты только отношения S, то в том случае, когда условие соединения содержит только атрибуты отношения L, операции проекции и тета-соединения будут обладать следующим вариантом свойств коммутативности.
П
(R S) = П (R) П (S)
L1 U L2 r L1 r L2
Если условие соединения содержит дополнительные атрибуты, не входящие в отношение L, например, атрибуты
М = М1U M2, где список М1 содержит атрибуты только отношение R, а список М2 – только атрибуты отношения S, то дополнительно потребуется выполнить завершающую операцию проекции:
П
(R S) = П ((П (R)) (П (S))
L1 U L2 r L1 U L2 L1UM1 r L2 U M2
-
П
равило коммутативности операций объединения и пересечения ( но не разности )
R U S = S U R
R S = S R
-
Правило коммутативности операции выборки и операций над отношениями (объединения, пересечения, разности)
( R U S) = (S) U (R)
p p p
(R S) = (S) (R)
p p p
(R - S) = (S) - (R)
p p p
-
Правило коммутативности операций проекции и объединения.
П ( R U S) =П (S) U П (R)
L L L
-
П
равило ассоциативности операций тета-соединения (и декартового произведения).
Операции декартового произведения всегда ассоциативны.
(
R S) T = R (S T)
(R x S) x T = R x (S x T)
-
Правило ассоциативности операций объединения и пересечения (но не операции разности).
(R U S) U T = S U (R U T)