Смекни!
smekni.com

Разработка проекта управления базами данных для процесса "Учет ремонта и ТО автотранспорта" (стр. 2 из 4)

Ограничение FOREIGN KEY - определяет внешний ключ отношения (в одном отношении может быть несколько внешних ключей); организует ссылку по внешнему ключу на заданное в предложении REFERENCES отношение.

База данных "Ремонт и ТО автотранспорта" включает в себя следующие таблицы:

· Автобаза (Autobase)

· Справочник состояний (Condition)

· Справочник технического обслуживания (Technical)

· Тип марки (TypeMarka)

· Марка (Marka)

· Транспорт (Transport)

· Состояние единицы (ConditionUnit)

Таблица Автобаза (Autobase).

Таблица содержит данные об автобазах. Каждая автобаза имеет уникальный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(IDAutobase)={NameAutobase, Address}, что аналогично R(Уникальный номер автобазы)={Название автобазы, Юридический адрес автобазы}. Атрибут IDAutobase должен быть уникальным и не равен нулю, т.к. является первичным ключом. Атрибут NameAutobase должен быть уникален, т.к. совпадающие названия автобаз состояний нарушают нормализацию таблицы базы данных, а также не равен NULL. Размер поля NameAutobase должен содержать символьные значения и максимальный среднестатистический размер атрибута равен 11 символов (к примеру, "Автобаза №1", "Автобаза №2"), следовательно, принимая во внимание необходимость избыточности размера поля порядка 4 символов, имеем размер поля NameAutobase типа VARCHAR равным 15. Размер поля Address должен содержать символьные значения и максимальный среднестатистический размер атрибута равен 35 символов (например, "г. Воркута, ул. Автозаводская, 22"), следовательно, принимая во внимание необходимость резервной избыточности размера поля порядка 25 символов, имеем размер поля Address типа VARCHAR равным 60 (см. Таблица 1).

Таблица 1.

Название атрибута Имя поля Тип поля Размер Ограничения
Уникальный номер автобазы IDAutobase INT NOT NULL, PRIMARY KEY
Название автобазы NameAutobase VARCHAR 15 NOT NULL, UNIQUE
Юридический адрес автобазы Address VARCHAR 60

USE autorem;

GO

CREATE TABLE Autobase

(IDAutobase INT IDENTITY CONSTRAINT AutobasePrimary PRIMARY KEY,

NameAutobase VARCHAR (15) NOT NULL CONSTRAINT NameAutobaseUnique UNIQUE,

Address VARCHAR (60))

GO

Справочник состояний (Condition)

Таблица содержит данные о типе марки автотранспорта. Каждое состояние автотранспорта имеет уникальный номер, который является первичным ключом отношения.

Схема отношения имеет вид: R(IDCondition)={NameCondition}, что аналогично R(ID справочника состояний)={Название состояния}.

Атрибут IDCondition должен быть уникальным и не быть равным NULL, т.к. является первичным ключом. Атрибут NameCondition должен быть уникален, т.к. совпадающие названия состояний нарушают нормализацию таблицы базы данных, а также не равен NULL.

Размер поля NameCondition должен содержать символьные значения и максимальный среднестатистический размер атрибута не превышает 6 символов (например, "ремонт", "ТР", "ТО1", "ТО2", "СО"), следовательно, принимая во внимание необходимость избыточности размера поля порядка 3 символов, имеем размер поля NameCondition типа VARCHAR равным 10 символам (см. Таблица 2).

Таблица 2.

Название атрибута Имя поля Тип поля Размер Ограничения
ID справочника состояний IDCondition INT NOT NULL
Название состояния NameCondition VARCHAR 10 NOT NULL, UNIQUE

USE autorem;

GO

CREATE TABLE Condition

(IDCondition INT IDENTITY CONSTRAINT ConditionPrimary PRIMARY KEY,

NameCondition VARCHAR (10) NOT NULL CONSTRAINT NameConditionUnique UNIQUE)

GO

Справочник технического обслуживания (Technical)

Таблица содержит данные о периодичности технического обслуживания подвижного состава. Каждый тип автотранспорта (легковые, автобусы, грузовые автобусы на базе грузовых автомобилей) имеет уникальный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(IDTechnical)={NameTechnical, TO1, TO2}, что аналогично R(ID справочника технического обслуживания)={Название типа автотранспорта, Километраж для TO1, Километраж для TO2}. Атрибут IDTechnical должен быть уникальным и не быть равным NULL, т.к. является первичным ключом. Атрибут NameTechnical должен быть уникален, т.к. совпадающие названия состояний нарушают нормализацию таблицы базы данных, а также не равен NULL. Размер поля NameTechnical содержит символьные значения и максимальный среднестатистический размер атрибута не превышает 46 символа (например, "грузовые автобусы на базе грузовых автомобилей", "легковые", "автобусы"), следовательно, принимая во внимание необходимость избыточности размера поля порядка 13 символов, имеем размер поля NameTechnical типа VARCHAR равным 60 символам. Поле TO1 должно содержать числовые значения о пробеге автотранспорта до первого технического обслуживания, следовательно, поле ТО1 имеет тип INT. Поле TO2 должно содержать числовые значения о пробеге автотранспорта до второго технического обслуживания, следовательно, поле ТО2 имеет тип INT. (см. Таблица 3).

Таблица 3.

Название атрибута Имя поля Тип поля Размер Ограничения
ID справочника технического обслуживания IDTechnical INT NOT NULL
Название типа автотранспорта NameTechnical VARCHAR 60 NOT NULL, UNIQUE
Километраж для TO1 TO1 INT
Километраж для TO2 TO2 INT

CREATE TABLE Technical

