Разработка базы данных "Склад"

Автор: Пользователь скрыл имя, 19 Декабря 2010 в 23:01, курсовая работа

Краткое описание

В ходе выполнения курсового проекта была разработана база данных «СКЛАД». В базе данных учтены данные об сущностях, которые описывают иерархию товара, покупателя (продавца), приходных (расходных) накладных, место на складе. В основе создания базы данных лежит задание, полученное на кафедре «Информатика и интеллектуальная собственность».

Оглавление

1. Вступление. 2
2. Индивидуальное задание. 3
3. Построение инфологической модели данных. 4
4. Построение концептуальной модели данных. 6
5. Построение физической модели и создание базы данных. 7
6. Создание процедурных ограничений целостности. 10
7. Создание типичных запросов к базе данных. 11
7.1. Примеры операторов, которые записывают данные в таблицы 11
7.2. Примеры операторов на выборку данных из базы данных 13
7.3. Проверка ограничений целостности 15
Приложение А. SQL-скрипты создания таблиц базы данных 16
Приложение Б. SQL-скрипты создания триггеров 20
Приложение В. Полные выборки таблиц. 21

Файлы: 1 файл

4-ПояснительнаяЗаписка0.doc

— 879.00 Кб (Скачать)

and success='no'

and date_1='19.01.2009'

Результат выборки:

5. Список договоров по продаже, которые выполнены на заданную дату 31.12.2008.

select saleorder_id,s.salesman_id,s.name

from salesman s,sale_order o

where s.salesman_id=o.salesman_id

and success='yes'

and date_1='31.12.2008'

Результат выборки:

6. Список мест на складе на которые можно разместить товар заданного типа.

select p.place_id from place p,maxonplace,product pr 

where pr.product_id=p.product_id

and max>p.quantity

and product_name='Пшеница'

Результат выборки:

 
 
 

      7.3. Проверка ограничений целостности.

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

update spendon set quantity=2001 where product_id=3

------------------------------ Введенные команды ----------------------------

update spendon set quantity=2001 where product_id=3;

-----------------------------------------------------------------------------

update spendon set quantity=2001 where product_id=3

DB21034E  Данная команда обрабатывалась как оператор SQL, поскольку она не

является  допустимой командой процессора командной  строки.  При обработке SQL

было получено сообщение:

SQL0438N  Программа генерирует ошибку с текстом диагностики: "Изъятого товара не может быть больше чем на складе". 

SQLSTATE=75000 

insert into spendon values(5,3,2001); 

------------------------------ Введенные команды ----------------------------

insert into spendon values(5,3,2001);

-----------------------------------------------------------------------------

insert into spendon values(5,3,2001)

DB21034E  Данная команда обрабатывалась как оператор SQL, поскольку она не

является  допустимой командой процессора командной  строки.  При обработке SQL

было получено сообщение:

SQL0438N  Программа генерирует ошибку с текстом диагностики: "Изъятого товара не может быть больше чем на складе". 

SQLSTATE=75000  
 

Приложение А. SQL-скрипты создания таблиц базы данных.

create table db2admin.customer(

customer_id integer not null,

name varchar(45) not null,

address varchar(45) not null,

phone_number integer not null,

primary key (customer_id)

); 
 

create table db2admin.product(

product_id integer not null,

product_name varchar(45) not null,

quantity integer,

cover varchar(45) not null,

comments varchar(500),

primary key (product_id)

); 
 

create table db2admin.salesman(

salesman_id integer not null,

name varchar(45) not null,

address varchar(45) not null,

phone_number integer not null,

primary key (salesman_id)

); 
 

create table db2admin.place(

place_id integer not null,

product_id integer not null,

quantity integer not null,

size decimal(4,2) not null,

primary key (place_id),

foreign key (product_id) REFERENCES db2admin.product(product_id)

); 
 

create table db2admin.customer_order(

cusorder_id integer not null,

customer_id integer not null,

date_1 date not null,

date_2 date not null,

success varchar(4) not null,

primary key (cusorder_id),

foreign key (customer_id) references db2admin.customer(customer_id)

); 
 

create table db2admin.bye(

cusorder_id integer not null references db2admin.customer_order(cusorder_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

product_id integer not null references db2admin.product(product_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

primary key (cusorder_id, product_id)

); 
 

create table db2admin.maxonplace(

product_id integer not null references db2admin.product(product_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

place_id integer not null references db2admin.place(place_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

max integer not null,

primary key (product_id, place_id)

); 
 

create table db2admin.spend(

spend_id integer not null,

cusorder_id integer not null,

date date not null,

primary key (spend_id),

foreign key (cusorder_id) references db2admin.customer_order(cusorder_id)

); 
 

create table db2admin.spendon(

spend_id integer not null REFERENCES db2admin.spend(spend_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

product_id integer not null references db2admin.product(product_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

quantity integer not null,

primary key (spend_id, product_id)

); 
 

create table db2admin.take(

spend_id integer not null REFERENCES db2admin.spend(spend_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

product_id integer not null REFERENCES db2admin.product(product_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

place_id integer not null,

primary key (spend_id, product_id),

foreign key (place_id) references db2admin.place(place_id)

); 
 

create table db2admin.sale_order(

saleorder_id integer not null,

salesman_id integer not null,

date_1 date not null,

date_2 date not null,

success varchar(4) not null,

primary key (saleorder_id),

foreign key (salesman_id) references db2admin.salesman(salesman_id)

); 
 

create table db2admin.saleones(

product_id integer not null REFERENCES db2admin.product(product_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

saleorder_id integer not null REFERENCES db2admin.sale_order(saleorder_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

quantity integer not null,

primary key (product_id, saleorder_id)

); 
 

create table db2admin.incash(

come_id integer not null,

saleorder_id integer not null,

date date not null,

primary key (come_id),

foreign key (saleorder_id) references db2admin.sale_order(saleorder_id)

); 
 

create table db2admin.incashon(

product_id integer not null REFERENCES db2admin.product(product_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

come_id integer not null REFERENCES db2admin.incash(come_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

quantity integer not null,

primary key (product_id, come_id)

); 
 

create table db2admin.placing_incash(

come_id integer not null REFERENCES db2admin.incash(come_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

product_id integer not null REFERENCES db2admin.product(product_id)

ON DELETE CASCADE ON UPDATE RESTRICT,

place_id integer not null,

quantity integer not null,

primary key (come_id, product_id),

foreign key (place_id) references db2admin.place(place_id)

); 
 
 

   Приложение Б. SQL-скрипты создания триггеров.

create trigger nedostach no cascade before insert on spendon

    referencing new as neww  

    for each row mode db2sql

  when(

neww.quantity > (select sum(quantity) from place

where product_id=neww.product_id )

)

signal sqlstate '75000'('Изъятого товара не может быть больше чем на складе'); 
 
 

create trigger nedostach1 no cascade before update on spendon

    referencing new as neww  

    for each row mode db2sql

  when(

neww.quantity > (select sum(quantity) from place

where product_id=neww.product_id )

)

signal sqlstate '75000'('Изъятого товара не может быть больше чем на складе'); 
 
 

      Приложение В. Полные выборки таблиц.

select * from customer

select * from customer_order

select * from bye

select * from spend

select * from spendon

select * from take

select * from salesman

select * from place

select * from maxonplace

select * from sale_order

select * from saleones

select * from incash

select * from incashon

select * from placing_incash

Информация о работе Разработка базы данных "Склад"