Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 1 - Проектирование БД.doc
Скачиваний:
61
Добавлен:
12.04.2015
Размер:
448.51 Кб
Скачать

Проектирование доменов

Домены стоит создавать, если несколько столбцов имеют один и тот же логический смысл.

Имя домена

Назначение домена

Столбцы, принадлежащие домену

Базовый тип

Ограничения целостности домена

TRegNum

Регистрационные номера автомобилей

AUTO.RegNum

DRIVER.RegNumAuto

REQUEST.RegNumAuto

CHAR(14)

NOT NULL,

Маска «бб чч-чч ччRUS»

бб – буквы, чч- числа

TModelAuto

Модели автомобилей

AUTO.Model

REQUEST.ModelAuto

См. примечание

TDriver_ID

Код водителя

DRIVER.ID_Driver

SHEDULE.Driver_ID

SMALLINT

NOT NULL,

>0

TDate

Дата

SHEDULE.WDate

REQUEST.Rdate

DATE

Нет

TTime

Время

SHEDULE.TimeStart

SHEDULE.TimeFinal

REQUEST.TimeStart

REQUEST.TimeFinal

TIME

Нет

TCust_ID

Номера заказчиков

CUSTOMER.ID_Cust

PERSON.Cust_ID

ORGANIZATION.Cust_ID

SMALLINT

NOT NULL,

>0

Примечание: модели автомобилей можно записывать в виде строки символов, например, «Газ», «Камаз». Недостатки этого способа проявляются в том, что, во-первых, при оформлении заявки можно записать модель автомобиля с ошибкой, и когда будет проводиться поиск, есть ли свободные автомобили данной марки, результатом окажется: «автомобиля указанной марки не существует»; во-вторых, строка символов занимает больше памяти, чем число. Рациональнее будет создать дополнительную таблицу МОДЕЛИ_АВТОМОБИЛЕЙ (Models) со столбцами (КодМодели, НазваниеМодели), и везде, где требуется указать модель автомобиля, помещать ссылки на строки этой таблицы. Таким образом, домен TModelAuto будет числовым кодом автомобиля, базовый тип – SMALLLINT, ограничения целостности NOT NULL, >0.

Ниже приводится структура таблиц с ограничениями целостности.

[Models]

Имя столбца

Тип

Обязательность (NULL/NOT NULL)

Default

PRIMARY KEY

или Unique

Check

FOREIGN KEY и другие ограничения целостности

Примечание

ID_Model

TModelAuto

См. домен

Автоинк-рементный

Primary key

См. домен

Код модели

ModelType

VARCHAR(20)

NOT NULL

Название модели

[Auto]

Имя столбца

Тип

Обязательность (NULL/NOT NULL)

Default

PRIMARY KEY

или Unique

Check

FOREIGN KEY и другие ограничения целостности

Примечание

RegNum

TRegNum

См. домен

Автоинк-рементный

Primary key

См. домен

Регистрационный номер автомобиля

Model

TModelAuto

См. домен

См. домен

FK Models.ID_Model

DELETE NO ACTION

Ссылка на модель

[Driver]

Имя столбца

Тип

Обязательность (NULL/NOT NULL)

Default

PRIMARY KEY

или Unique

Check

FOREIGN KEY и другие ограничения целостности

Примечание

ID_Drver

TDriver_ID

См. домен

Автоинк-рементный

Primary key

См. домен

Код водителя

Surname

NVARCHAR(30)

NOT NULL

Фамилия

Name

NVARCHAR(20)

NOT NULL

Имя

Patronymic

NVARCHAR(30)

NOT NULL

Отчество

RegNumAuto

TModelAuto

См. домен

См. домен

FK Auto.RegNum

Ссылка на авто

DELETE NO ACTION

Нестандартное ограничение целостности: не более двух строк могут содержать одно и то же значение поля RegNumAuto.

[Shedule]

Имя столбца

Тип

Обязательность (NULL/NOT NULL)

Default

PRIMARY KEY

или Unique

Check

FOREIGN KEY и другие ограничения целостности

Примечание

Driver_ID

TDriver_ID

См. домен

Primary key

См. домен

FK Driver.ID_Driver

Код водителя

DELETE CASCADE

UPDATE CASCADE

WDate

TDate

NOT NULL

См. домен

Дата

TimeStart

TTime

NOT NULL

>TimeFinal

Время начала смены

TimeFinal

TTime

NOT NULL

Время конца смены

[Customer]

Имя столбца

Тип

Обязательность (NULL/NOT NULL)

Default

PRIMARY KEY

или Unique

Check

FOREIGN KEY и другие ограничения целостности

Примечание

ID_Cust

TCust_ID

См. домен

Автоинк-рементный

Primary key

См. домен

Код заказчика

Name

NVARCHAR(70)

NOT NULL

Имя заказчика

Phone

VARCHAR(12)

NULL

Телефон

В ER-модели подтипы сущностей ОРГАНИЗАЦИЯ и ЧАСТНОЕ_ЛИЦО идентифицировались по-разному. Идентификатором организации был атрибутИНН, идентификатором человека (СерияПаспорта,НомерПаспорта) (рис.8). При переходе к реляционной модели в таблицыPERSONиORGANIZATIONбыл добавлен новый первичный ключCust_ID, идентифицирующие атрибуты сущности превратились в обычные столбцы с ограничениемUnique.

[Person]

Имя столбца

Тип

Обязательность (NULL/NOT NULL)

Default

PRIMARY KEY

или Unique

Check

FOREIGN KEY и другие ограничения целостности

Примечание

Cust_ID

TCust_ID

См. домен

Primary key

См. домен

FK Customer.ID_Cust

Код заказчика

DateOfBirth

DATE

NOT NULL

Дата рождения

PassportSeria

CHAR(5)

NOT NULL

Unique

Серия паспорта

PassportNumber

NUMERIC(6,0)

NOT NULL

>0

Номер паспорта

[Organization]

Имя столбца

Тип

Обязательность (NULL/NOT NULL)

Default

PRIMARY KEY

или Unique

Check

FOREIGN KEY и другие ограничения целостности

Примечание

Cust_ID

TCust_ID

См. домен

Primary key

См. домен

FK Customer.ID_Cust

Код заказчика

INN

NUMERIC(15,0)

NOT NULL

Unique

>0

ИНН

Province

NVARCHAR(31)

NULL

Область

Region

NVARCHAR(31)

NULL

Район

Town

NVARCHAR(31)

NOT NULL

Город, село

Street

NVARCHAR(47)

NULL

Улица

House

VARCHAR(12)

NULL

Дом, корпус