Сколько нормальных форм (НФ) существует в теории реляционных баз данных?

«Сколько нормальных форм (НФ) существует в теории реляционных баз данных?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Теория описывает шесть основных нормальных форм, но на практике чаще всего используются первые три.

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

  1. Первая НФ (1НФ): Отсутствие составных и повторяющихся атрибутов (все значения атомарны).
  2. Вторая НФ (2НФ): Выполнена 1НФ, и все неключевые атрибуты полностью зависят от всего составного первичного ключа.
  3. Третья НФ (3НФ): Выполнена 2НФ, и отсутствуют транзитивные зависимости (неключевые атрибуты не зависят от других неключевых атрибутов).

Пример нарушения 3НФ:

-- customer_name зависит от customer_id, а не напрямую от order_id
CREATE TABLE Orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    customer_name VARCHAR(100) -- Нарушение 3НФ
);

Решение: Вынести customer_name в отдельную таблицу Customers.

Дополнительные НФ:

  • Нормальная форма Бойса-Кодда (НФБК/BCNF): Усиленная версия 3НФ для случаев со множественными потенциальными ключами.
  • Четвертая НФ (4НФ): Устранение нетривиальных многозначных зависимостей.
  • Пятая НФ (5НФ): Устранение зависимостей по соединению.
  • Шестая НФ (6НФ): Доменно-ключевая нормальная форма (каждая нетривиальная зависимость является следствием ограничений ключей и доменов).