Какие нормальные формы реляционных баз данных вы знаете?

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

Ответ

Существует 6 нормальных форм (НФ), но ключевыми для практического применения являются первые три.

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

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

    -- НЕ 1НФ (список в ячейке)
    CREATE TABLE Orders (order_id INT, products VARCHAR(255)); -- 'ProductA, ProductB'
    
    -- 1НФ
    CREATE TABLE OrderItems (order_id INT, product_id INT);
  2. Вторая нормальная форма (2НФ): Выполнена 1НФ, и каждый неключевой атрибут полностью зависит от всего первичного ключа (нет частичных зависимостей).
  3. Третья нормальная форма (3НФ): Выполнена 2НФ, и неключевые атрибуты не зависят друг от друга (нет транзитивных зависимостей).

Дополнительные нормальные формы:

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

На практике для большинства приложений достаточно приведения к 3НФ.