Создание базы данных магазина по продаже товаров для офиса
Автор: alexandra9898 • Июнь 24, 2018 • Контрольная работа • 885 Слов (4 Страниц) • 717 Просмотры
Государственный университет Республики Молдова
Кафедра Математики и Информатики
Индивидуальная работа
по дисциплине: «Базы данных»
на тему: «Создание базы данных магазина по продаже товаров для офиса»
Выполнила:
студентка II курса,
гр. IA1604
Груя Александра
г. Кишинёв, 2017 г.
В работе представлена база данных магазина по продаже товаров для офиса. В базе 5 таблиц, которые содержат данные о товарах, заказах, клиентах, договорах.[pic 1][pic 2]CREATE
create table TOVAR(tov_id number(4), tov_name varchar2(20), tov_qty number(4), tov_price number(4), constraint pk_tov primary key(tov_id));
create table COMMAND(co_id number(4), cl_id number(4), co_date date, co_qty number(20), co_suc varchar2(4), co_pay varchar2(4), tov_id number(4), constraint co_fk foreign key(cl_id) references CLIENT(cl_id), constraint c_fk foreign key(tov_id) references TOVAR(tov_id));
create table CLIENT(cl_id number(4), cl_name varchar2(20), cl_address varchar2(20), cl_phone number(20), cl_boss varchar2(20), cl_buh varchar2(20), constraint cl_pk primary key(cl_id));
create table CONTRACT_BASE(cn_id number(4), cl_id number(4), date_base date, constraint cb_fk foreign key(cn_id) references CONTRACT(cn_id), constraint cb_k foreign key(cl_id) references CLIENT(cl_id));
create table CONTRACT(cn_id number(4), cn_doc varchar2(50), cn_maker varchar2(20), cn_makernumber number(20), cn_maker address varchar2(20), cn_reciever varchar2(20), cn_recievernumber number(20), cn_recieveraddress varchar2(20), constraint cn_pk primary key(cn_id));
INSERT
insert into TOVAR values(1,'Sculpture', 5,30);
insert into CONTRACT_BASE values(1,1,’1/2/2017’);
ПОДПРОГРАММЫ
Добавляет новый товар
create or replace procedure add_tov(n_id in TOVAR.tov_id%type, n_name in TOVAR.tov_name%type, n_qty in TOVAR.tov_qty%type, n_price in TOVAR.tov_price%type)
as
e_name exception; e_price exception;
BEGIN
If n_name=' ' then raise e_name; end if;
If n_price=0 then raise e_price; end if;
insert into TOVAR values(n_id, n_name, n_qty, n_price);
EXCEPTION
When e_name then raise_application_error(-20001, 'TOVAR NAME CANNOT BE EMPTY!');
when e_price then raise_application_error(-20001, 'TOVAR PRICE CANNOT BE EMPTY!');
end add_tov;
Удаление клиента по имени
create or replace procedure del_cli(name in varchar2)
as
e_name exception; v_name number;
BEGIN
select count(*) into v_name from CLIENT where CLIENT.cl_name=name;
if v_name=0 then raise e_name; end if;
delete from CLIENT where CLIENT.cl_name=name;
EXCEPTION
When e_name then raise_application_error(-20001,'NO SUCH CLIENT!');
End del_cli;
Возвращение количества товара по наименованию
create or replace function get_qty(n_name in varchar2) return number
as
e_name exception; v_qty number; v_count number;
BEGIN
select count(*)into v_count from TOVAR where TOVAR.tov_name=n_name;
if v_count=0 then raise e_name; end if;
select TOVAR.tov_qty into v_qty from TOVAR where TOVAR.tov_name=n_name;
return v_qty;
EXCEPTION
When e_name then raise_application_error(-20001,'NO SUCH TOVAR!');
end get_qty;
Увеличение количества товара по его названию
create or replace procedure rise_qty(n_name in varchar2, n_qty in number)
as
e_name exception; v_name number;
BEGIN
select count(*) into v_name from TOVAR where TOVAR.tov_name=n_name;
if v_name=0 then raise e_name; end if;
update TOVAR
set TOVAR.tov_qty=TOVAR.tov_qty+n_qty
where TOVAR.tov_name=n_name;
EXCEPTION
When e_name then raise_application_error(-20001, 'NO SUCH TOVAR!');
end rise_qty;
Возвращение содержания договора по имени заказчика
create or replace function get_contract(n_name in CONTRACT.cn_ reciever %type) return CONTRACT.cn_doc%type
as
e_name exception;v_name number; c_name CONTRACT.cn_doc%type;
BEGIN
select count (*) into v_name from CONTRACT where CONTRACT.cn_reciever=n_name;
...