Глава 24. Практическая работа "Реляционная алгебра"

Содержание

24.1. Постановка задачи
24.2. Варианты заданий
24.2.1. Вариант 1
24.2.2. Вариант 2
24.2.3. Вариант 3
24.2.4. Вариант 4
24.2.5. Вариант 5
24.2.6. Вариант 6
24.2.7. Вариант 7
24.2.8. Вариант 8
24.2.9. Вариант 9
24.2.10. Вариант 10
24.2.11. Вариант 11
24.2.12. Вариант 12
24.2.13. Вариант 13
24.2.14. Вариант 14
24.2.15. Вариант 15
24.2.16. Вариант 16
24.2.17. Вариант 17
24.2.18. Вариант 18
24.2.19. Вариант 19
24.2.20. Вариант 20
24.2.21. Вариант 21
24.2.22. Вариант 22
24.2.23. Вариант 2

В главе использована книга [DATE6].

24.1. Постановка задачи

На схеме Рисунок 23.1, «База данных Поставка» представлена база данных Поставка. Поставщик S однозначно определяется номером поставщика S#, товар P однозначно определяется номером товара P#, проект J однозначно определяется номером проекта J#. Значение кортежа отношения поставка SPJ следующее: определенный поставщик поставляет определенный товар для определенного проекта в определенном количестве (комбинация S# P # J# уникальна для SPJ).

Используя данные Рисунок 23.1, «База данных Поставка» и Пример 23.1, «Определение данных для базы данных Поставка», можно написать для следующих словесных запросов к базе данных Поставка соответствующее алгебраическое выражение, необходимое для выполнения этого запроса:

1. Получить полную информацию о проектах: J

2. Получить полную информацию обо всех проектах в Енисейске: JWHERECITY=‘Енисейск’

3. Получить все сочетания “цвет товара-город товара”: P [COLOR, CITY]

4. Получить все имена товаров: P [PNAME]

5. Получить номера поставщиков, которые обеспечивают проект J1: (SPJWHEREJ#=‘J1’) [S#]

6. Получить имена поставщиков, что поставляют товар P1: ( (SPJ JOIN S) WHERE P#=‘P1’) [SNAME]

Или более подробно:

Соединение SPJ и S осуществляется по номерам поставщиков S#, т.е. каждый кортеж SPJ дополняется информацией поставщиков T1:= SPJ JOIN S;

Из соединения T1 выбираются кортежи в которых значение P# равно P1: T2:= T1 WHERE P#=‘P1’;

Выполняется проекция выборки Т2 по атрибуту SNAME : T3:= T2 [SNAME];

7. Получить имена поставщиков, которые поставляют товар красного цвета

((( P WHERE COLOR=‘Красный’) JOIN SPJ) [S#] JOIN S) [SNAME]

Или более подробно:

Выборка кортежей в который значение COLOR красный: T1:= P WHERE COLOR=‘Красный’;

Соединение с SPJ осуществляется по номеру товара P# : T2:=T1 JOIN SPJ;

Проекция соединения Т2 по атрибуту номер поставщика S# : T3:=T2 [S#];

Соединение с S по номеру поставщика: T4:=T3 JOIN S;

Проекция соединения по SNAME: T5:= T4 [SNAME];

8. Получить номера товаров, поставляемых или поставщиком из Красноярска или для проекта из Красноярска

(SPJ JOIN (S WHERE CITY=‘Красноярск’)) [P#] UNION (SPJ JOIN (J WHERE CITY=‘Красноярск’)) [P#]

Или более подробно:

T1:= S WHERE CITY=‘Красноярск’;

T2:=SPJ JOIN T1;

T3:=T2 [P#];

T4:= J WHERE CITY=‘Красноярск’;

T5:=SPJ JOIN T4;

T6:=T5 [P#];

T7:= T3 UNION T6;