Торговая фирма

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

данных в Interbaseпредполагается использовать интерактивную консоль SQL.Для создания различных структур в базе данных предлагается использовать SQL-запросы к серверу. Особенность интерактивной консоли в том, что она моментально позволяет увидеть результат запроса, что заметно упрощает создание структуры базы данных.

 

2.1 Создание таблиц

 

Создание таблицы Города

 

CREATE TABLE "CITIES"

(

"ID"INTEGER NOT NULL,

"NAME"VARCHAR(40) NOT NULL,

"INFORMATION"VARCHAR(40) default ,KEY ("ID"),

UNIQUE ("NAME")

);

 

Создание таблицы Товары

 

CREATE TABLE "GOODS"

(

"ID"INTEGER NOT NULL,

"NAME"VARCHAR(40) NOT NULL,

"INFORMATION"VARCHAR(40) default ,KEY ("ID"),("NAME")

);

 

Создание таблицы Поставщики

 

CREATE TABLE "SUPPLIERS"

(

"ID"INTEGER NOT NULL,

"NAME"VARCHAR(40) NOT NULL,

"CITY_ID"INTEGER,

"GOOD_ID"INTEGER,KEY ("ID"),("NAME")

);TABLE "SUPPLIERS" ADD FOREIGN KEY ("CITY_ID") REFERENCES "CITIES" ("ID");TABLE "SUPPLIERS" ADD FOREIGN KEY ("GOOD_ID") REFERENCES "GOODS" ("ID");

 

Создание таблицы Склады

 

CREATE TABLE "STOREAGE"

(

"ID"INTEGER NOT NULL,

"ADDRES"VARCHAR(50) NOT NULL,

"CITY_ID"INTEGER NOT NULL,

"TELEPHONE"VARCHAR(40) default null,KEY ("ID"),("CITY_ID", "ADDRES")

);TABLE "STOREAGE" ADD FOREIGN KEY ("CITY_ID") REFERENCES "CITIES" ("ID");

 

Создание таблицы Заявки

 

CREATE TABLE "REQUESTS"

(

"ID"INTEGER NOT NULL,

"SUPP_ID"INTEGER NOT NULL,

"AMOUNT"INTEGER NOT NULL,

"PRICE"FLOAT NOT NULL,

"STATUS"INTEGER default 0,

"FLAG"INTEGER NOT NULL,KEY ("ID")

);TABLE "REQUESTS" ADD FOREIGN KEY ("SUPP_ID") REFERENCES "SUPPLIERS" ("ID");

 

Создание таблицы Хранение

 

CREATE TABLE "STORAGE"

(

"ID"INTEGER NOT NULL,

"ADDRES"VARCHAR(50) NOT NULL,

"CITY_ID"INTEGER NOT NULL,

"TELEPHONE"VARCHAR(40) default null,KEY ("ID"),("CITY_ID", "ADDRES")

);TABLE "STORAGE" ADD FOREIGN KEY ("CITY_ID") REFERENCES "CITIES" ("ID");

 

2.2 Создание представлений

 

Представление на связь Поставщик - Товар

 

CREATE VIEW "SUPP_GOODS" (

"SUPP_NAME",

"GOOD_NAME",

"INFORMATION",

"CITY"

) AS.name,b.name,b.information,c.name from suppliers a,goodsb,cities ca.good_id=b.id and a.city_id=c.id;

 

Представление на связь Город - Склад

 

CREATE VIEW "STORAGE_WITH_CITY" (

"ADDRESS",

"CITY_NAME",

"TELEPHONE"

) AS.addres,b.name,a.telephone,cities b.id = a.city_id;

 

2.3 Создание триггеров

 

Триггеры для таблицы Товары

Триггер для генерации первичного ключа

 

CREATE TRIGGER "GEN_ID_GOODS" FOR "GOODS"BEFORE INSERT POSITION 0(new.id is null)new.id = gen_id(id_good,1);

 

