Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВОЛОШИН_КП_СУБД(1).docx
Скачиваний:
3
Добавлен:
22.09.2019
Размер:
5.63 Mб
Скачать

4. Создание таблиц и ограничений.

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

Для удобства запуска базы данных сначала были созданы таблицы без ограничений (приложение 5), затем с помощью функции ALTER были наложены все необходимые ограничения (приложение 6).

Таблицы базы данных именуются в соответствии с их содержимым и на английском языке, т.к. он является интернациональным.Именование процедур и функций осуществляется по следующему шаблону: добавление <имя таблицы>INCERT, удаление-<имя таблицы>Delete, обновление -<имя таблицы>Update.

Таблица Гидрант (Hydrant)

Атрибут

Наименование атрибута

Тип

Ограничение

Сеть

Net

BIT

NOT NULL

Диаметр

Caliber

INT

NOT NULL

ID водоисчтоника

ID WaterSource

INT

NOT NULL

FOREIGN KEY

CREATE TABLE Hydrant --(Описаниегидранта)

(Net BIT NOT NULL,

Caliber INT NOT NULL,

IDWaterSource INT NOT NULL,

);

Для атрибута Сеть был выбран тип данных BIT, так как существует два типа

сети: кольцевая (0)итупиковая (1).

ALTERTABLEHydrant

WITH CHECK

ADD

CONSTRAINT HydrantCaliber CHECK (Caliber>0),

CONSTRAINT HydrantWaterSourceForeign FOREIGN KEY (IDWaterSource) REFERENCES WaterSource

ONUPDATECASCADE;

Таблица Водоем (Pond)

Атрибут

Наименование атрибута

Тип

Ограничение

Объем

Size

INT

NOT NULL

ID водоисчтоника

ID WaterSource

INT

NOT NULL

FOREIGN KEY

CREATE TABLE Pond --(Описание водоема)

(Size INT NOT NULL,

IDWaterSource INT NOT NULL);

ALTER TABLE Pond

WITH CHECK ADD

CONSTRAINT PondSize CHECK (Size>0),

CONSTRAINT PondWaterSourceForeign FOREIGN KEY (IDWaterSource) REFERENCES WaterSource ON UPDATE CASCADE;

Таблица Улица (Street)

Атрибут

Наименование атрибута

Тип

Ограничение

ID Улицы

IDStreet

INT

NOT NULL

PRIMARY KEY

Название улицы

NameStreet

VARCHAR(40)

NOT NULL

UNIQUE

В таблице «Улица»был выделен уникальный ключ «ID Улицы».

Таблица «Улица» является справочником, поэтому на название улиц было наложено ограничение уникальности, чтобы исключить дублирование записей в таблице.

CREATE TABLE Street --(Описаниеулицы)

(IDStreet INT IDENTITY NOT NULL,

NameStreet VARCHAR(40) NOT NULL);

ALTER TABLE Street

WITH CHECK ADD

CONSTRAINT StreetPrimary PRIMARY KEY (IDStreet),

CONSTRAINT NameStreetUnique UNIQUE(NameStreet);

Таблица Вид организации (TypeOfOrganization)

Атрибут

Наименование атрибута

Тип

Ограничение

ID Вида организации

IDTypeOfOrganization

INT

NOT NULL

PRIMARY KEY

Название вида организации

NameTypeOfOrganization

VARCHAR(50)

NOT NULL

CREATE TABLE TypeOfOrganization --(Вид организации)

(IDTypeOfOrganization INT IDENTITY NOT NULL,

NameTypeOfOrganization VARCHAR(50) NOT NULL);

ALTER TABLE TypeOfOrganization

WITH CHECK ADD

CONSTRAINT IDTypeOfOrganizationPrimary PRIMARY KEY (IDTypeOfOrganization);

Таблица Организация (Organization)

Атрибут

Наименование атрибута

Тип

Ограничение

ID организации

IDOrganization

INT

NOT NULL

PRIMARY KEY

Название вида организации

NameOrganization

VARCHAR(50)

NOT NULL

UNIQUE

Дата расформирования

Dissolution

DATE

NULL

ID вида организации

IDTypeOfOrganization

INT

NOT NULL

FOREIGN KEY

CREATETABLEOrganization--(Организации)

(IDOrganization INT IDENTITY NOT NULL,

NameOrganization VARCHAR(50) NOT NULL,

Dissolution DATETIME NULL, --(датарасформированияорганизации)

IDTypeOfOrganization INT NOT NULL);

ALTER TABLE Organization

WITH CHECK ADD

CONSTRAINT IDOrganizationPrimary PRIMARY KEY (IDOrganization),

CONSTRAINT NameOrganizationUnique UNIQUE (NameOrganization),

CONSTRAINT OrganizationTypeForeign FOREIGN KEY (IDTypeOfOrganization) REFERENCES TypeOfOrganization ON UPDATE CASCADE;

Таблица Водоисточник (WaterSource)

Атрибут

Наименование атрибута

Тип

Ограничение

ID водоисточника

IDWaterSource

INT

NOT NULL

PRIMARY KEY

Название водоисточника

NameWaterSource

VARCHAR(10)

NOT NULL

Номер дома

Building

VARCHAR(10)

NOT NULL

ID улицы

IDStreet

INT

NOT NULL

FOREIGN KEY

ID организации

IDOrganization

INT

NOT NULL

FOREIGN KEY

