Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методическое пособие 522

.pdf
Скачиваний:
6
Добавлен:
30.04.2022
Размер:
2.03 Mб
Скачать

Декартово произведение

RxS – операция декартового произведения определяет новое отношение, которое является результатом конкатенации (сцепления) каждого кортежа из отношения R с каждым кортежем из отношения S.

Операторы выборки и проекции извлекают информацию только из одного отношения. Очевидно, возможно возникновение таких ситуаций, когда нужна некоторая комбинация данных из нескольких отношений. Оператор декартового произведения умножает два отношения, что в результате приводит к созданию другого отношения, состоящего из всех возможных пар кортежей обоих отношений.

Пример.

Создать список всех арендаторов, которые осматривали объекты недвижимости. С указанием сделанных ими комментариев.

(П «Арендатор») ) Х (П («Осмотр») )личн.№, ФИО

№аренд.,№ объекта, коммент.

Здесь перемножаются все кортежи двух отношений: первый – список арендаторов, второй – осмотр.

Результатом будет отношение «Арендатор» (табл. 3.14)

 

 

 

 

Таблица 3.14

 

 

Арендатор

 

Личн.

ФИО

Личн. №

№ объекта

Комментарии

аренд

 

 

 

01

Сидоров Ю.К.

01

01

Нет балкона

01

Сидоров Ю.К.

01

09

Грязный подъезд

01

Сидоров Ю.К.

04

11

Требуется

 

 

 

 

ремонт

04

Рачков П.Л.

01

01

Нет балкона

61

Продолжение таблицы 3.14

Личн.

ФИО

Личн. №

№ объекта

Комментарии

аренд

 

 

 

04

Рачков П.Л.

01

09

Грязный подъезд

04

Рачков П.Л.

04

11

Требуется

 

 

 

 

ремонт

07

Плетнева Р.С.

01

01

Нет балкона

07

Плетнева Р.С.

01

09

Грязный подъезд

07

Плетнева Р.С.

04

11

Требуется

 

 

 

 

ремонт

12

Воронецева

01

01

Нет балкона

 

Н.Н.

 

 

 

12

Воронецева

01

09

Грязный подъезд

 

Н.Н.

 

 

 

12

Воронецева

04

11

Требуется

 

Н.Н.

 

 

ремонт

В результате произведения получается отношение, которое содержит больше информации, чем необходимо. Для получения искомого списка необходимо для этого отношения произвести операцию выборки с извлечением тех кортежей, для которых выполняется условие: данный арендатор осматривал данную недвижимость.

Результатом этой операции будет являться отношение «Арендатор» (табл. 3.15)

 

 

 

 

Таблица 3.15

 

 

Арендатор

 

Личн.

ФИО

Личн. №

Комментарии

 

аренд

объекта

 

01

Сидоров Ю.К.

01

01

Нет балкона

01

Сидоров Ю.К.

01

09

Грязный подъезд

04

Рачков П.Л.

04

11

Требуется ремон

Как мы увидим позднее, комбинация декартового произведения и выборки может быть сведена к одной операции соединения.

62

Объединение

R U S – объединение отношений R и S с кортежами I и J соответственно можно получить в результате их конкатенации с образованием одного отношения с максимальным количеством кортежей (I + J), если кортежи-дубликаты исключены. При этом отношения R и S должны быть совместимы по объединению.

Объединение отношений возможно только в том случае, если совпадают их схемы, т.е. если они имеют одинаковое количество атрибутов с совпадающими доменами. Иначе говоря, отношения должны быть совместимы по объединению. Отметим, что в некоторых случаях для получения двух совместимых по объединению отношений может быть использована операция проекции.

Пример.

Создать список всех городов, в которых имеется отделение компании или объект недвижимости

(П «Отделение») ) U (П («Объекты») )

город

 

город

Результатом

объединения будет отношение «Город»

(табл. 3.16).

 

 

 

 

 

 

Таблица 3.16

 

 

Город

 

 

