- •Содержание
- •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.3. Проекции.
|
Операция проекции работает с одним отношением и определяет новое отношение, содержащее вертикальное подмножество отношения , создаваемое посредством извлечения значений указанных атрибутов и исключения из результата строк-дубликатов. |
ПРИМЕР.
Составьте список библиотекарей с указанием табельного номера (ClockNumber), фамилии (FamilyNamе), имени (Name), отчества (Patronymic) и домашнего телефона (HomePhone).
В этом примере операция проекции определяет новое отношение, которое будет содержать только атрибуты ClockNumber, FamilyNamе, Name, Patronymic и HomePhone отношения Librarians, размещенные в указанном порядке. Результат выполнения этой операции показан в табл. 7.2.
Таблица 7.2.
Проекция отношения Librarians по атребутам ClockNumber, FamilyNamе, Name, Patronymic и HomePhone
ClockNumber |
FamilyNamе |
Name |
Patronymic |
HomePhone |
28 |
Иванова |
Елена |
Владимировна |
52-07-75 |
12 |
Николаенко |
Любовь |
Николаевна |
46-32-19 |
187 |
Иноземцева |
Иванна |
Модестовна |
775-34-00 |
83 |
Мальцева |
Диана |
Петровна |
29-06-15 |
10 |
Сызранцева |
Татьяна |
Игоревна |
370-98-22 |
100 |
Ставка |
Лилия |
Ивановна |
22-00-01 |
7.2.4. Декартово произведение.
|
Операция декартового произведения определяет новое отношение, которое является результатом конкатенации (т.е. сцепления) каждого кортежа из отношения с каждым кортежем из отношения . |
Операторы выборки и проекции извлекают информацию только из одного отношения. Очевидно, возможно возникновение таких ситуаций, когда нужна некоторая комбинация данных из нескольких отношений. Оператор декартового произведения умножает два отношения, что в результате приводит к созданию другого отношения, состоящего из всех возможных пар кортежей обоих отношений. Следовательно, если одно отношение имеет кортежей и атрибутов, а другое — кортежей и атрибутов, то отношение с их декартовым произведением будет содержать кортежей и атрибутов. Исходные отношения могут содержать атрибуты с одинаковыми именами. В таком случае имена атрибутов будут содержать названия отношений в виде префиксов для обеспечения уникальности имен атрибутов в отношении, полученном как результат выполнения операции декартового произведения.
ПРИМЕР.
Создайте список всех читателей, которые когда-либо брали книги в библиотеке.
Результаты выполнения этой операции показаны в табл. 7.3.
Таблица 7.3.
Декартово произведение сокращенного варианта отношений Reader и BookGiveOutRecord (использованы только некоторые атрибуты).
Readers.Code |
FamilyName |
Name |
BookGiveOutRecord.Code |
ReaderCode |
InventoryCode |
1 |
Иванов |
Петр |
1 |
2 |
6 |
1 |
Иванов |
Петр |
2 |
3 |
4 |
1 |
Иванов |
Петр |
3 |
6 |
3 |
1 |
Иванов |
Петр |
4 |
4 |
6 |
|
|
|
|
|
|
2 |
Федорец |
Ирина |
1 |
2 |
6 |
2 |
Федорец |
Ирина |
2 |
3 |
4 |
2 |
Федорец |
Ирина |
3 |
6 |
3 |
2 |
Федорец |
Ирина |
4 |
4 |
6 |
|
|
|
|
|
|
3 |
Ильин |
Иван |
1 |
2 |
6 |
3 |
Ильин |
Иван |
2 |
3 |
4 |
3 |
Ильин |
Иван |
3 |
6 |
3 |
3 |
Ильин |
Иван |
4 |
4 |
6 |
|
|
|
|
|
|
4 |
Суренко |
Дмитрий |
1 |
2 |
6 |
4 |
Суренко |
Дмитрий |
2 |
3 |
4 |
4 |
Суренко |
Дмитрий |
3 |
6 |
3 |
4 |
Суренко |
Дмитрий |
4 |
4 |
6 |
|
|
|
|
|
|
5 |
Коршунова |
Наталья |
1 |
2 |
6 |
5 |
Коршунова |
Наталья |
2 |
3 |
4 |
5 |
Коршунова |
Наталья |
3 |
6 |
3 |
5 |
Коршунова |
Наталья |
4 |
4 |
6 |
|
|
|
|
|
|
6 |
Носенко |
Олег |
1 |
2 |
6 |
6 |
Носенко |
Олег |
2 |
3 |
4 |
6 |
Носенко |
Олег |
3 |
6 |
3 |
6 |
Носенко |
Олег |
4 |
4 |
6 |
В таком виде это отношение содержит больше информации, чем необходимо. Например, первый кортеж этого отношения содержит разные значения атрибутов Readers.Code и ReaderCode. Для получения искомого списка необходимо для этого отношения произвести операцию выборки с извлечением тех кортежей, для которых выполняется равенство Readers.Code = ReaderCode. Полностью эта операция выглядит так, как показано ниже.
Результат выполнения этой операции показан в табл. 7.4. Как мы вскоре увидим, комбинация декартового произведения и выборки может быть сведена к одной операции соединения.
Таблица 7.4.
Ограниченное декартово произведение сокращенного варианта отношений Reader и BookGiveOutRecord (использованы только некоторые атрибуты).
Readers.Code |
FamilyName |
Name |
BookGiveOutRecord.Code |
ReaderCode |
InventoryCode |
2 |
Иванов |
Петр |
1 |
2 |
6 |
3 |
Федорец |
Ирина |
2 |
3 |
4 |
6 |
Ильин |
Иван |
3 |
6 |
3 |
4 |
Суренко |
Дмитрий |
4 |
4 |
6 |