Атрибут «название водоисточника» взят длиной 10 символов, т.к. название составляется по следующей схеме: ПВ-23. То есть вначале идет обозначение состоящее из 2-х букв (ПВ – для водоемов и ПГ – для гидрантов), а далее номер гидранта или водоема.

Также атрибут «номер дома» является символьной величиной, т.к. номер дома может содержать букву (22а) или другие символы (45/2).

CREATETABLEWaterSource--(Водоисточник)

(IDWaterSource INT IDENTITY NOT NULL,

NameWaterSource VARCHAR(10) NOT NULL DEFAULT 'ПГ-',

Building VARCHAR(10) NOT NULL,

IDStreet INT NOT NULL,

IDOrganization INT NOT NULL);

ALTER TABLE WaterSource

WITH CHECK ADD

CONSTRAINT IDWaterSourcePrimary PRIMARY KEY (IDWaterSource),

CONSTRAINT WaterSourceStreetForeign FOREIGN KEY (IDStreet) REFERENCES Street,

CONSTRAINT WaterSourceOrganizationForeign FOREIGN KEY (IDOrganization) REFERENCES Organization;

Таблица Проверка (Inspection)

Атрибут

Наименование атрибута

Тип

Ограничение

ID проверки

IDInspection

INT

NOT NULL

PRIMARY KEY

Дата проверки

DateInspection

DATE

NOT NULL

ID водоисточника

IDWaterSource

INT

NOT NULL

FOREIGN KEY

CREATE TABLE Inspection --(Проверка)

(IDInspection INT IDENTITY NOT NULL,

DateInspection DATETIME NOT NULL,

IDWaterSource INT NOT NULL);

ALTER TABLE Inspection

WITH CHECK ADD

CONSTRAINT IDInspectionPrimary PRIMARY KEY (IDInspection),

CONSTRAINT InspectionOrganizationForeign FOREIGN KEY (IDWaterSource) REFERENCES WaterSource;

Таблица Неисправность (Defect)

Атрибут

Наименование атрибута

Тип

Ограничение

ID неисправности

IDDefect

INT

NOT NULL

PRIMARY KEY

Название неисправности

NameDefect

VARCHAR(100)

NOT NULL

Время устранения неисправности

RepairTime

INT

NOT NULL

Работоспособность

Serviceability

BIT

NOT NULL

ID вида организации

IDTypeOfOrganization

INT

NOT NULL

FOREIGN KEY

CREATE TABLE Defect --(Неисправность)

(IDDefect INT IDENTITY,

NameDefect VARCHAR(100) NOT NULL,

RepairTime INT NOT NULL,

Serviceability BIT NOT NULL,

IDTypeOfOrganization INT NOT NULL);

ALTER TABLE Defect

WITH CHECK ADD

CONSTRAINT IDDefectPrimary PRIMARY KEY (IDDefect),

CONSTRAINT DefectTypeOrgForeign FOREIGN KEY (IDTypeOfOrganization) REFERENCES TypeOfOrganization;

Таблица Письмо-запрос (Letter)

Атрибут

Наименование атрибута

Тип

Ограничение

ID письма

IDLetter

INT

NOT NULL

PRIMARY KEY

FOREIGN KEY

Дата отправки

DataSend

DATE

NULL

Номер письма

LetterNumber

INT

NULL

Дата следующей проверки

DateNextInspection

DATE

NULL

Тип письма

TypeOfLetter

VARCHAR(30)

NOT NULL

ID организации

IDOrganization

INT

NOT NULL

FOREIGN KEY

ID проверки

IDInspection

INT

NOT NULL

FOREIGN KEY

CREATE TABLE Letter --(Письмо-запрос)

(IDLetter INT IDENTITY NOT NULL,

DataSend DATETIME NULL,

LetterNumber INT NULL,

DateNextInspection DATETIME NULL ,

TypeOfLetter VARCHAR(30) NOT NULL,

IDOrganization INT NOT NULL,

IDInspection INT NOT NULL);

ALTER TABLE Letter

WITH CHECK ADD

CONSTRAINT IDLetterPrimary PRIMARY KEY (IDLetter),

CONSTRAINT LetterOrganizationForeign FOREIGN KEY (IDOrganization) REFERENCES Organization,

CONSTRAINT LetterInspectionForeign FOREIGN KEY (IDInspection) REFERENCES Inspection,

CONSTRAINT LetterLetterForeign FOREIGN KEY (IDLetter) REFERENCES Letter;

Таблица Проверка неисправности (TestDefect)

Атрибут

Наименование атрибута

Тип

Ограничение

ID неисправности

IDDefect

INT

NOT NULL

FOREIGN KEY

ID проверки

IDInspection

INT

NOT NULL

FOREIGN KEY

ID письма

IDLetter

INT

NOT NULL

FOREIGN KEY

CREATE TABLE TestDefect --(проверка неисправности)

(IDDefect INT NOT NULL,

IDInspection INT NOT NULL,

IDLetter INT NOT NULL);

ALTER TABLE TestDefect

WITH CHECK ADD

CONSTRAINT DefectTestDefectForeign FOREIGN KEY (IDDefect) REFERENCES Defect,

CONSTRAINT TestDefectInspectionForeign FOREIGN KEY (IDInspection) REFERENCES Inspection,

CONSTRAINT LetterTestDefectForeign FOREIGN KEY (IDLetter) REFERENCES Letter;