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

Нормализация - это пошаговый, обратимый процесс замены исходной схемы другой схемой, в которой таблицы имеют более простую и логичную структуру. Существуют следующие нормальные формы:

  • 1НФ - первая нормальная форма
  • 2НФ - вторая нормальная форма 
  • 3НФ - третья нормальная форма 
  • НФБК - нормальная форма Бойса-Кодда 
  • 4НФ - четвертая нормальная форма 
  • 5НФ - пятая нормальная форма

1. Первая нормальная форма

Основные критерии:

  • Все строки должны быть различными.
  • Все элементы внутри ячеек должны быть атомарными (не списками).

Другими словами, элемент является атомарным, если его нельзя разделить на части, которые могут использовать в таблице независимо друг от друга.

Пример не 1NF таблицы:

Категория Товары
Книги Война и мир, Азбука
Игрушки Юла

Исправить можно так:

Категория Товары
Книги Война и мир
Книги Азбука
Игрушки Юла

2. Вторая нормальная форма

Основные критерии:

  • Таблица должна находиться в первой нормальной форме.
  • Любое её поле, не входящее в состав первичного ключа, функционально полно зависит от первичного ключа.

Если Ваша таблица приведена к первой нормальной форме и у нее установлен уникальный id для каждой строки, то она находится и во второй нормальной форме.

Значение второго правила можно понять на примере, когда первичный ключ таблицы состоит из нескольких полей.

Например, следующая таблица находится в первой нормальной форме, но не во второй. В этой таблице первичный ключ составляют первые два столбца (Деталь и Склад). Количество функционально полно зависит от них обоих, так как определяется одновременно Деталью и Складом. А вот с ‘Адресом склада’ проблемы. Он зависит только от Склада не зависит от Детали.

Деталь, pk Склад, pk Количество Адрес склада
Экран Склад 1 56 Клочковская 34
Мышь Склад 2 78 Пушкинская 75
Клавиатура Склад 3 90 Коломенская 56

Поэтому, говорят, что он зависит функционально не полно от всего первичного ключа и функционально полно от его части (Склад). Это нарушает требования второй нормальной формы. Исправляется это разделением этой таблицы на две другие:

Склад, pk Адрес склада
Склад 1 Клочковская 34
Склад 2 Пушкинская 75
Склад 3 Коломенская 56

 

Деталь, pk Склад, pk Количество
Экран Склад 1 56
Мышь Склад 2 78
Клавиатура Склад 3 90

3. Третья нормальная форма

Основные критерии:

  • Таблица находится во второй нормальной форме.
  • Любой её не ключевой атрибут функционально зависит только от первичного ключа.

Проще говоря, второе правило требует выносить все не ключевые поля, содержимое которых может относиться к нескольким записям таблицы в отдельные таблицы.

Например:

Сотрудники

N табельный,PK Фамилия Имя Отчество Код должности Оклад
1 Федоров Иван Иваныч 1 1000
2 Бурундуков Федор Федорович 2 2000
3 Стрелков Иван Иваныч 1 1000

В этой таблице Оклад зависит не только от N табельный, но и от поля Код должности. Разделим эту таблицу на две другие:

N табельный,PK Фамилия Имя Отчество Код должности
1 Федоров Иван Иваныч 1
2 Бурундуков Федор Федорович 2
3 Стрелков Иван Иваныч 1
Код должности Оклад
1 1000
2 2000
1 1000
Read also:
Trustpilot
Trustpilot
Comments