Базы данных | страница 28
r>1 × Инструменты [Код инструмента, Имя инструмента] ≔ r>2 (Код поставщика, Имя поставщика, Город поставщика, Код инструмента, Код инструмента, Имя инструмента);
Получившийся результат обозначим r>2, дублирующиеся атрибуты исключаем:
r>1 × Инструменты [Код инструмента, Имя инструмента] ≔ r>2 (Код поставщика, Имя поставщика, Город поставщика, Код инструмента, Имя инструмента);
Заметим, что из отношения Инструменты мы берем только два атрибута: «Код инструмента» и «Имя инструмента». Чтобы это осуществить мы, как можно заметить из записи отношения r>2, применили унарную операцию проекции: Инструменты [Код инструмента, Имя инструмента], т. е., если бы отношение Инструменты было представлено в виде таблицы, результатом этой операции проекции стали бы два первых столбца с заголовками соответственно «Код инструмента» и «Имя инструмента».
Интересно заметить, что два первых шага, нами уже рассмотренных, являются достаточно общими, т. е. они могут быть использованы и для реализации каких-либо других запросов.
А вот два следующих пункта, в свою очередь, представляют собой конкретные шаги для достижения поставленной перед нами конкретной задачи.
3. Напишем унарную операцию выборки по условию <«Имя инструмента» = «Плоскогубцы»> применительно к отношению r>2, полученному в предыдущем пункте. А к результату этой операции применим, в свою очередь, унарную операцию проекции [Код поставщика, Имя поставщика, Город поставщика], для того чтобы получить все значения этих атрибутов, потому что именно эту информацию нам и требуется получить исходя из заказа.
Итак:
(σ<Имя инструмента = «Плоскогубцы»> r>2) [Код поставщика, Имя поставщика, Город поставщика] ≔ r>3 (Код поставщика, Имя поставщика, Город поставщика, Код инструмента, Имя инструмента).
В результирующем отношении, обозначенном через r>3, оказались только те поставщики (со всеми своими опознавательными данными), которые поставляют инструменты с родовым именем «Плоскогубцы». Но нам в силу заказа необходимо выделить тех поставщиков, которые, наоборот, не поставляют таких инструментов. Поэтому перейдем к следующему действию нашего алгоритма и запишем последнее выражение реляционной алгебры, которое и даст нам искомую информацию.
4. Сначала составим разность отношения «Поставщики» и отношения r>3, а после применения этой бинарной операции применим унарную операцию проекции на атрибуты «Имя поставщика» и «Город поставщика».
(Поставщики \ r>3) [Имя поставщика, Город поставщика] ≔