Нормализация отношений
Рассмотрим пример реляционной таблицы (рисунок 1), по которому видно неудачный вариант проектирования. К примеру, в кортежах, которые соответствуют рабочему с номером 1412, происходит повтор одной и той же фамилии и специальности. Вследствие такого повторения или избыточности данных произойдет потеря лишнего места, а также возможна противоречивость в БД – нарушение целостности данных.
Избыточностью данных называют повторение данных в БД.
Целостностью данных называют согласованность данных в БД.
Проблема возникает из-за выполнения работы одним и тем же работником более, чем в одном здании. Например, пусть специальность Смирнова указана неверно, а исправлена ошибка лишь в первом кортеже. В таком случае между кортежами, которые содержат информацию о Смирнове, возникает несоответствие, называемое аномалией обновления.
Аномалия обновления является противоречивостью данных, которая вызвана их частичным обновлением и избыточностью.
Пусть Смирнов на протяжении месяца был на больничном, а за это время были закончены все здания, на которых он работал. При удалении из таблицы всех строк о законченных зданиях вся информация о Смирнове и его специальности будет утеряна. Такая ситуация называется аномалией удаления.
Обратная ситуация: мог быть нанят новый работник, который еще не был назначен ни на одно из зданий.
Аномалия удаления представляет собой непреднамеренную потерю данных, которая вызвана удалением других данных.
Если пустые значения не допускаются, невозможно произвести ввод информации о новом работнике в БД. Такая ситуация называется аномалией ввода.
Аномалия ввода представляет собой невозможность ввода данных в таблицу, которая вызвана отсутствием других данных.
Все аномалии (ввода, удаления и обновления) являются нежелательными.
Чтобы устранить рассмотренные выше недостатки применяется процесс нормализации отношений, который является формальным методом анализа отношений, базирующийся на потенциальных или первичных ключах и существующих функциональных зависимостей. При этом существует ряд формальных правил, которые используются для проверки всех отношений БД. Различается:
- 1НФ (1NF) – первая нормальная форма;
- 2НФ (2NF) – вторая нормальная форма;
- 3НФ (3NF) – третья нормальная форма;
- НФБК (BCNF) – нормальная форма Бойса–Кодда;
- 4НФ (4NF) – четвертая нормальная форма;
- 5НФ (5NF) – пятая нормальная форма.
Каждой нормальной формой на данные налагаются определенные ограничения. Такие ограничения вводят в каждом конкретном отношении, соблюдение которых связано уже с наличием нормальной формы.
- 1NF, 2NF, 3NF – ограничивается зависимость непервичных атрибутов от ключей.
- BCNF – ограничивается зависимость первичных атрибутов.
- 4NF – формулируются ограничения на виды многозначных зависимостей.
- 5NF – вводятся другие типы зависимостей: зависимости соединений.
Переход от нормальной формы низкого уровня к высокому уровню называют нормализацией отношений.
Нормализацией является разбиение на 2 и больше таблиц, которые обладают лучшими свойствами при удалении, изменении и добавлении данных.
Окончательной целью нормализации является получение такого проекта БД, в котором каждый объект появляется только в одном месте, то есть исключается избыточность информации. Это выполняется как для экономии памяти, так и с целью исключения возможной противоречивости данных, которые хранятся.
Недостатки нормализации
- При большом количестве сущностей, которые охватывает предметная область, нормализованная БД будет состоять из большого количества таблиц.
- Необходимость считывания связанных данных из нескольких таблиц при выполнении одного запроса.
Следовательно, при обработке данных большого объема необходимо выбирать между требованиями нормализации (логичность данных и экономия места на носителях информации) и необходимостью повышения быстродействия системы.