Лекция 12. Нормальные формы

Скачать

Лекция 12. Нормальные формы

 

Содержание лекционного занятия:

·         третья нормальная форма

 

Третья нормальная форма

Рассмотрим таблицу СОТРУДНИКИ, полученную после приведения исходной таблицы ко второй нормальной форме. Для этой таблицы существует функцио­нальная связь между полями «Код сотрудника» и «Зарплата». Однако эта функ­циональная связь является транзитивной.

Функциональная зависимость атрибутов X и У отношения R называется транзитив­ной, если существует такой атрибут Z, что имеются функциональные зависимости X Z и Z -»У, но отсутствует функциональная зависимость Z X.

Транзитивность зависимости полей «Код сотрудника» и «Зарплата» означает, что заработная плата на самом деле является характеристикой не сотрудника, а долж­ности, которую он занимает. В результате мы не сможем занести в базу данных информацию, характеризующую заработную плату должности, до тех пор, пока не появится хотя бы один сотрудник, эту должность занимающий (так как первич­ный ключ не может содержать неопределенное значение). При удалении кортежа, описывающего последнего сотрудника, занимающего данную должность, мы ли­шимся информации о заработной плате, соответствующей этой должности. Кроме того, чтобы согласованным образом изменить заработную плату, соответствующую должности, будет необходимо предварительно найти все записи, описывающие сотрудников, занимающих данную должность. Таким образом, в таблице СОТРУД­НИКИ по-прежнему существуют аномалии. Их можно устранить путем дальней­шей нормализации — приведения базы данных к третьей нормальной форме.

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

Чтобы перейти от второй нормальной формы к третьей, нужно выполнить следу­ющие шаги:

1.        Определить все поля (или группы полей), от которых зависят другие поля.

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

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

Обратите внимание, что мы опять добавили новый атрибут — «Код должности», который является первичным ключом для отношения ДОЛЖНОСТИ и внешним ключом для отно­шения СОТРУДНИКИ. Добавление новых атрибутов при нормализации позволяет полу­чить таблицы с простыми первичными ключами, что облегчает выполнение операции свя­зывания таблиц. Такие первичные ключи, как правило, являются искусственными.

Приведем рассматриваемую в качестве примера базу данных к третьей нормаль­ной форме. Для этого разделим таблицу СОТРУДНИКИ на две - СОТРУДНИ­КИ и ДОЛЖНОСТИ (рис. 4).

image

Рис. 4. Приведение базы данных к третьей нормальной форме

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

image

Рис. 5. Структура базы данных, приведенной к третьей нормальной форме

В заключение приведем схему базы данных, рассматриваемой в качестве примера и приведенной к третьей нормальной форме (рис. 5).

 

Вопросы для самоконтроля:

1.Реструктурирование баз данных.

 

Рекомендуемая литература:

1. Дейт К.Дж. Введение в системы баз данных. - К.: Диалектика, 1998. - 784 с.

2. Ульман Дж., Уидом Д. Основы систем баз данных. - М.: ЛОРИ, 2000. - 374 с.

 


Скачать


zharar.kz