НОРМАЛИЗАЦИЯ БАЗ ДАННЫХ
Нормализация – это процесс разбиения таблицы на две или более, обладающих лучшими свойствами при включении, изменении и удалении данных.
[Агальцов В.П. Базы данных. В 2-х кн. Книга 1. Локальные базы данных]
Окончательная цель нормализации : получение такого проекта базы данных, в котором исключена избыточность информации.
А делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости хранимых данных.
НФ, которые определены к настоящему времени
Как отмечает Дейт К.Дж. [Введение в системы баз данных, 8-е издание.], общее назначение процесса нормализации заключается в следующем:
- исключение некоторых типов избыточности;
- устранение некоторых аномалий обновления;
- разработка проекта базы данных, который является достаточно «качественным» представлением реального мира, интуитивно понятен и может служить хорошей основой для последующего расширения;
- упрощение процедуры применения необходимых ограничений целостности.
Функциональная зависимость
Поле Б таблицы функционально зависит от поля А той же таблицы в том и только в том случае, когда в любой заданный момент времени для каждого из различных значений поля А обязательно существует только одно из различных значений поля Б.
Полная функциональная зависимость
Поле Б находится в полной функциональной зависимости от составного поля А, если оно функционально зависит от А и не зависит функционально от любого подмножества поля А.
Многозначная зависимость
Поле А многозначно определяет поле Б той же таблицы, если для каждого значения поля А существует хорошо определенное множество соответствующих значений Б.
Например, многозначная зависимость «Дисциплина-Преподаватель»: дисциплина (в примере Информатика) может читаться несколькими преподавателями.
1НФ
Таблица находится в первой нормальной форме (1НФ) тогда и только тогда, когда ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто.
[1. Диго С.М. Базы данных. Проектирование и создание: Учебно-методический комплекс.
2. Агальцов В.П. Базы данных. В 2-х кн. Книга 1. Локальные базы данных ]
2НФ
Таблица находится во второй нормальной форме (2НФ) , если она удовлетворяет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.
3НФ
Таблица находится в третьей нормальной форме (3НФ) , если она удовлетворяет определению 2НФ и ни одно из ее неключевых полей не зависит функционально от любого другого неключевого поля.
НФБК
Таблица находится в нормальной форме Бойса-Кодда (НФБК), если и только если любая функциональная зависимость между его полями сводится к полной функциональной зависимости от возможного ключа.
Это происходит вследствие отсутствия составных потенциальных ключей и пересечения каких-либо их атрибутов.
В следующих нормальных формах (4НФ и 5НФ) учитываются не только функциональные, но и многозначные зависимости между полями таблицы.
5НФ
Таблица находится в пятой нормальной форме (5НФ) тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ.
Таблица, не имеющая ни одной полной декомпозиции, также находится в 5НФ.
4НФ
Четвертая нормальная форма (4НФ) является частным случаем 5НФ, когда полная декомпозиция должна быть соединением ровно двух проекций. Весьма не просто подобрать реальную таблицу, которая находилась бы в 4НФ, но не была бы в 5НФ.
Это требование выполняется, если в таблицах отсутствуют многозначные функциональные зависимости атрибутов ключей.
ДКНФ
Отношение находится в доменно-ключевой НФ, если каждое ограничение, накладываемое на это отношение, является логическим следствием определения доменов и ключей.
[Крёнке Д. Теория и практика построения баз данных. 8-е изд]
Покажем, что отношение STUDENTS соответствует не только требованиям НФБК, но и требованиям ДКНФ.
В этом отношении есть ограничение первичного ключа (StudID) и могут присутствовать ограничения на правила формирования идентификаторов студентов, номеров учебных групп, порядок записи имен и фамилий.
- Ограничение домена в том смысле, в котором оно здесь употребляется, – это ограничение, предписывающее использование для определенного атрибута значений только из некоторого заданного домена. (Это ограничение упоминается как ограничение атрибута, а не как ограничение типа, даже не смотря на то, что домены представляют собой типы.)
- Ограничение ключа – это ограничение, утверждающее, что некоторый атрибут или комбинация атрибутов представляет собой потенциальный ключ.
Все перечисленные ограничения связаны или с ключами, или с определением доменов, таким образом, отношение соответствует ДКНФ.
Алгоритм преобразования отношения к ДКНФ авторами однозначно не был определен, поэтому можно сказать, что ДКНФ показывает, каким требованиям должно отвечать отношение, но не дает ответа, как этого добиться.
Недостаток нормализации
- замедление работы СУБД при выполнении запросов на извлечение (выборку) данных.
Чем выше степень нормализованности базы данных, тем больше в ней таблиц, следовательно, тем медленнее выполняются запросы на выборку.
Денормализация -
это процесс модификации структуры таблиц нормализованной базы данных с целью повышения производительности за счет допущения некоторой управляемой избыточности данных.