Процесс проектирования БД с использованием метода нормальных форм является итерационным и заключается в последовательном переводе отношений из первой нормальной формы в нормальные формы более высокого порядка по определенным правилам. Каждая следующая нормальная форма ограничивает определенный тип функциональных зависимостей, устраняет соответствующие аномалии при выполнении операций над отношениями БД и сохраняет свойства предшествующих нормальных форм.
Выделяют следующую последовательность нормальных форм:
Первая нормальная форма. Отношение находится в 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 б можно выделить частичную зависимость атрибутов Стаж, Д_Стаж, Каф, Должн, Оклад от ключа - указанные атрибуты находятся в функциональной зависимости от атрибута ФИО, являющегося частью составного ключа.
Эта частичная зависимость от ключа приводит к следующему:
В отношении присутствует явное и неявное избыточное дублирование данных, например:
Часть избыточности устраняется при переводе отношения в 2НФ.
Вторая нормальная форма. Отношение находится в 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от первичного ключа (составного).
Для устранения частичной зависимости и перевода отношения в 2НФ необходимо, используя операцию проекции, разложить его на несколько отношений следующим образом:
В результате получим два отношения R1 и R2 в 2НФ (рис. 5).
ФИО | Предм | Группа | ВидЗан |
---|---|---|---|
Иванов И.М. | СУБД | 256 | Практ |
Иванов И.М. | ПЛ/1 | 123 | Практ |
Петров М.И. | СУБД | 256 | Лекция |
Петров М.И. | Паскаль | 256 | Практ |
Сидоров Н.Г. | ПЛ/1 | 123 | Лекция |
Сидоров Н.Г. | Паскаль | 256 | Лекция |
Егоров В.В. | ПЭВМ | 244 | Лекция |
ФИО | Должн | Оклад | Стаж | Д_Стаж | Каф |
Иванов И.М. | преп | 500 | 5 | 100 | 25 |
Петров М.И. | ст. преп | 800 | 7 | 100 | 25 |
Сидоров Н.Г | преп | 500 | 10 | 150 | 25 |
Егоров В.В. | преп | 500 | 5 | 100 | 24 |
В отношении 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 вместо атрибута Должн
взять атрибут Оклад
.
ФИО | Должн | Стаж | Каф |
---|---|---|---|
Иванов И.М. | преп | 5 | 25 |
Петров М.И. | ст. преп | 7 | 25 |
Сидоров Н.Г | преп | 10 | 25 |
Егоров В. В. | преп | 5 | 24 |
Должн | Оклад |
преп | 500 |
ст.преп | 800 |
Cтаж | Д_Стаж |
5 | 100 |
7 | 100 |
10 | 150 |
На практике построение ЗНФ схем отношений в большинстве случаев является достаточным и приведением к ним процесс проектирования реляционной БД заканчивается. Действительно, приведение отношений к ЗНФ в нашем примере, привело к устранению избыточного дублирования.
Если в отношении имеется зависимость атрибутов составного ключа от неключевых атрибутов, то необходимо перейти к усиленной ЗНФ.
Усиленная ЗНФ или нормальная форма Бойса - Кодда (БКНФ). Отношение находится в БКНФ, если оно находится в ЗНФ и в нем отсут- ствуют зависимости ключей (атрибутов составного ключа) от неключевых атрибутов.
У нас подобной зависимости нет, поэтому процесс проектирования на этом заканчивается. Результатом проектирования является БД, состоящая из следующих таблиц: %%R_1, R_3, R_4, R_5%%. В полученной БД имеет место необходимое дублирование данных, но отсутствует избыточное.
В следующих нормальных формах (4НФ и 5НФ) учитываются не только функциональные, но и многозначные зависимости между полями таблицы. Для их описания познакомимся с понятием полной декомпозиции таблицы.
Полной декомпозицией таблицы называют такую совокупность произвольного числа ее проекций, соединение которых полностью совпадает с содержимым таблицы.
4 и 5 нормальные формы на практике встречаются крайне редко. Но определения мы приведем.
Определение четвертой нормальной формы. Отношение R находится в четвертой нормальной форме (4НФ) в том и только в том случае, когда существует многозначная зависимость А=>В, а все остальные атрибуты R функционально зависят от А.
Четвертая нормальная форма (4НФ) является частным случаем 5НФ, когда полная декомпозиция должна быть соединением ровно двух проекций. Весьма не просто подобрать реальную таблицу, которая находилась бы в 4НФ, но не была бы в 5НФ.
Таблица находится в пятой нормальной форме (5НФ) тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также находится в 5НФ.
Выявление зависимостей между атрибутами | Рекомендации по разработке структур |