Триггер для удаления всех поставщиков, поставляющих данных товар

 

CREATE TRIGGER "DEL_FROM_GOODS" FOR "GOODS"BEFORE DELETE POSITION 0from suppliers where good_id=old.id;

end

 

Триггеры для таблицы Поставщики

Триггер для генерации первичного ключа

 

CREATE TRIGGER "GEN_ID_SUPP" FOR "SUPPLIERS" BEFORE INSERT POSITION 0(new.id is null)new.id = gen_id(id_supp,1);

 

Триггер для удаления всех заявок, привязанных к данному поставщику

 

CREATE TRIGGER "DEL_FROM_SUPP" FOR "SUPPLIERS" BEFORE DELETE POSITION 0from requests where supp_id=old.id;

end

 

Триггеры для таблицы Склады

Триггер для генерации первичного ключа

 

CREATE TRIGGER "GEN_ID_STOREAGE" FOR "STOREAGE" BEFORE INSERT POSITION 0(new.id is null)new.id = gen_id(id_storeage,1);

 

Триггер для каскадного удаления всех товаров, хранящихся на складе

 

CREATE TRIGGER "DEL_FROM_STORAGE" FOR "STORAGE" BEFORE DELETE POSITION 0from store where store_id=old.id;

end

 

Триггеры для таблицы Города

Триггер для генерации первичного ключа

 

CREATE TRIGGER "GEN_ID_CITY" FOR "CITIES" BEFORE INSERT POSITION 0(new.id is null)new.id = gen_id(id_city,1);

 

Триггер для удаления всех складов и поставщиков из этого города

 

CREATE TRIGGER "DEL_FROM_CITIES" FOR "CITIES" BEFORE DELETE POSITION 0from suppliers where city_id=old.id;from storeage where city_id=old.id;

end

 

Триггеры для таблицы Заявки

Триггердлягенерациипервичногоключа

 

CREATE TRIGGER "GEN_ID_REQUEST" FOR "REQUESTS" BEFORE INSERT POSITION 0 begin(new.id is null)new.id = gen_id(id_request,1);

end

 

Триггеры для таблицы Хранение

Триггернавставкувтаблицу

 

CREATE TRIGGER "STORE_INS" FOR "STORE" BEFORE INSERT POSITION 0variable my_id integer;variable my_good_id integer;variable amount integer;_id,good_id from store where store_id=new.store_id and good_id=new.good_id into my_id,my_good_id;(:my_id is not null)amount from store where store_id=:my_id and good_id=:my_good_id into :amount;(:amount+new.amount<new.st_size).amount=:amount+new.amount;from store where store_id=new.store_id and good_id=new.good_id;_size;

end

 

Триггеры для представления Поставщик - Товар

Триггер на вставку

 

CREATE TRIGGER "INS_FOR_VIEW" FOR "SUPP_GOODS" BEFORE INSERT POSITION 0variable my_id integer;variable my_city_id integer;id from goods where new.good_name=name into my_id;(:my_id is null) theninto goods(name,information) values(new.good_name,new.information);id from goods where new.good_name=name into my_id;id from cities where new.city=name into my_city_id;(:my_city_id is null) theninto cities(name) values(new.city);id from cities where new.city=name into my_city_id;

insert into suppliers(name,city_id,good_id) values(new.supp_name,:my_city_id,:my_id);

 

Триггер на обновление

 

CREATE TRIGGER "UPD_FOR_VIEW" FOR "SUPP_GOODS" BEFORE UPDATE POSITION 0variable my_id integer;variable my_city_id integer;variable my_supp_id integer;id from cities where name=new.city into my_city_id;(:my_city_id is null) then exception wrong_city;id from goods where name=new.good_name into my_id;(:my_id is null) then exception wrong_good;id from suppliers where name=old.supp_name into my_supp_id;suppliers set nam