Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
49
Добавлен:
02.05.2014
Размер:
633.86 Кб
Скачать

5.2 Спецификация ограничений и правил поддержания целостности

Все ограничения и правила поддержания целостности были рассмотрены на предыдущих этапах, на этом этапе новых не обнаружено.

5.3 Sql-код для создания реляционной модели

CREATE TABLE Клиент

(Шифр CHAR (6) NOT NULL PRIMARY KEY,

ФИО_Фамилия CHAR (20) NOT NULL,

ФИО_Имя CHAR (20),

ФИО_Отчество CHAR (20),

Паспорт CHAR (20) NOT NULL,

Адрес CHAR (30) NOT NULL) ;

CREATE TABLE CD

(ID_экземпляра CHAR (6) NOT NULL PRIMARY KEY,

Стиль CHAR (10),

Стоимость INTEGER NOT NULL CHECK (Стоимость > 0),

Стоимость_проката INTEGER NOT NULL

CHECK (Стоимость_проката > 0) ,

Особенности_CD CHAR (30),

Код_партии CHAR (6) NOT NULL,

FOREIGN KEY Код_партии REFERENCES Партия_CD,

UPDATE OF Партия_CD CASCADES,

DELETE OF Партия_CD RESTRICTED) ;

CREATE TABLE Композиция

(Шифр CHAR (6) NOT NULL PRIMARY KEY,

Название_композиции CHAR (20) NOT NULL,

Название_исполнителя CHAR (20) NOT NULL) ;

CREATE TABLE Заказчик

(Код_организации CHAR (6) NOT NULL PRIMARY KEY, Название_организации CHAR (20) NOT NULL);

CREATE TABLE Поставщик

(Код_организации CHAR (6) NOT NULL PRIMARY KEY, Название_организации CHAR (20) NOT NULL);

CREATE TABLE Партия_CD

(Код_партии CHAR (6) NOT NULL PRIMARY KEY,

Количество_в_партии INTEGER NOT NULL

CHECK (Количество_в_партии > 0),

Название CHAR (20) NOT NULL,

Год_издания CHAR (4));

CREATE TABLE Телефон

(Номер CHAR (8) NOT NULL PRIMARY KEY,

Тип CHAR (10),

Примечание CHAR (20));

CREATE TABLE Работник_продавец

(Табельный_номер CHAR (6) NOT NULL PRIMARY KEY,

ФИО_Фамилия CHAR (20) NOT NULL,

ФИО_Имя CHAR (20),

ФИО_Отчество CHAR (20));

CREATE TABLE Работник_проверяющий

(Кодовый_номер CHAR (6) NOT NULL PRIMARY KEY,

ФИО_Фамилия CHAR (20) NOT NULL,

ФИО_Имя CHAR (20),

ФИО_Отчество CHAR (20));

CREATE TABLE Работник_оформитель

(Должность CHAR (10) NOT NULL PRIMARY KEY,

ФИО_Фамилия CHAR (20) NOT NULL,

ФИО_Имя CHAR (20),

ФИО_Отчество CHAR (20));

CREATE TABLE Продажа

(Шифр_клиента CHAR (6) NOT NULL,

ID_экземпляра CHAR (6) NOT NULL,

Шифр_продавца CHAR (6) NOT NULL,

Дата_время TIMESTAMP NOT NULL,

Количество INTEGER NOT NULL CHECK (Количество > 0) ,

FOREIGN KEY (Шифр_клиента) REFERENCES Клиент (Шифр),

FOREIGN KEY ID_экземпляра REFERENCES CD,

FOREIGN KEY (Шифр_продавца) REFERENCES

Работник_продавец (Табельный_номер),

UPDATE OF Клиент CASCADES,

DELETE OF Клиент RESTRICTED,

UPDATE OF CD CASCADES,

DELETE OF CD RESTRICTED,

UPDATE OF Работник_продавец CASCADES,

DELETE OF Работник_продавец RESTRICTED);

CREATE TABLE Сдача