Город

 

 

 

Воронеж

 

 

 

Липецк

 

 

 

Тамбов

 

 

 

Курск

 

 

 

Ст.Оскол

 

 

63

 

Разность

R – S - разность двух отношений R и S состоит из кортежей, которые имеются в отношении R, но отсутствуют в отношении S. Причем отношения R и S должны быть совместимы по объединению.

Пример.

Создать список всех городов, в которых есть отделения компании, но нет объектов недвижимости, сдаваемых в аренду

«Отделение») ) - (П

(«Объекты») )

город

 

город

Результатом разности будет отношение «Отделение»

(табюл. 3.17).

Таблица 3.17

Отделение

Город

Липецк

Тамбов

Ст.Оскол

Операции соединения

Как правило, пользователя интересует лишь некоторая часть всех комбинаций кортежей декартового произведения, которая удовлетворяет заданному условию. Поэтому вместо декартового произведения обычно используется одна из самых важных операций реляционной алгебры – операция соединения. В результате этой операции создается новое отношение. Операция соединения является производной от операции декартового произведения двух операндов – отношений тех кортежей, которые удовлетворяют условию, указанному в предикате соединения в качестве формулы выборки. С точки зрения эффективной реализации в реляционных СУБД, эта операция является одной из самых трудных и часто оказывается

64

одной из основных причин, вызывающих проблемы с производительностью, свойственной всем реляционным системам.

Существует несколько типов операций соединения:

Тета-соединения ( -join)

Соединение по эквивалентности (equi-join), которое является частным видом тета-соединения.

Естественное соединение (natural-join)

Внешнее соединение (outer-join)

Полусоединение (semi - join)

 

Тета-соединение

R

S

 

F

Операция тета-соединения определяет отношение, которое содержит кортежи из декартового произведения отношений R и S, удовлетворяющие предикату F. Предикат F имеет вид R.a1 S.b1, где вместо может быть указан один из операндов сравнения (<, >, <=, >=, = или –=).

Также, как и в случае с декартовым произведением, степенью тета-соединения называется сумма степеней операндов-отношений R и S. Если предикат F содержит только оператор равенства, то соединение называется соединением по эквивалентности.

Пример (операция соединения по эквивалентности)

Создать список всех арендаторов, которые осматривали объект недвижимости, с указанием их имен и сделанных ими

комментариев.

 

 

 

(«Осмотр») )

 

 

личн.№, ФИО

Персонал.личн. №= Осмотр.личн.№

№аренд.,№ объекта, коммент.

аренд.

аренд.

Ранее для получения этого списка использовались операции декартового произведения и выборки. однако тот же

65

самый результат можно получить с помощью операции соединения по эквивалентности.

Результатом этой операции будет являться следующее отношение (табл. 3.18).

 

 

 

 

 

Таблица 3.18

 

 

Арендатор

 

 

Личн.

 

Личн. №

 

 

ФИО

 

Комментарии

аренд

 

объекта

аренд.

 

 

 

 

 

 

 

 

01

Сидоров Ю.К.

01

 

01

Нет балкона

01

Сидоров Ю.К.

01

 

09

Грязный подъезд

04

Рачков П.Л.

04

 

11

Требуется ремонт

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

R S Естественным соединением называется соединение по эквивалентности двух отношений R и S, выполненное по всем общим атрибутам X , из результатов которого исключается по одному экземпляру каждого общего атрибута.

Степенью естественного соединения называется сумма операндов-отношений R и S минус количество атрибутов x.

Пример.

Создать список всех арендаторов, которые осматривали объекты недвижимости, с указанием их имен и сделанных ими комментариев.

В предыдущем примере для составления этого списка использовалось соединение по эквивалентности, но в нем присутствовало два одинаковых атрибута «личный № арендатора».

Для удаления одного из этих атрибутов можно воспользоваться операцией естественного соединения.

«Арендатор») )

(«Осмотр») )

личн.№, ФИО

