Торговая фирма
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
данных в 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