Материал предоставлен https://it.rfei.ru

Нормальные формы

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

Выделяют следующую последовательность нормальных форм:

  • первая нормальная форма (1НФ);
  • вторая нормальная форма (2НФ);
  • третья нормальная форма (ЗНФ);
  • усиленная третья нормальная форма, или нормальная форма Бойса - Кодда (БКНФ);
  • четвертая нормальная форма (4НФ);
  • пятая нормальная форма (5НФ).

Первая нормальная форма. Отношение находится в 1НФ, если все его атрибуты являются простыми (имеют единственное значение). Исходное отношение строится таким образом, чтобы оно было в 1НФ.

Перевод отношения в следующую нормальную форму осуществляется методом «декомпозиции без потерь». Такая декомпозиция должна обеспечить то, что запросы (выборка данных по условию) к исходному отношению и к отношениям, получаемым в результате декомпозиции, дадут одинаковый результат.

Основной операцией метода является операция проекции. Поясним ее на примере. Предположим, что в отношении R(A,B,C,D,E,...) устранение функциональной зависимости С→D позволит перевести его в следующую нормальную форму. Для решения этой задачи выполним декомпозицию отношения R на два новых отношения %%R_1(A,B,C,E,...)%% и %%R_2(C,D)%%. Отношение %%R_2%% является проекцией отношения R на атрибуты С и D.

Исходное отношение ПРЕПОДАВАТЕЛЬ, используемое для иллюстрации метода, имеет составной ключ ФИО, Предм, Группа и находится в 1НФ, поскольку все его атрибуты простые. В этом отношении в соответствии с рис. 4 б можно выделить частичную зависимость атрибутов Стаж, Д_Стаж, Каф, Должн, Оклад от ключа - указанные атрибуты находятся в функциональной зависимости от атрибута ФИО, являющегося частью составного ключа.

Эта частичная зависимость от ключа приводит к следующему:

  1. В отношении присутствует явное и неявное избыточное дублирование данных, например:

    • повторение сведений о стаже, должности и окладе преподавателей, проводящих занятия в нескольких группах и/или по разным предметам;
    • повторение сведений об окладах для одной и той же должности или о надбавках за одинаковый стаж.
  2. Следствием избыточного дублирования данных является проблема их редактирования. Например, изменение должности у преподавателя Иванова И.М. потребует просмотра всех кортежей отношения и внесения изменений в те из них, которые содержат сведения о данном преподавателе.

Часть избыточности устраняется при переводе отношения в 2НФ.

Вторая нормальная форма. Отношение находится в 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от первичного ключа (составного).

Для устранения частичной зависимости и перевода отношения в 2НФ необходимо, используя операцию проекции, разложить его на несколько отношений следующим образом:

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

В результате получим два отношения R1 и R2 в 2НФ (рис. 5).

Рис. 5а. Отношения БД в 2НФ

%%R_1%%

ФИО Предм ГруппаВидЗан
Иванов И.М.СУБД256 Практ
Иванов И.М.ПЛ/1 123 Практ
Петров М.И.СУБД 256 Лекция
Петров М.И.Паскаль 256 Практ
Сидоров Н.Г.ПЛ/1 123 Лекция
Сидоров Н.Г.Паскаль 256 Лекция
Егоров В.В. ПЭВМ 244Лекция

%%R_2%%

ФИО Должн Оклад СтажД_СтажКаф
Иванов И.М. преп 500 5100 25
Петров М.И. ст. преп 8007100 25
Сидоров Н.Г преп 50010150 25
Егоров В.В.преп 500510024

Рис. 5б. Отношения БД в 2НФ

В отношении R1 первичный ключ является составным и состоит из атрибутов ФИО, Предм, Группа. Напомним, что данный ключ в отношении R1 получен в предположении, что каждый преподаватель в одной группе по одному предмету может либо читать лекции, либо проводить практические занятия. В отношении R2 ключ ФИО.

Исследование отношений R1 и R2 показывает, что переход к 2НФ позволил исключить явную избыточность данных в таблице R2 - повторение строк со сведениями о преподавателях. В R2 попрежнему имеет место неявное дублирование данных.

Для дальнейшего совершенствования отношения необходимо преобразовать его в ЗНФ.

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

Существует и альтернативное определение.

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

Доказать справедливость этого утверждения несложно. Действительно, то, что неключевые атрибуты полностью зависят от первичного ключа, означает, что данное отношение находится в форме 2НФ. Взаимная независимость атрибутов (определение приведено выше) означает отсутствие всякой зависимости между атрибутами отношения, в том числе и транзитивной зависимости между ними. Таким образом, второе определение ЗНФ сводится к первому определению.

Если в отношении Ri транзитивные зависимости отсутствуют, то в отношении R2 они есть:

%%ФИО \rightarrow Должн \rightarrow Оклад,%%

%%ФИО \rightarrow Оклад \rightarrow Должн,%%

%%ФИО \rightarrow Стаж \rightarrow \text{Д_Стаж}%%

Транзитивные зависимости также порождают избыточное дублирование информации в отношении. Устраним их. Для этого используя операцию проекции на атрибуты, являющиеся причиной транзитивных зависимостей, преобразуем отношение R2, получив при этом отношения R3, R4 и R5, каждое из которых находится в ЗНФ (рис. 6а). Графически эти отношения представлены на рис. 6б. Заметим, что отношение R2 можно преобразовать по-другому, а именно: в отношении R3 вместо атрибута Должн взять атрибут Оклад.

Рис. 6. Отношения БД в ЗНФ

R3

ФИО Должн Стаж Каф
Иванов И.М. преп 5 25
Петров М.И. ст. преп 7 25
Сидоров Н.Г преп 10 25
Егоров В. В.преп 524

R4

Должн Оклад
преп 500
ст.преп 800

R5

Cтаж Д_Стаж
5 100
7 100
10150

На практике построение ЗНФ схем отношений в большинстве случаев является достаточным и приведением к ним процесс проектирования реляционной БД заканчивается. Действительно, приведение отношений к ЗНФ в нашем примере, привело к устранению избыточного дублирования.

Если в отношении имеется зависимость атрибутов составного ключа от неключевых атрибутов, то необходимо перейти к усиленной ЗНФ.

Усиленная ЗНФ или нормальная форма Бойса - Кодда (БКНФ). Отношение находится в БКНФ, если оно находится в ЗНФ и в нем отсут- ствуют зависимости ключей (атрибутов составного ключа) от неключевых атрибутов.

У нас подобной зависимости нет, поэтому процесс проектирования на этом заканчивается. Результатом проектирования является БД, состоящая из следующих таблиц: %%R_1, R_3, R_4, R_5%%. В полученной БД имеет место необходимое дублирование данных, но отсутствует избыточное.

В следующих нормальных формах (4НФ и 5НФ) учитываются не только функциональные, но и многозначные зависимости между полями таблицы. Для их описания познакомимся с понятием полной декомпозиции таблицы.

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

4 и 5 нормальные формы на практике встречаются крайне редко. Но определения мы приведем.

Определение четвертой нормальной формы. Отношение R находится в четвертой нормальной форме (4НФ) в том и только в том случае, когда существует многозначная зависимость А=>В, а все остальные атрибуты R функционально зависят от А.

Четвертая нормальная форма (4НФ) является частным случаем 5НФ, когда полная декомпозиция должна быть соединением ровно двух проекций. Весьма не просто подобрать реальную таблицу, которая находилась бы в 4НФ, но не была бы в 5НФ.

Таблица находится в пятой нормальной форме (5НФ) тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также находится в 5НФ.

Выявление зависимостей между атрибутамиРекомендации по разработке структур