
- •Содержание
- •7.1. Реляционные языки.
- •7.2. Реляционная алгебра.
- •7.2.1. Основные понятия.
- •7.2.2. Выборка (или ограничение).
- •7.2.3. Проекции.
- •Проекция отношения Librarians по атребутам ClockNumber, FamilyNamе, Name, Patronymic и HomePhone
- •7.2.4. Декартово произведение.
- •7.2.5. Объединение.
- •7.2.6. Разность.
- •7.2.7. Операции соединения.
- •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.4. Полусоединение.
|
Операция полусоединения определяет отношение, которое содержит те кортежи отношения , которые входят в соединение отношений и . |
Преимущество полусоединения заключается в том, что оно позволяет сократить количество кортежей, которые нужно обработать для получения соединения. Это особенно полезно при вычислении соединений в распределенных системах. Операцию полусоединения можно сформулировать и с помощью операторов проекции и соединения:
.
Здесь
— это набор всех атрибутов в отношении
.
На самом деле это полутета-соединение,
причем следует отметить, что существуют
полусоединения по эквивалентности и
полуестественные соединения.
ПРИМЕР.
Создайте отчет, содержащий полную информацию обо всех читателях по имени «Дмитрий», которые когда-либо брали книги в библиотеке
Если нас интересуют, только атрибуты отношения Readers, то в таком случае мы можем использовать следующую операцию полусоединения, которая приводит к созданию отношения, приведенного в табл. 7.9.
Таблица 7.9.
Результат полусоединения отношений Reader и BookGiveOutRecord.
Code |
FamilyNamе |
Name |
Patronymic |
ReaderCardNumber |
PasportCode |
Job |
Post |
Note |
4 |
Суренко |
Дмитрий |
Павлович |
543 |
6 |
ДГУ, каф. геофизики |
Ст. преподава-тель |
blob |
7.2.8. Пересечение.
|
Операция пересечения определяет отношение, которое содержит кортежи, присутствующие как в отношении , так и в отношении . Отношения и должны быть совместны по объединению. |
Пересечение
можно сформулировать и на основе
оператора разности множеств:
.
7.2.9. Деление.
Оператор
деления может быть полезен в случае
запросов особого типа, которые довольно
часто встречаются в приложениях баз
данных. Предположим, что отношение
определено на множестве атрибутов
,
а отношение
— на множестве атрибутов
,
причем
(т.е.
является подмножеством
).
Пусть
,
т.е.
является множеством атрибутов отношения
,
которые не являются атрибутами отношения
.
Тогда определение оператора деления
будет выглядеть следующим образом.
|
Результатом оператора деления является набор кортежей отношения , определенных на множестве атрибутов , которые соответствуют комбинации всех кортежей отношения . |
Этот оператор можно сформулировать и на основе других основных операторов:
ПРИМЕР.
Создайте список всех читателей, которые родились после 31 декабря 1960 года.
Для решения поставленной задачи сначала следует с помощью оператора выборки выполнить поиск в отношении PasportData всех кодов паспортов, в которых дата рождения указана после 31 декабря 1960 года (результат этой операции указан в таблице 7.10). Затем последствием проекции получить только номера кодов паспортов и кодов читателей из отношения Readers (результат этой операции представлен в табл. 7.11). После этого нужно применить приведенный ниже оператор деления и получить новое отношение, представленное в таблице 7.12.
Таблица 7.10.
Результат применения
к отношению PasportData
операции выборки
.
Code |
3 |
4 |
5 |
7 |
8 |
12 |
Таблица 7.11.
Результат применения
проекции
к отношению PasportData.
Code |
PasportCode |
1 |
4 |
2 |
1 |
3 |
11 |
4 |
6 |
5 |
8 |
6 |
5 |
Таблица 7.12.
Результат применения операции деления к двум предыдущим операциям.
Code |
1 |
5 |
6 |