БД по учету продаж продукции мясокомбината

Автор: Пользователь скрыл имя, 21 Сентября 2011 в 18:02, курсовая работа

Описание работы

Клиент, проконсультировавшись с контрагентом, делает заказ.

Выбирает какую-то продукцию, называет ее количество. Клиент может заказать различные наименования товара. Это будет оформлено в одном заказе.

Содержание

Описание предметной области……………………………………….…3

Логическая модель…………………………………………………….…..4

Описание логической модели………………………………………….…5

Описание связей…………………………………………………………...8

Физическая модель……………………………………………………….12

Описание физической модели………………………………………....13

Триггеры…………………………………………………………………....20

Процедуры………………………………………………………………....24

Работа содержит 1 файл

поясн записка.doc

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

(на каждую продажу  оформляется расходная накладная). 
 

Поле Тип данных Размерность Ключевое поле Обязательность Уникальность Индексированность
Номер расходной накладной Integer       ___ Primary key* Обязат. поле Да Да
Дата Date       ___       ___ Обязат. поле Нет Нет
Номер заказа Integer       ___ Foreign key (связан с полем Номер заказа таблицы заказ) Обязат. поле Нет Да
 
 

Строка расходной  накладной. Назначение: Хранение информации о проданном товаре. 

Поле Тип данных  Размер ность Ключевое поле Обязательность Уникальность Индексированность
Количество Varchar2 (15)       ___ Обязат. поле Нет Нет
Артикул Varchar2 (15) Foreign key (связан с полем Артикул   таблицы Товар) Обязат. поле Нет Да
Номер расходной накладной Integer       ___ Foreign key (связан с полем Номер расходной накладной   таблицы Расходная накладная) Обязат. поле Нет Да
 
 

Паспортные данные. Назначение: Хранение информации о  паспортных данных индивида для его дальнейшей идентификации. 

Поле Тип данных  Размер ность Ключевое поле Обязательность Уникальность Индексированность
Кем выдан Varchar2 (15)       ___ Обязат. поле Нет Нет
Серия номер Varchar2 (15)       ___ Обязат. поле Да Нет
Дата  выдачи Date       ___       ___ Обязат. поле Нет Нет
 

Юридическое лицо. Назначение: хранение информации о юридических  лицах. 

Поле Тип данных Размерность Ключевое поле Обязательность Уникальность Индексированность
ИНН Integer       ___ Primary key* Обязат. поле Да Да
Наименование Varchar2 (15)       ___ Обязат. поле Нет Нет
Расчетный счет Integer       ___       ___ Обязат. поле Да Нет
 

Банк. Назначение: хранение названий банков. 

Поле Тип данных Размерность Ключевое поле Обязательность Уникальность Индексированность
Наименование Varchar2 (15)       ___ Обязат. поле Нет Нет
ИНН Varchar2 (15)       ___ Обязат. поле Да Нет
ОКПО Varchar2 (15)       ___ Обязат. поле Да Нет
БИК Integer       ___ Primary key* Обязат. поле Да Да
 

 

Триггеры:

  Этот триггер увеличивает поле Kod_stroki_praisa на единицу максимального значения, т.е. он является счетчиком (автоматическое добавление первичных ключей в таблицу Stroka_praisa)   

CREATE OR REPLACE TRIGGER COUNT_katya1_Prais

BEFORE INSERT ON Stroka_praisa

FOR EACH ROW

DECLARE

CURSOR C1 IS SELECT MAX(Kod_stroki_praisa)

FROM Stroka_praisa;

MAXID Stroka_praisa. Kod_stroki_praisa % TYPE;

BEGIN

OPEN C1;

FETCH C1 INTO MAXID;

 IF MAXID IS NULL THEN

 MAXID:=0;

 END IF;

:NEW. Kod_stroki_praisa:=MAXID+1;

END;

 

Этот триггер увеличивает  поле Kod_edinizi_izmereniya на единицу максимального значения, т.е. он является счетчиком (автоматическое добавление первичных ключей в таблицу Edinica_izmereniya)   

CREATE OR REPLACE TRIGGER COUNT _katya2_Ulica1

BEFORE INSERT ON Edinica_izmereniya

FOR EACH ROW

DECLARE

CURSOR C1 IS SELECT MAX(Kod_edinizi_izmereniya)

FROM Edinica_izmereniya;

MAXID Edinica_izmereniya. Kod_edinizi_izmereniya % TYPE;

BEGIN

OPEN C1;

FETCH C1 INTO MAXID;

 IF MAXID IS NULL THEN

 MAXID:=0;

 END IF;

:NEW. Kod_edinizi_izmereniya:=MAXID+1;

END;

 

Этот триггер увеличивает  поле Kod_Adresa на единицу максимального значения, т.е. он является счетчиком (автоматическое добавление первичных ключей в таблицу Adres)   

CREATE OR REPLACE TRIGGER COUNT_katya_3_Adres1

BEFORE INSERT ON Adres

FOR EACH ROW

DECLARE

CURSOR C1 IS SELECT MAX(Kod_Adresa)

FROM Adres;

MAXID Adres. Kod_Adresa % TYPE;

BEGIN

OPEN C1;

FETCH C1 INTO MAXID;

IF MAXID IS NULL THEN

MAXID:=0;

END IF;

:NEW. Kod_Adresa:=MAXID+1;

END; 
 

Подобные триггеры можно сделать для таблиц prais, rashodnaya_nakladnaya, zakaz, Kod_ulicy.

 

 Данный триггер через процедуру Pasport проверяет, чтобы новое зн-е серии и номера паспорта соответственно строго равнялось 10 символам. 
 

CREATE OR REPLACE TRIGGER TR_seria

BEFORE INSERT OR REPLACE UPDATE ON Pasportnye_dannye

FOR EACH ROW

BEGIN

Katya(:NEW. Seria_nomer, 10,’seria_nomer_pasporta’);

END;

 

ПРОЦЕДУРЫ 
 

1.  Данная процедура выводит ошибку, которая сообщает, что длина строки не соответствует указанному количеству цифр.

(по триггеру №5) 

CREATE OR REPLACE PROCEDURE Pasport (Strok IN VARCHAR2,

Kol IN NUMBER, Msg IN VARCHAR2) IS

BEGIN

IF LENGTH(Strok)<> Kol THEN

RAISE_APPLICATION_ERROR(-20041,’Размер’||Msg||’ должен состоять из

[`||TO CHAR(Kol)||`]символов`);

END IF;

END;

Информация о работе БД по учету продаж продукции мясокомбината