Белорусский государственный университет информатики и радиоэлектроники
Кафедра систем управления
ОТЧЕТ ПО ЛАБОРАТОРНЫМ РАБОТАМ
По предмету: ИОСУ
Разработка БД
2 Вариант
Проверила: Крупская М.А
Выполнил: студент группы 322402
Жарский Д.А
Минск 2016
Лабораторная работа №1
Создать собственную базу данных по полученному варианту. Варианты заданий приведены в Приложении 1 при этом:
создать таблицы;
создать ограничения;
создать индексы, синонимы, последовательности;
внести данные в таблицы, где необходимо в качестве первичных ключей использовать псевдостолбцы созданных последовательностей.
Последовательности:
CREATE SEQUENCE seqWorkers
INCREMENT BY 1
START WITH 1;
CREATE SEQUENCE seqClients
INCREMENT BY 1
START WITH 1;
CREATE SEQUENCE seqProviders
INCREMENT BY 1
START WITH 1;
CREATE SEQUENCE seqFuels
INCREMENT BY 1
START WITH 1;
CREATE SEQUENCE seqInvoices
INCREMENT BY 1
START WITH 1;
CREATE SEQUENCE seqSales
INCREMENT BY 1
START WITH 1;
Таблицы
CREATE TABLE zh_orders (kz INTEGER not null,
customer VARCHAR(22) not null,
kp integer not null ,
data date not null unique,
primary key (kz)
);
CREATE TABLE zh_creator (nc INTEGER not null,
adress VARCHAR(22) not null,
tel_no integer not null ,
primary key (nc)
);
CREATE TABLE zh_materials (km INTEGER not null,
nazv_ma VARCHAR2(22) not null,
cvet VARCHAR2(15) not null check(cvet ='black' or cvet ='blue' or cvet ='yellow' or cvet ='green' or cvet ='grey' or cvet ='white' or cvet ='brown') ,
primary key (km)
);
CREATE TABLE zh_catolog(
kp INTEGER not null,
km INTEGER not null,
name VARCHAR(22) not null ,
nc INTEGER not null,
cost integer not null,
amount integer,
primary key (kp)
);
ALTER TABLE zh_orders add constraint c1 foreign key (kp) references zh_catolog;
ALTER TABLE zh_catolog add constraint c2 foreign key (km) references zh_materials;
ALTER TABLE zh_catolog add constraint c3 foreign key (nc) references zh_creator;
АВТОИНКРИМЕНТ ЗАКАЗОВ
create sequence orders_kz
start with 1
increment by 1
nomaxvalue;
create or replace trigger kz_in
before insert on zh_orders
for each row
begin
if :new.kz is null then
select orders_kz.nextval into :new.kz from dual;
end if;
end;
/
АВТОИНКРИМЕНТ МАТЕРИАЛОВ
create sequence materials_inc
start with 1
increment by 1
nomaxvalue;
create or replace trigger km_in
before insert on zh_materials
for each row
begin
if :new.km is null then
select materials_inc.nextval into :new.km from dual;
end if;
end;
/
ЗАПОЛНЕНИЕ
insert into zh_materials values (null , 'pork skin', 'black');
insert into zh_creator values ( 1, 'per. gagarina12-10', 1313133);
insert into zh_catolog values (1, 1, 'sumka la normale', 1, 9.99, 8);
insert into zh_orders values ( null, 'petrov', 1, 12-06-2010);
доделано:
alter table zh_orders add kolichestvo integer;
create public synonym zakazy for zh_orders;
create index index_cvet on zh_materials (cvet);
