- •Содержание
- •7.1. Реляционные языки.
- •7.2. Реляционная алгебра.
- •7.2.1. Основные понятия.
- •7.2.2. Выборка (или ограничение).
- •7.2.3. Проекции.
- •Проекция отношения Librarians по атребутам ClockNumber, FamilyNamе, Name, Patronymic и HomePhone
- •7.2.4. Декартово произведение.
- •7.2.6. Разность.
- •7.2.7. Операции соединения.
- •7.2.5. Объединение.
- •7.2.7.1. Тета-соединение.
- •7.2.7.2. Естественное соединение.
- •7.2.7.3. Внешнее соединение.
- •7.2.7.4. Полусоединение.
- •7.2.8. Пересечение.
- •7.2.9. Деление.
- •Контрольные вопросы:
7.2.7.1. Тета-соединение.
|
Операция
тета-соединения определяет отношение,
которое содержит кортежи из декартового
произведения отношений
и
,
удовлетворяющие предикату
|
Обозначение тета-соединения можно переписать на основе базовых операций выборки и декартового произведения так, как показано ниже.
Так
же, как и в случае с декартовым
произведением, степенью тета-соединения
называется сумма степеней операндов-отношений
и
.
Если предикат
содержит только оператор равенства
,
то соединение называется соединением
по эквивалентности (equi-join).
ПРИМЕР.
Создайте список всех читателей, которые когда-либо брали книги в библиотеке.
В примере, иллюстрирующем декартово произведение, для получения этого списка использовались операции декартового произведения и выборки. Однако тот же самый результат можно получить с помощью операции соединения по эквивалентности.
Результат выполнения этой операции показан в табл. 7.4.
7.2.7.2. Естественное соединение.
|
Естественным
соединением называется соединение
по эквивалентности двух отношений
и
,
выполненное по всем общим атрибутам
|
Степенью естественного соединения называется сумма степеней операндов-отношений и минус количество атрибутов .
ПРИМЕР.
Создайте список всех читателей, которые когда-либо брали книги в библиотеке.
В примере тета-соединения для составления этого списка использовалось соединение по эквивалентности, но в нем присутствовали два атрибута Readers.Code и ReaderCode, содержащие коды читателей библиотеки. Если бы они имели одинаковое имя, например ReaderCode, то для устранения одного из них можно было бы воспользоваться операцией естественного соединения.
Результат этих операций показан в таблице 7.7.
Таблица 7.7.
Естественное соединение сокращенного варианта отношений Readers и BookGiveOutRecord (использованы только некоторые атрибуты).
ReaderCode |
FamilyName |
Name |
BookGiveOutRecord.Code |
InventoryCode |
2 |
Иванов |
Петр |
1 |
6 |
3 |
Федорец |
Ирина |
2 |
4 |
6 |
Ильин |
Иван |
3 |
3 |
4 |
Суренко |
Дмитрий |
4 |
6 |
7.2.7.3. Внешнее соединение.
Зачастую при соединении двух отношений кортеж из одного отношения не находит соответствующего кортежа в другом отношении. Иначе говоря, в столбцах соединения оказываются несовпадающие значения. Может потребоваться, чтобы строка из одного отношения была представлена в результате соединения, даже если в другом отношении нет совпадающего значения. Эта цель может быть достигнута с помощью внешнего соединения.
|
Левым внешним соединением называется соединение, при котором кортежи отношения , не имеющие совпадающих значений в общих столбцах отношения , также включаются в результирующее отношение. |
Для обозначения отсутствующих значений во втором отношении используется определитель NULL. Внешнее соединение становится все более распространенным в реляционных СУБД, к тому же в настоящее время оно является оператором, включенным в новый стандарт SQL. Преимуществом внешнего соединения является то, что при таком соединении сохраняется исходная информация, т.е. внешнее соединение сохраняет кортежи, которые были бы утрачены при использовании других типов соединения.
ПРИМЕР.
В данном случае необходимо создать список всех читателей, которые зарегистрированы в библиотеке, с указанием инвентарных номеров книг, которые они брали, и другой сопутствующей информацией информацией. Это можно сделать с помощью следующего внешнего соединения.
Результат этой операции показан в таблице 7.8.
Таблица 7.8
Внешнее соединение отношений Readers и BookGiveOutRecord
ReaderCode |
FamilyNamе |
Name |
Patronymic |
OutLibrarianCode |
InventaryCode |
IssueDate |
ReturnDate |
FactReturnDate |
InLibrarianCode |
1 |
Иванов |
Петр |
Иванович |
4 |
6 |
11.09.2004 |
25.09.2004 |
24.09.2004 |
3 |
2 |
Федорец |
Ирина |
Олеговна |
4 |
4 |
02.09.2004 |
16.09.2004 |
11.12.2004 |
3 |
3 |
Ильин |
Иван |
Петрович |
4 |
3 |
02.09.2004 |
16.09.2004 |
16.09.2004 |
1 |
4 |
Суренко |
Дмитрий |
Павлович |
3 |
6 |
30.10.2004 |
13.11.2004 |
10.01.2005 |
6 |
5 |
Коршунова |
Наталья |
Юрьевна |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
6 |
Носенко |
Олег |
Владимирович |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
Строго говоря, в примере показано левое (естественное) внешнее соединение, поскольку в результирующем отношении содержатся все кортежи левого отношения. Существует также правое внешнее соединение, называемое так потому, что в результирующем отношении содержатся все кортежи правого отношения. Кроме того, существует и полное внешнее соединение, в результирующее отношение которого помещаются все кортежи из обоих отношений и в котором для обозначения несовпадающих значений кортежей используются определители NULL.