(Шифр_клиента CHAR (6) NOT NULL,

ID_экземпляра CHAR (6) NOT NULL,

Шифр_проверяющего CHAR (6) NOT NULL,

Дата_время TIMESTAMP NOT NULL,

Пометки_возврата CHAR (50),

FOREIGN KEY (Шифр_клиента) REFERENCES Клиент (Шифр),

FOREIGN KEY ID_экземпляра REFERENCES CD,

FOREIGN KEY (Шифр_проверяющего) REFERENCES

Работник_проверяющий (Кодовый_номер),

UPDATE OF Клиент CASCADES,

DELETE OF Клиент RESTRICTED,

UPDATE OF CD CASCADES,

DELETE OF CD RESTRICTED,

UPDATE OF Работник_проверяющий CASCADES,

DELETE OF Работник_проверяющий RESTRICTED);

CREATE TABLE Рекламация

(Шифр_клиента CHAR (6) NOT NULL,

ID_экземпляра CHAR (6) NOT NULL,

Шифр_проверяющего CHAR (6) NOT NULL,

Причина CHAR (20) NOT NULL,

Дата_сдачи DATE NOT NULL,

Дата_проверки DATE NOT NULL,

Дата_возврата DATE NOT NULL,

Возврат CHAR (20) NOT NULL,

FOREIGN KEY (Шифр_клиента) REFERENCES Клиент (Шифр),

FOREIGN KEY ID_экземпляра REFERENCES CD,

FOREIGN KEY (Шифр_проверяющего) REFERENCES

Работник_проверяющий (Кодовый_номер),

UPDATE OF Клиент CASCADES,

DELETE OF Клиент RESTRICTED,

UPDATE OF CD CASCADES,

DELETE OF CD RESTRICTED,

UPDATE OF Работник_проверяющий CASCADES,

DELETE OF Работник_проверяющий RESTRICTED,

CHECK (Дата_сдачи <= Дата_проверки

AND Дата_проверки <= Дата_возврата));

CREATE TABLE Запись

(ID_экземпляра CHAR (6) NOT NULL,

Шифр_композиции CHAR (6) NOT NULL,

Качество_записи CHAR (10) NOT NULL,

Длительность_звучания CHAR (5) NOT NULL,

FOREIGN KEY ID_экземпляра REFERENCES CD,

FOREIGN KEY (Шифр_композиции) REFERENCES

Композиция (Шифр),

UPDATE OF CD CASCADES,

DELETE OF CD RESTRICTED,

UPDATE OF Композиция CASCADES,

DELETE OF Композиция RESTRICTED);

CREATE TABLE Заказ

(Шифр_заказчика CHAR (6) NOT NULL,

Код_партии CHAR (6) NOT NULL,

Шифр_оформителя CHAR (6) NOT NULL,

Дата_время TIMESTAMP NOT NULL,

Планируемая_дата_исполнения DATE,

Вид CHAR (10),

FOREIGN KEY (Шифр_заказчика) REFERENCES

Заказчик (Код_организации),

FOREIGN KEY Код_партии REFERENCES Партия_CD,

FOREIGN KEY (Шифр_оформителя) REFERENCES

Работник_оформитель (Должность),

UPDATE OF Заказчик CASCADES,

DELETE OF Заказчик RESTRICTED,

UPDATE OF Партия_CD CASCADES,

DELETE OF Партия_CD RESTRICTED,

UPDATE OF Работник_оформитель CASCADES,

DELETE OF Работник_оформитель RESTRICTED);

CREATE TABLE Поставка

(Шифр_поставщика CHAR (6) NOT NULL,

Код_партии CHAR (6) NOT NULL,

Шифр_оформителя CHAR (6) NOT NULL,

Дата_время TIMESTAMP NOT NULL,

Вид_оплаты CHAR (20) NOT NULL,

FOREIGN KEY (Шифр_поставщика) REFERENCES

Поставщик (Код_организации),

FOREIGN KEY Код_партии REFERENCES Партия_CD,

FOREIGN KEY (Шифр_оформителя) REFERENCES

Работник_оформитель (Должность),

UPDATE OF Поставщик CASCADES,

DELETE OF Поставщик RESTRICTED,

UPDATE OF Партия_CD CASCADES,

DELETE OF Партия_CD RESTRICTED,

UPDATE OF Работник_оформитель CASCADES,

DELETE OF Работник_оформитель RESTRICTED);