
2.3. Триггеры и генераторы. Обеспечение ссылочной целостности.
Созданы следующие генераторы для поля ID в таблицах:
GEN_AVTORI_ID – для генерации ID авторов в таблице AVTORI (Авторы);
CREATE GENERATOR GEN_AVTORI_ID;
SET GENERATOR GEN_AVTORI_ID TO 16;
GEN_KNIGI_ID – для генерации ID читателей в таблице KNIGI (Книги);
CREATE GENERATOR GEN_KNIGI_ID;
SET GENERATOR GEN_KNIGI_ID TO 28;
GEN_IZDATELSTVA_ID - для генерации ID издателя в таблице IZDATELSTVA (Издательства);
CREATE GENERATOR GEN_IZDATELSTVA_ID;
SET GENERATOR GEN_IZDATELSTVA_ID TO 9;
GEN_GANRI_ID – для генерации ID книг в таблице GANRI (Жанры);
CREATE GENERATOR GEN_GANRI_ID;
SET GENERATOR GEN_GANRI_ID TO 21;
GEN_POST_ID – для генерации ID поставщиков в таблице POST (Контрагенты);
CREATE GENERATOR GEN_POST_ID;
SET GENERATOR GEN_POST_ID TO 21;
GEN_PRIHOD_ID – для генерации ID приходной накладной в таблице PRIHOD (Приход);
CREATE GENERATOR GEN_PRIHOD_ID;
SET GENERATOR GEN_PRIHOD_ID TO 30;
GEN_RASHOD_ID – для генерации ID расходной накладной в таблице RASHOD (Расход);
CREATE GENERATOR GEN_RASHOD_ID;
SET GENERATOR GEN_RASHOD_ID TO 31;
GEN_SKL_ID – для генерации ID книги на складе в таблице SKL (Склад);
CREATE GENERATOR GEN_SKL_ID;
SET GENERATOR GEN_SKL_ID TO 19;
GEN_SOD_RAS_ID – для генерации ID записи в расходной накладной в таблице SOD_RAS (Содержание расходной накладной);
CREATE GENERATOR GEN_SOD_RAS_ID;
SET GENERATOR GEN_SOD_RAS_ID TO 6;
GEN_SOD_PRI_ID – для генерации ID записи в приходной накладной в таблице SOD_ PRI (Содержание приходной накладной);
CREATE GENERATOR GEN_SOD_PRI_ID;
SET GENERATOR GEN_SOD_PRI_ID TO 7;
GEN_ZAK_ID для генерации ID заказа в таблице ZAK (Заказы поставщикам);
CREATE GENERATOR GEN_ZAK_ID;
SET GENERATOR GEN_ZAK_ID TO 9;
Данные генераторы ведут отсчет с 1 и с шагом в 1.
Также созданы триггеры:
AVTORI_BI – для записи ID авторов в таблице AVTORI (Авторы);
CREATE OR ALTER TRIGGER AVTORI_BI FOR AVTORI
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_avtori_id,1);
end
KNIGI_ BI – для записи ID читателей в таблице KNIGI (Книги);
CREATE OR ALTER TRIGGER KNIGI_BI FOR KNIGI
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_knigi_id,1);
end
IZDATELSTVA_BI - для записи ID издателя в таблице IZDATELSTVA (Издательства);
CREATE OR ALTER TRIGGER IZDATELSTVA_BI FOR IZDATELSTVA
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_izdatelstva_id,1);
end
GANRI_ BI – для записи ID книг в таблице GANRI (Жанры);
CREATE OR ALTER TRIGGER GANRI_BI FOR GANRI
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_ganri_id,1);
end
POST_ BI – для записи ID поставщиков в таблице POST (Контрагенты);
CREATE OR ALTER TRIGGER POST_BI FOR POST
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_post_id,1);
end
PRIHOD_ BI – для записи ID приходной накладной в таблице PRIHOD (Приход);
CREATE OR ALTER TRIGGER PRIHOD_BI FOR PRIHOD
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_prihod_id,1);
end
RASHOD_ BI – для записи ID расходной накладной в таблице RASHOD (Расход);
CREATE OR ALTER TRIGGER RASHOD_BI FOR RASHOD
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_rashod_id,1);
end
SKL_ BI – для записи ID книги на складе в таблице SKL (Склад);
CREATE OR ALTER TRIGGER SKL_BI FOR SKL
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_skl_id,1);
end
SOD_RAS_BI – для записи ID записи в расходной накладной в таблице SOD_RAS (Содержание расходной накладной);
CREATE OR ALTER TRIGGER SOD_RAS_BI FOR SOD_RAS
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_sod_ras_id,1);
end
SOD_PRI_ BI – для записи ID записи в приходной накладной в таблице SOD_ PRI (Содержание приходной накладной);
CREATE OR ALTER TRIGGER SOD_PRI_BI FOR SOD_PRI
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_sod_pri_id,1);
end
ZAK_ BI – для записи ID заказа в таблице ZAK (Заказы поставщикам);
CREATE OR ALTER TRIGGER ZAK_BI FOR ZAK
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_zak_id,1);
end
Индексы:
FK_KNIGI_1
CREATE INDEX FK_KNIGI_1 ON KNIGI (KOD_GAN);
(Код Жанра)
FK_KNIGI_2
CREATE INDEX FK_KNIGI_2 ON KNIGI (KOD_AVT);
(Код Автора)
FK_KNIGI_3
CREATE INDEX FK_KNIGI_3 ON KNIGI (KOD_IZD);
(Код Издательства)
FK_PRIHOD_1
CREATE INDEX FK_PRIHOD_1 ON PRIHOD (POS);
(Код Поставщика)
FK_RASHOD_1
CREATE INDEX FK_RASHOD_1 ON RASHOD (POK);
(Код Покупателя)
FK_ZAK_1
CREATE INDEX FK_ZAK_1 ON ZAK (KOD_KNI);
(Код Книги)
FK_ZAK_2
CREATE INDEX FK_ZAK_2 ON ZAK (KOD_POS);
(Код Поставщика)
FK_SKL_1
CREATE INDEX FK_SKL_1 ON SKL (KOD_KNI);
(Код Книги)
FK_SOD_RAS_1
CREATE INDEX FK_SOD_RAS_1 ON SOD_RAS (KOD_KNI);
(Код Книги)
FK_SOD_RAS_2
CREATE INDEX FK_SOD_RAS_2 ON SOD_RAS (KOD_CHEK);
(Код Расходной накладной)
FK_SOD_PRI_1
CREATE INDEX FK_SOD_PRI_1 ON SOD_PRI (KOD_PRI);
(Код Прихода)
FK_SOD_PRI_2
CREATE INDEX FK_SOD_PRI_2 ON SOD_PRI (KOD_KNI);
(Код Книги)
Разработка пользовательского интерфейса
Описание основных программных модулей