Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Создание индексов, триггеров и хранимых процедур.
Индексы создаются для ускорения доступа к данным. Если мы в дереве объектов БД выберем Indexes, то увидим, что создание ключей привело к появлению в БД ряда индексов: Рис.26 Ветвь Indexes содержит перечень всех индексов Для ускорения доступа к данным в запросах о накладных, выданных за определенную дату, создадим для таблицы индекс по полю (по убыванию): CREATE DESC INDEX NACL_PO_DATE ON NAKL(NAKL_DATE) Добавим в таблицу TOVAR поле TOV_KVO, в котором будет храниться количество товара на складе, а в таблицу POKUP – поле POK_SUMM, в котором будет храниться сумма денег, авансированных покупателем для закупки товара: ALTER TABLE TOVAR ADD TOV_KVO INTEGER DEFAULT 0 CHECK(TOV_KVO > -1) ALTER TABLE TOVAR ALTER TOV_KVO POSITION 3 ALTER TABLE POKUP ADD POK_SUMM DOUBLE PRECISION DEFAULT 0.0 CHECK(POK_SUMM > -25.0) ALTER TABLE POKUP ALTER POK_SUMM POSITION 4
Заполним поля данными, приведенными ниже: Рис.27 Заполнение данными таблицы TOVAR Рис.28 Заполнение данными таблицы POKUP
Реализация бизнес-правил на сервере средствами триггеров и хранимых процедур. Последовательность выписки накладной на продажу товаров следующая: 1. Проверить сколько есть в наличии данного товара в таблице “TOVAR”. Если эта величина больше чем количество, продаваемое по накладной, то уменьшить количество товара в таблице “ TOVAR ” на то количество товара, которое записывается в таблицу OTPUSK. Если товара для продажи не хватает, то генерировать исключительную ситуацию «NO_TOVAR_QUANT». CREATE EXCEPTION NO_TOVAR_QUANT 'Malo tovara.'; 2. Определить Сумму на счету покупателя, Итоговую сумму в накладной, по которой продается товар и стоимость продаваемого товара. Если (Сумма на счету покупателя - Итоговая сумма в накладной - стоимость продаваемого товара > 10.0) то: { Записать новую Итоговую сумму в накладную; Уменьшить Сумму на счету покупателя на соответствующую величину } иначе {. Если Денег на счету покупателя не хватает, то товар в накладную не включать. Генерировать исключительною ситуацию «OTPUSK_CHN_NAKL_ID». }; CREATE EXCEPTION OTPUSK_CHN_NAKL_ID 'Nakl_ID must be unchanged.'; Для осуществления создадим следующие процедуры и триггера: Процедура, подсчитывающая Итоговую сумму по накладной: SET TERM!!;
|