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