Базы данных | страница 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) [Имя поставщика, Город поставщика] ≔