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

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

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

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

В данном подразделе разрабатан SQL-код для создания реляционной модели.

CREATE TABLE Персона_арендатор

(Код арендатора NUM (5) NOT NULL PRIMARY KEY,

Паспортные данные CHAR (40) NOT NULL,

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

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

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

Адрес CHAR (30),

Номер_телефона INTEGER NOT NULL,

CHECK (‘A’<ФИО AND ФИО<’Я’),

FOREIGN KEY (Номер_телефона) REFERENCES Телефон

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Персона_сотрудник

(Код сотрудника NUM (5) NOT NULL PRIMARY KEY,

Паспортные данные CHAR (40) NOT NULL,

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

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

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

Адрес CHAR (30),

Номер_телефона INTEGER NOT NULL,

CHECK (‘A’<ФИО AND ФИО<’Я’),

FOREIGN KEY (Номер_телефона) REFERENCES Телефон

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Персона_сотрудник_администратор

(Код сотрудника NUM (5) NOT NULL PRIMARY KEY,

Паспортные данные CHAR (40) NOT NULL,

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

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

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

Адрес CHAR (30),

Номер_телефона INTEGER NOT NULL,

CHECK (‘A’<ФИО AND ФИО<’Я’),

FOREIGN KEY (Номер_телефона) REFERENCES Телефон

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Персона_сотрудник_кладовщик

(Код сотрудника NUM (5) NOT NULL PRIMARY KEY,

Паспортные данные CHAR (40) NOT NULL,

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

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

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

Адрес CHAR (30),

Номер_телефона INTEGER NOT NULL,

CHECK (‘A’<ФИО AND ФИО<’Я’),

FOREIGN KEY (Номер_телефона) REFERENCES Телефон

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Персона_сотрудник_член комиссии

(Код сотрудника NUM (5) NOT NULL PRIMARY KEY,

Паспортные данные CHAR (40) NOT NULL,

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

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

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

Адрес CHAR (30),

Номер_телефона INTEGER NOT NULL,

CHECK (‘A’<ФИО AND ФИО<’Я’),

FOREIGN KEY (Номер_телефона) REFERENCES Телефон

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Контракт

(Номер контракта NUM (5) NOT NULL PRIMARY KEY,

Дата начала аренды DATE (6) NOT NULL,

Дата конца аренды DATE (6) NOT NULL,

Арендная плата NUM (4) NOT NULL,

Код персоны_сотрудника_администратора CHAR (6) NOT NULL,

Код персоны_арендатора CHAR (6) NOT NULL,

Код места CHAR (6) NOT NULL,

Код оборудования CHAR (6) NOT NULL,

Код ячейки CHAR (6) NOT NULL,

FOREIGN KEY (код персоны_сотрудника_администратора)

REFERENCES Персона_сотрудник_администратор

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (код персоны_арендатора)

REFERENCES Персона_арендатор

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (код места) REFERENCES Место

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (код оборудования) REFERENCES Оборудование

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (код ячейки) REFERENCES Место на складе

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Телефон

(Номер INTEGER NOT NULL PRIMARY KEY,

Код CHAR (6),

Тип CHAR (10));

CREATE TABLE Контакт_арендатора

(Номер телефона INTEGER NOT NULL PRIMARY KEY ,

Код персоны_арендатора CHAR (6) NOT NULL PRIMARY KEY,

FOREIGN KEY (Номер телефона) REFERENCES Телефон

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (код персоны_арендатора)

REFERENCES Персона_арендатор

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Контакт_сотрудника

(Номер телефона INTEGER NOT NULL PRIMARY KEY,

Код персоны_сотрудника CHAR (6) NOT NULL PRIMARY KEY,

FOREIGN KEY (Номер телефона) REFERENCES Телефон

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (код персоны_сотрудника)

REFERENCES Персона_сотрудника

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Должность

(Код должности CHAR (6) NOT NULL PRIMARY KEY,

Название должности CHAR (20));

CREATE TABLE Карьера

(Номер приказа CHAR (6) NOT NULL PRIMARY KEY,

Стаж NUM (2) NOT NULL,

Оклад NUM (6) NOT NULL,

FOREIGN KEY Код должности REFERENCES Должность,

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Место работы

(Номер приказа CHAR (6) NOT NULL PRIMARY KEY,

Дата приема DATE NOT NULL,

Дата увольнения DATE NOT NULL ,

Номер статьи CHAR (6) NOT NULL,

Код организации CHAR (6) NOT NULL,

Код персоны_сотрудника_кладовщика CHAR (6) NOT NULL,

Код персоны_сотрудника_администратора CHAR (6) NOT NULL,

Код персоны_сотрудника_члена комиссии CHAR (6) NOT NULL,

FOREIGN KEY (Номер статьи) REFERENCES Карьера

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (Код организации) REFERENCES Организация

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (Код персоны_сотрудника_кладовщика) REFERENCES

Персона_сотрудник_кладовщик

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (Код персоны_сотрудника_ администратора)

REFERENCES Персона_сотрудник_администратор

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (Код персоны_сотрудника_члена комиссии)

REFERENCES Персона_сотрудник_член комиссии

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Организация

(Код организации CHAR (6) NOT NULL PRIMARY KEY,

Название организации CHAR (20));

CREATE TABLE Санконтроль

(Порядковый номер NUM (3) NOT NULL PRIMARY KEY,

Дата проверки DATE (6),

Код персоны_сотрудника_члена комиссии CHAR (6) NOT NULL,

Код товара CHAR (6) NOT NULL,

Значение CHAR (6) NOT NULL,

FOREIGN KEY (Код персоны_сотрудника_члена комиссии)

REFERENCES Персона_сотрудник_член комиссии

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (Код товара) REFERENCES Товар

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (Значение) REFERENCES Результат

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Место на складе

(Код ячейки склада CHAR (6) NOT NULL PRIMARY KEY,

Название ячейки CHAR (20));

CREATE TABLE Место

(Код места CHAR (6) NOT NULL PRIMARY KEY,

Название места CHAR (20));

CREATE TABLE Оборудование

(Код оборудования CHAR (6) NOT NULL PRIMARY KEY,

Название оборудования CHAR (20));

CREATE TABLE Товар

(Код товара CHAR (6) NOT NULL PRIMARY KEY,

Название товара CHAR (20),

Код персоны_арендатора CHAR (6) NOT NULL,

FOREIGN KEY (код персоны_арендатора)

REFERENCES Персона_арендатор

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Показатели

(Код показателя CHAR (6) NOT NULL PRIMARY KEY,

Название показателя CHAR (20),

Значение CHAR (40) NOT NULL,

FOREIGN KEY (Значение) REFERENCES Результат

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Результат

(Значение CHAR (40) NOT NULL PRIMARY KEY,

Код показателя CHAR (6),

Порядковый номер санконтроля NUM (3) NOT NULL,

FOREIGN KEY (Код показателя) REFERENCES Показатели

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY (Порядковый номер санконтроля)

REFERENCES санконтроль

ON DELETE CASCADE

ON UPDATE CASCADE);

CREATE TABLE Выдача

(номер выдачи NUM (3) NOT NULL PRIMARY KEY,

Дата выдачи DATE (6)

Количество выданного товара CHAR (6),

Код оборудования CHAR (6),

Код персоны_сотрудника_кладовщика CHAR (6),

Код ячейки CHAR (6),

FOREIGN KEY (Код оборудования) REFERENCES Оборудование

ON DELETE CASCADE

ON UPDATE CASCADE,

FOREIGN KEY (Код персоны_сотрудника_кладовщика)

REFERENCES персона_сотрудник_кладовщик

ON DELETE CASCADE

ON UPDATE CASCADE,

FOREIGN KEY (Код ячейки) REFERENCES Место на складе

ON DELETE CASCADE

ON UPDATE CASCADE).

CREATE TRIGGER Сотрудник

ON Персона_сотрудник

FOR DELETE

AS

UPDATE Персона_сотрудник

SET код_сотрудника= код_сотрудника – 1

WHERE код_сотрудника > Deleted.код_сотрудника;

CREATE TRIGGER Арендатор

ON Персона_арендатор

FOR DELETE

AS

UPDATE Персона_ арендатор

SET код_ арендатор = код_ арендатор – 1

WHERE код_ арендатор > Deleted.код_ арендатор;

CREATE TRIGGER Аренда места

ON Место

FOR DELETE

AS

UPDATE Место

SET код_места= код_места – 1

WHERE код_места > Deleted.код_места;

CREATE TRIGGER Аренда оборудования

ON Оборудование

FOR DELETE

AS

UPDATE Оборудование

SET код_оборудования = код_ оборудования – 1

WHERE код_ оборудования > Deleted.код_ оборудования;

Соседние файлы в предмете Базы данных
  • #
  • #
    02.05.20141 Мб122База данных - Продажа автобусных билетов.doc
  • #
    02.05.20142 Мб66База данных - Продажа ПО.mdb
  • #
    02.05.20142 Мб35База данных - Производители бытовой электроники.mdb
  • #
    02.05.20142 Мб56База данных - Расписание пассажирских авиаперевозок.mdb
  • #
  • #
    02.05.201411 Мб78База данных - Салон проката велосипедов.mdb
  • #
    02.05.201411 Мб34База данных - Салон проката велосипедов1.mdb
  • #
    02.05.20141 Мб145База данных - Склад предприятия.mdb
  • #
    02.05.20141 Мб86База данных - Складское предприятие.mdb
  • #
    02.05.20141 Мб33База данных - Учет кадров училища искусств города Уфы.mdb