Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Неделя 05 Лекция 1 (7).doc
Скачиваний:
4
Добавлен:
13.11.2019
Размер:
412.67 Кб
Скачать

7.2.5. Объединение.

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

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

ПРИМЕР.

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

Для создания совместимых по объединению отношений сначала следует применить операцию проекции, чтобы выделить из отношений Readers и Librarians столбцы с атрибутами FamilyName, исключая в случае необходимости дубликаты. Затем для комбинирования полученных промежуточных отношений следует использовать операцию объединения. Результат выполнения всех этих действий приведен в табл. 7.5.

Таблица 7.5.

Результат объединения двух отношений.

FamilyName

Иванов

Федорец

Ильин

Суренко

Коршунова

Носенко

Иванова

Николаенко

Иноземцева

Мальцева

Сызранцева

Ставка

7.2.6. Разность.

Разность двух отношений и состоит из кортежей, которые имеются

в отношении , но отсутствуют в отношении . Причем отношения и должны быть совместимы по объединению.

ПРИМЕР.

Определите индивидуальные коды читателей, которые ни разу не брали книги в библиотеке.

В данном случае аналогично предыдущему примеру следует создать совместные по объединению отношения Readers и BookGiveOutRecord, выполнив их проекцию по атрибутам Code и ReaderCode. Затем для комбинирования полученных новых отношений следует использовать операцию разности. Результат выполнения этих операций показан в табл. 7.6.

Таблица 7.6.

Разность двух отношений.

ReaderCode

5

6

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

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

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

  • Тета-соединение (Θ-join).

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

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

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

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