(IDTechnical INT IDENTITY CONSTRAINT TechnicalPrimary PRIMARY KEY,

NameTechnical VARCHAR (60) NOT NULL CONSTRAINT NameTechnicalUnique UNIQUE,

TO1 INT,

TO2 INT)

Тип марки (TypeMarka)

Таблица содержит данные о типе марки автотранспорта. Каждая марка автотранспорта имеет уникальный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(IDTypeMarka)={IDTechnical, NameTypeMarka}, что аналогично R(Уникальный номер типа марки)={ID справочника технического обслуживания, Название типа марки}. Внешним ключом является IDTechnical (ID справочника технического обслуживания). Атрибут IDTypeMarka должен быть уникальным и не быть равным NULL, т.к. является первичным ключом отношения. Атрибут IDTechnical должен быть уникальным и не быть равным NULL, т.к. является внешним ключом отношения. Атрибут NameTypeMarka должен быть уникален, т.к. совпадающие названия состояний нарушают нормализацию таблицы базы данных, а также не должен быть равен NULL. Размер поля NameTypeMarka должен содержать символьные значения и максимальный среднестатистический размер атрибута равен 20 символов (к примеру, "бортовая платформа", "экс.грейд.бульд.погр"), следовательно, принимая во внимание необходимость избыточности размера поля порядка 15 символов, имеем размер поля NameTypeMarka типа VARCHAR равным 35 символам (см. Таблица 4).

Таблица 4.

Название атрибута Имя поля Тип поля Размер Ограничения
Уникальный номер типа марки IDTypeMarka INT NOT NULL, PRIMARY KEY
ID справочника технического обслуживания IDTechnical INT NOT NULL, FOREIGN KEY
Название типа марки NameTypeMarka VARCHAR 35 NOT NULL, UNIQUE

USE autorem;

GO

CREATE TABLE TypeMarka

(IDTypeMarka INT IDENTITY CONSTRAINT TypeMarkaPrimary PRIMARY KEY,

IDTechnical INT NOT NULL,

NameTypeMarka VARCHAR (35) NOT NULL CONSTRAINT NameTypeMarkaUnique UNIQUE

CONSTRAINT TypeMarkaTechnicalForeign FOREIGN KEY (IDTechnical) REFERENCES Technical)

GO

Таблица Марка (Marka).

Таблица содержит данные о марках автотранспорта. Каждая марка имеет уникальный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(IDMarka)={IDTypeMarka, NameMarka, Capacity}, что аналогично R(Уникальный номер марки)={Уникальный номер типа марки, Название марки, Грузоподъемность}. Внешним ключом является IDTypeMarka (Уникальный номер типа марки). Атрибут IDMarka должен быть уникальным и не быть равным NULL, т.к. является первичным ключом. Атрибут IDTypeMarka должен быть уникальным и не быть равным NULL, т.к. является внешним ключом отношения. Атрибут NameMarka должен быть не равен NULL. Размер поля NameMarka должен содержать символьные значения и максимальный среднестатистический размер атрибута равен 10 символов (к примеру, " КамАЗ-5320", "ЗиЛ-433100"), следовательно, принимая во внимание необходимость избыточности размера поля порядка 5 символов, имеем размер поля NameCondition типа VARCHAR равным 15. Поле Capacity должен содержать дробные числовые значения о грузоподъемности автотранспорта, следовательно, поле Capacity имеет тип FLOAT (см. Таблица 5).

Таблица 5.

Название атрибута Имя поля Тип поля Размер Ограничения
Уникальный номер марки IDMarka INT NOT NULL, PRIMARY KEY
Уникальный номер типа марки IDTypeMarka INT NOT NULL, FOREIGN KEY
Название марки NameMarka VARCHAR 15 NOT NULL
Грузоподъемность Capacity FLOAT

USE autorem;

GO

CREATE TABLE Marka

(IDMarka INT IDENTITY CONSTRAINT MarkaPrimary PRIMARY KEY,

IDTypeMarka INT NOT NULL,

NameMarka VARCHAR (15) NOT NULL,

Capacity FLOAT,

CONSTRAINT MarkaTypeMarkaForeign FOREIGN KEY (IDTypeMarka) REFERENCES TypeMarka)

GO

Таблица Транспорт (Transport).

Таблица содержит данные об автотранспорте. Каждый автотранспорт имеет уникальный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(IDTransport)={IDAutobase, IDMarka, GarageNumber, GosNumber}, что аналогично R(Уникальный номер единицы автотранспорта)={Уникальный номер автобазы, Уникальный номер марки, Гаражный номер, Госномер}. Внешними ключами являются IDAutobase (Уникальный номер автобазы), IDMarka(Уникальный номер марки). Атрибут IDTransport(Уникальный номер единицы автотранспорта) должен быть уникален и не равным NULL, т.к. является первичным ключом. Атрибут IDAutobase должен быть уникальным и не быть равным NULL, т.к. является внешним ключом отношения. Атрибут IDTypeMarka должен быть уникальным и не быть равным NULL, т.к. является внешним ключом отношения. Атрибут GarageNumber должен быть уникален, т.к. каждая единица автотранспорта имеет свой гаражный номер, а также не равен NULL. Атрибут GosNumber должен быть уникален, т.к. каждая единица автотранспорта имеет свой уникальный госномер, выданный в соответствующей ведомости. Размер поля GosNumber должен содержать символьные значения и максимальный среднестатистический размер атрибута равен 8 символам (к примеру, "В 990 АЕ", "КО 6718", "КУ 2664"), следовательно, принимая во внимание необходимость избыточности размера поля, имеем размер поля NameCondition типа VARCHAR равным 10. Размер поля GarageNumber должен содержать числовые значения о гаражном номере автотранспорта, следовательно, поле GarageNumber имеет тип INT (см. Таблица 6).