Запрос 2.
Запрос 1.
Операции на реляционной БД
Для полученной модели данных, состоящей из трех нормализованных отношений, составим запросы, запишем их в виде формул реляционной алгебры (п.6) и получим результаты.
При составлении запросов и вычислении формул следует помнить о том, что результатом выполнения любой операции над отношением является новое отношение, к которому, в свою очередь, можно применить любую операцию реляционной алгебры. Эта важная идея создания новых таблиц на основе старых позволяет составлять запросы к БД любой сложности.
Сообщить название фирмы-поставщика П1.
Мы получим ответ на этот запрос, если из таблицы ПОСТАВЩИК выделим строку, содержащую сведения об имени поставщика П1. Это можно сделать, выполнив операцию сцепления отношения ПОСТАВЩИК с известной из запроса константой П1 (т.е. выполнив операцию сцепления отношения с одноэлементным множеством {П1}).
ПОСТАВЩИК * {П1}
В результате выполнения операции получим новое отношение, состоящее из единственного кортежа (т.е. таблицу, состоящую из одной строки).
П1 | Восход | Тула |
Полученная строка содержит лишние сведения. Уточним ответ, применив к вновь полученному отношению операцию проекции на атрибут Имя поставщика. Полученная формула и является формулой запроса.
ПОСТАВЩИК * {П1} [Имя поставщика]
В результате будет выделен один столбец. Это и будет ответом на запрос.
Восход |
В каком количестве поставляются изделия И2?
Искомые сведения находятся в таблице ПОСТАВКИ. Аналогично Запросу 1 применим к отношению ПОСТАВКИ операцию сцепления с известной константой И2, а затем спроектируем полученное отношение на атрибут Кол.
ПОСТАВКИ * {И2} [Кол]
Результаты выполнения операций.
П1 П2 | И2 И2 |
Сколько изделий И2 поставляет фирма Заря?
В этом запросе известными являются значения двух атрибутов: Имя поставщика - Заря и номер изделия - И2. Известные и искомые данные находятся в двух таблицах: ПОСТАВЩИК и ПОСТАВКИ, поэтому для ответа на запрос необходимо "привязать" сведения из одной таблицы к сведениям из другой таблицы. Это можно сделать, выполнив операцию сцепления отношений по атрибуту П#.
Запишем формулу запроса.
ПОСТАВЩИК * {Заря} * ПОСТАВКИ * {И2} [Кол]
Определим результаты выполнения каждой из операций.
1.В результате выполнения операции сцепления отношения ПОСТАВЩИК с одноэлементным множеством {Заря} получим новое отношение, содержащее единственный кортеж (т.е. новую таблицу, состоящую из одной строки).
П2 | Заря | Самара |
2.Вторая операция выполняет сцепление полученного отношения, имеющего арность 3, с отношением ПОСТАВКИ, имеющим также арность 3, по одинаковому значению атрибута П#. В результате получим новое отношение арностью 5. В него войдут все кортежи сцепляемых отношений, у которых значение атрибута П# = П2.
П2 | Заря | Самара | И1 | |
П2 | Заря | Самара | И2 |
3.В результате выполнения третьей операции из полученного отношения выберутся строки, в которых значение атрибута И# равно И2.
4.И, наконец, с помощью операции проекции уточним ответ, выделив столбец Кол.
П2 | Заря | Самара | И2 |