Нормализация

Проработать

  1. Нормализация баз данных простыми словами
  2. Learn Database Normalization - 1NF, 2NF, 3NF, 4NF, 5NF

Что это

Нормализация(Normalization) - удаление избыточности данных.

Избыточность - это когда одни и те же данные хранятся в базе в нескольких местах, именно это и приводит к аномалиям.

Процесс нормализации – это последовательный процесс приведения базы данных к эталонному виду, т.е. переход от одной нормальной формы к следующей, усовершенствование базы данных.

Декомпозиция – это процесс разбиения одного отношения (таблицы) на несколько.

Ключ – это столбец или набор столбцов, по которым гарантировано можно отличить строки друг от друга, т.е. ключ идентифицирует каждую строку таблицы. Может быть простым(из одного столбца) или составным(из нескольких).

Транзитивная зависимость – это когда неключевые столбцы зависят от значений других неключевых столбцов.

Основные нормальные формы

  1. Ненормализованная форма или нулевая нормальная форма (UNF)
  2. Первая нормальная форма (1NF)
  3. Вторая нормальная форма (2NF)
  4. Третья нормальная форма (3NF)
  5. Нормальная форма Бойса-Кодда (BCNF)
  6. Четвертая нормальная форма (4NF)
  7. Пятая нормальная форма (5NF)
  8. Доменно-ключевая нормальная форма (DKNF)
  9. Шестая нормальная форма (6NF)

База данных считается нормализованной, если она находится как минимум в третьей нормальной форме (3NF).

Первая нормальная форма (1NF)

  1. В таблице не должно быть дублирующих строк.
  2. В каждой ячейке таблицы хранится атомарное значение (одно не составное значение).
  3. В столбце хранятся данные одного типа.
  4. Отсутствуют массивы и списки в любом виде.

Пример несоблюдения

  1. Повторение записей
  2. Хранение списков
  3. Хранение нескольких данных в одном поле

Пример исправления

Вторая нормальная форма (2NF)

  1. Таблица должна находиться в первой нормальной форме.
  2. Таблица должна иметь ключ.
  3. (В случае составного ключа)Все неключевые столбцы таблицы должны зависеть от полного ключа. В таблице не должно быть данных, которые можно получить, зная только половину ключа, т.е. только один столбец из составного ключа.

Если какое-либо поле можно получить по части ключа, то необходимо декомпозировать это поле в отделенную таблицу. И создать связь между таблицами(один к одному и тд.).

Третья нормальная форма (3NF)

  1. Таблица должна находиться во второй нормальной форме.
  2. В таблицах должна отсутствовать транзитивная зависимость. Таблица должна содержать правильные неключевые столбцы. Неключевые столбцы должны засисить только от первичного ключа.

Пример несоблюдения

Колонка "Описание подразделения" зависит от колонки "Подразделение". И должна быть вынесена в отдельную таблицу.

Пример исправления