Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
К вопросу нормализации базы данных.doc
Скачиваний:
2
Добавлен:
15.09.2019
Размер:
174.08 Кб
Скачать

Vot{время отправления}:string;

FIOnp{ФИО начальника поезда}:STRING;

NomVagon {номер вагона}: INTEGER;

Tvg{тип вагона (плацкарт, купе, мягкbй)}:STRING;

KolMest (Количество мест) : INTEGER;

KodProv: {Код проводника} INTEGER;

NomMest{номер места}: INTEGER;

FIO{ФИО пассажира}:STRING;

Npv{порядковый номер остановки - пункта высадки}:STRING

FioProv: {Фамилия проводника} STRING;

Ключевые поля (KodRejs,NomNed,NomDen,NomVagon,NomMest) в таблице подчеркнуты. Для данного отношения имеем следующие функциональные отношения:

(KodRejs,NomNed,NomDen)  (Vot,FIOnp)

(KodRejs,NomNed,NomDen, NomVagon)  (Tvg,KodProv,FioProv)

(KodRejs,NomNed,NomDen, NomVagon, NomMest)  (Fio,Npv)

KodProv  FioProv

Tvg -> KolMest

Первые две функциональных зависимостей относятся к классу частичных и согласно правилу построения 2NF могут быть декомпозированы в таблицы

Таблица DetSved:

KodRejs: (Номер рейса) : INTEGER;

NomNed {Номер недели} : INTEGER;

NomDen {номер дня недели}: INTEGER;

Vot{время отправления}:STRING;

FIOnp{ФИО начальника поезда}:STRING;

Таблица Svg:

KodRejs: (Номер рейса) : INTEGER;

NomNed {Номер недели} : INTEGER;

NomDen {номер дня недели}: INTEGER;

NomVagon {номер вагона}: INTEGER;

Tvg{тип вагона (плацкарт, купе, мягкий)}:STRING;

KolMest (Количество мест) : INTEGER;

KodProv: {Код проводника} INTEGER;

FioProv: {Фамилия проводника} STRING;

Таблица Zvg:

KodRejs: (Номер рейса) : INTEGER;

NomNed {Номер недели} : INTEGER;

NomDen {номер дня недели}: INTEGER;

NomVagon {номер вагона}: INTEGER;

NomMest{номер места}: INTEGER;

FIO{ФИО пассажира}:STRING;

Npv{порядковый номер остановки - пункта высадки}:STRING

Учитывая транзитивность,

(KodRejs,NomNed,NomDen, NomVagon)  (Tvg,KodProv,FioProv)

KodProv  FioProv

а также

При приведении к 3NF, таблица Svg разобьется на три таблицы:

Таблица Svg:

KodRejs: (Номер рейса) : INTEGER;

NomNed {Номер недели} : INTEGER;

NomDen {номер дня недели}: INTEGER;

NomVagon {номер вагона}: INTEGER;

Tvg{тип вагона (плацкарт, купе, мягкbй)}:STRING;

KodProv: {Код проводника} INTEGER;

Таблица Prov:

KodProv: {Код проводника} INTEGER;

FioProv: {Фамилия проводника} STRING;

Таблица TVag:

Tvg: { тип вагона } INTEGER;

KolMest (Количество мест) : INTEGER;

В целом получается такое же разбиение, но при этом используется правила приведения к 1NF ,2NF и 3NF.

1 Предполагается, что 35- максимальное количество мест для всех типов вагонов

2 При отсутствии места в вагоне данного типа информация по месту не заполняется

14