07.Описание запросов и транзакций (1034731), страница 3
Текст из файла (страница 3)
Подразумевается, что элементарные условия, определённые в таблице запроса, связаны между собой логической операцией 'И'.
Ниже приведён пример описания таблиц конкретного запроса. Предположим, что в проектируемой РСОД в рамках какой-либо транзакции будет выполняться следующий запрос:
найти наименования товаров (запасов), количество которых на складе № 2, обслуживающем район № 5, меньше некоторого значения и которые заказаны в указанном районе для первых 20 заказов. |
На языке SQL этот запрос можно представить следующим образом:
SELECT запас.наименование_товара
FROM строка_заказа, запас
WHERE запас.номер_склада=2 AND
запас.количество < :значение AND
запас.номер_товара=строка_заказа.номер_запаса AND
строка_заказа.номер_склада=2 AND
строка_заказа.номер_района=5 AND
строка_заказа.номер_заказа >=1 AND
строка_заказа.номер_заказа <=20;
На рис. 7.9 и 7.10 представлены описания соответствующих таблиц запроса.
Рис. 7.9. Описание таблицы "Запас"
Рис. 7.10. Описание таблицы "Строка_заказа"
На рисунках показаны только те атрибуты таблиц, которые упоминаются в запросе. Уровень запасов (:значение) заранее не определён. Предполагается, что при вызове транзакции его мощность может колебаться в интервале от 10 до 20. Поэтому мощность атрибута Запас.количество определена в запросе как нечёткое число. Уровень запасов является входной величиной, следовательно для атрибута установлен признак W. Атрибут Запас.наименование_товара является выходным, поэтому он отмечен признаком P. Для атрибута Запас.номер_склада в запросе определено конкретное значение (запас.номер_склада=2), следовательно для него указана мощность, равная 1. В запросе есть условие "запас.номер_товара=строка_заказа.номер_запаса", поэтому атрибуты Запас.номер_товара и Строка_заказа. номер_запаса связаны между собой переменной связи #Q. Мощности атрибутов Строка_заказа.номер_заказа, Строка_заказа.номер_района, Строка_заказа.номер_склада в рассматриваемом запросе соответственно равны 20, 1 и 1.
56