Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная ИС Людмила.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
41 Кб
Скачать
☆

1.5 Четвертая нормальная форма

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

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

1.6 Пятая нормальная форма

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

Таблица Рейсы очень похожа на таблицу Порты. Столбец прибытие из аналогичен столбцу Порт, а столбец Погрузка - столбцу Отправление. именно по этой причине можно переместить данные таблицы Рейсы в таблицу порты и удалить таблицу Рейсы. новая таблица порты показана в таблице 9 Значения столбца Прибытие для записей, внесенных в таблицу Порты из таблицы рейсы, не определены (не существуют), так как в таблице Рейсы были указаны только даты отравления.

Таблица 9 - Таблица “Порты”

Судно

Рейс

Порт

Прибытие

Отправление

528

9203W

HNL

6/6/92

6/8/92

528

9203W

OSA

6/19/92

6/21/92

528

9204W

PAP

7/10/92

7/11/92

528

9204W

HNL

8/27/92

8/29/92

528

9203W

OSA

7/15/92

7/18/92

603

9203W

INC

6/25/92

6/28/92

531

9204W

SYD

8/28/92

9/2/92

528

9204W

OSA

9/30/92

10/2/92

528

9203W

SFO

5/31/92

603

9203W

OAK

6/5/92

531

9204W

LAX

6/20/92

528

9204W

SFO

6/20/92

Невозможно восстановить исходную таблицу из объединенных таблиц Рейсы и Порты, поскольку не сможете отличить строку отправления от других строк по значениям ее полей в таблице. Чтобы отличить строки отправлений, можно было бы использовать значения Null в поле Прибытие, однако значение Null должно быть зарезервированным для условия “данные недоступны". Необходимо устранить любые двусмысленности, которые могут привести к появлению значений Null, и преобразовать таблицу в пятую нормальную форму, добавив односимвольное поле Тип, определяющее прибытие или отправление. В показанной таблице 10 Порты коды Е и S представляют соответственно погрузку (Embarkation) и ожидаемое прибытие (Scheduled). Могут также использоваться коды M для заправки (Maintenance) и R - для обратного рейса (Return voyage).

Таблица 10 - Таблица “Порты”

Судно

Рейс

Порт

Тип

Прибытие

Отправление

528

9203W

HNL

S

6/6/92

6/8/92

528

9203W

OSA

S

6/19/92

6/21/92

528

9204W

PAP

S

7/10/92

7/11/92

528

9204W

HNL

S

8/27/92

8/29/92

528

9203W

OSA

S

7/15/92

7/18/92

603

9203W

INC

S

6/25/92

6/28/92

531

9204W

SYD

S

8/28/92

9/2/92

528

9204W

OSA

S

9/30/92

10/2/92