Содержание
В главе использована книга [DATE6].
На схеме Рисунок 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;