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

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