№аренд.,№ объекта, коммент.

66

Внешнее соединение

Зачастую при соединении двух отношений кортеж из одного отношения не находит соответствующего кортежа в другом отношении. Иначе говоря, в столбцах соединения оказываются несовпадающие значения. Может потребоваться, чтобы строка из одного отношения была представлена в результате соединения, даже если в другом отношении не совпадающего значения. Эта цель может быть достигнута с помощью внешнего соединения.

R S Левым внешним соединением называется соединение, при котором кортежи отношения R, не имеющие совпадающих значений в общих столбцах отношения S, также включаются в результирующее отношение.

Для обозначения отсутствующих значений во втором отношении используется определитель NULL. Внешнее соединение становится все более распространенным в реляционных СУБД, к тому же в настоящее время оно является оператором. Включенным в новый стандарт SQL. Преимуществом внешнего соединения является то, что при таком соединении сохраняется исходная информация, т.е. внешнее соединение сохраняет кортежи, которые были бы утрачены при использовании других типов соединения.

Пример (Левое внешнее соединение)

Создать отчет о ходе проведении осмотров объектов недвижимости.

В данном случае необходимо создать отношение, состоящее как из перечня осмотренных клиентами объектов недвижимости (с приведением их комментариев по этому поводу), так и перечня объектов недвижимости, которыееще не осматривались. Это можно сделать с помощью следующей операции

(П («Объекты») ) («Осмотр») № объекта, город, улица

67

Результатом этой операции будет являться следующее отношение (табл. 3.19).

 

 

 

 

 

Таблица 3.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.

Преимущество полусоединения заключается в том, что оно позволяет сократить количество кортежей, которое нужно обработать для получения соединения. Это особенно полезно при вычислении соединений в распределенных системах.

68

Пример.

Создать отчет, содержащий полную информацию обо всех сотрудниках, работающих в отделении компании, расположенном в городе Воронеже.

«Отделения» «Персонал» Отделения.личн.№ = Персонал.личн. № and город = «Воронеж»

Результатом этой операции будет являться отношение представленное в табл. 3.20.

Пересечение

R S Операция пересечения определяет отношение, которое содержит кортежи, присутствующие как в отношении R, так и в отношении S. Отношения R и S должны быть совместимы по объединению

Пример.

Создать список всех городов, в которых имеется отделение компании и объект недвижимости

(П «Отделение») ) U (П («Объекты») )

город город

Результатом пересечения будет отношение «Отделение» (табл. 3.21).

69

Таблица 3.20

Сотрудники

Лич

Имя, отч.

Фами

Адрес

Телефон

Долж-

Пол

Дата

Зарпл

№ страх

н.

 

лия

 

 

ность

 

рожд.

ата

 

отдел

 

 

 

 

 

 

 

 

 

ения

45

Юрий

Иван

Воронеж,

56-87-88

менед

м

21.89.56

15000

4567990

В5

 

Иванови

ов

Пр-т

 

жер

 

 

 

 

 

 

ч

 

Революции,

 

 

 

 

 

 

 

 

 

 

д. 8, кв. 23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

78

Сергей

Лосев

Воронеж,

13-54-78

менед

м

09.06.70

2100

5678904

В5

 

Андрееви

 

ул. Беговая,

 

жер

 

 

 

 

 

 

ч

 

д.89

 

 

 

 

 

 

 

01

Николай

Петр

Воронеж,

56-89-56

менед

м

08.11.68

3500

4637892

В5

 

Николаев

ов

ул. Ленина,

 

жер

 

 

 

 

 

 

ич

 

д.78, кв.13

 

 

 

 

 

 

 

08

Иван

Смир

Воронеж,

13-98-99

менед

ж

10.05.61

2300

8765435

В5

 

Петрович

нов

ул. Донская,

 

жер

 

 

 

 

 

 

 

 

д.156

 

 

 

 

 

 

 

Таблица 3.21

Отделение

Город

Воронеж

Курск

70