Процесс проектирования БД с использованием метода нормальных форм является итерациональным и заключается в последовательном переводе отношений из первой нормальной формы в нормальные формы более высокого порядка по определенным правилам. Каждая следующая нормальная форма ограничивает определенный тип функциональных зависимостей, устраняет соответствующие аномалии при выполнении операций над отношениями БД и сохраняет свойства предшествующих нормальных форм.
Выделяют следующую последовательность нормальных форм:
· Первая нормальная форма (1НФ)
· Вторая нормальная форма (2НФ)
· Третья нормальная форма (3НФ)
· Усиленная нормальная форма, или нормальная форма Бойса-Кодда (БКНФ)
· Четвертая нормальная форма (4НФ)
· Пятая нормальная форма (5НФ).
Первая нормальная форма. Отношение находится в 1НФ, если все его атрибуты являются простыми (имеют единственное значение). Исходное отношение строится таким образом, что было в 1НФ.
Перевод отношения в следующую нормальную форму осуществляется методом «декомпозиции без потерь». Такая декомпозиция должна обеспечивать то, что запросы к исходному отношению и к отношениям, получаемым в результате декомпозиции, дадут одинаковый результат.
|
|
Основной операцией метода является операция проекции. Например, предположим, что в отношении R(A,B,C,D,E,…) устранение функциональной зависимости C→D позволит перевести его в следующую нормальную форму. Для решения этой задачи выполним декомпозицию отношения R на два новых отношения R1(A,B,C,E…) и R2(C,D). Отношение R2 является проекцией отношения R на атрибуты C и D.
Исходное отношение ПРЕПОДАВАТЕЛЬ, используемое для иллюстрации метода, имеет составной ключ ФИО, Предм, Группа и находится в 1НФ, поскольку все его атрибуты простые.
В этом отношении можно выделить частичную зависимость атрибутов Стаж, Д_Стаж, Каф, Должн, Оклад от ключа – указанные атрибуты находятся в функциональной зависимости от атрибута ФИО, являющегося частью составного ключа.
Эта частичная зависимость от ключа приводит к следующему:
1. В отношении присутствует явное и неявное избыточное дублирование данных, например:
· Повторение сведений о стаже, должности и окладе преподавателей, проводящих занятия в нескольких группах и/или по разным предметам;
· Повторение сведений об окладах для одной и той же должности или о надбавках за одинаковый стаж.
2. Следствием избыточного дублирования данных является проблема их редактирования. Например, изменение должности у преподавателя Иванова И.М. потребует просмотра всех кортежей отношения и внесения изменений в те из них, которые сведения о данном преподавателе.
|
|
Часть избыточности устраняется при переводе отношения в 2НФ.
Вторая нормальная форма. Отношение находится в 2НФ, если оно находится 1НФ, и каждый неключевой атрибут функционально полно зависит от первичного ключа (составного).
Для устранения частичной зависимости и перевода отношения в 2НФ необходимо, используя операцию проекции, разложить его на несколько отношений следующим образом:
· Построить проекцию без атрибутов, находящихся в частичной функциональной зависимости от первичного ключа;
· Построить проекции на части составного первичного ключа и атрибуты, зависящие от этих частей.
В результате получим два отношения R1 и R2 в 2НФ
R1
ФИО | Предм | Группа | ВидЗан |
Иванов И.М. | БД | Практ | |
Иванов И.М. | ОСС | Практ | |
Петров М.И. | БД | Лекция | |
Петров М.И. | ВС | Практ | |
Сидоров Н.Г. | ОСС | Лекция | |
Сидоров Н.Г. | ВС | Лекция | |
Егоров В.В. | ПЭВМ | Лекция |
R2
ФИО | Должн | Оклад | Стаж | Д_Стаж | Каф |
Иванов И.М. | Преп. | ||||
Петров М.И. | Ст.Преп. | ||||
Сидоров Н.Г. | Преп. | ||||
Егоров В.В. | Преп. |
В отношении R1 первичный ключ является составным и состоит из атрибутов ФИО, Предм, Группа. Напомним, что данный ключ в отношении R1 получен в предположении, что каждый преподаватель в одной группе по одному предмету может либо читать лекции, либо проводить практические занятия. В отношении R2 ключ ФИО.
Исследование отношений R1 и R2 показывает, что переход к 2НФ позволит исключить явную избыточность данных в таблице R2 – повторение строк со сведениями о преподавателях. В R2 по-прежнему имеет место неявное дублирование.
Для дальнейшего совершенствования отношения необходимо преобразовать его в 3НФ.