Какие основные нормальные формы баз данных существуют?

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

Ответ

Нормализация — процесс устранения избыточности и аномалий в структуре базы данных. Основные нормальные формы (NF):

Форма Требование Пример нарушения/исправления
1NF (Первая) Атомарность атрибутов, отсутствие повторяющихся групп. "Иван;Петр" в одной ячейке → разделить на две строки.
2NF (Вторая) Выполняет 1NF. Нет частичных зависимостей неключевых атрибутов от составного первичного ключа. Заказ(№_заказа, Товар, Цена_товара). Цена зависит только от Товара, а не от всего ключа → вынести в отдельную таблицу Товары.
3NF (Третья) Выполняет 2NF. Нет транзитивных зависимостей (неключевой атрибут зависит от другого неключевого). Студент(ID, Группа, Староста_группы). Староста зависит от Группы, а не от ID студента → вынести в таблицу Группы.
BCNF (Бойса-Кодда) Усиленная 3NF. Для каждой функциональной зависимости X → Y детерминант X должен быть суперключом. Решает редкие аномалии, которые остаются после 3NF.
4NF Решает проблему многозначных зависимостей. Таблица Преподаватель(Преподаватель, Предмет, Аудитория), где один преподаватель ведет несколько предметов в нескольких аудиториях.

Цель: Достижение баланса между устранением аномалий (вставки, обновления, удаления) и производительностью запросов. Чрезмерная нормализация может привести к необходимости частых JOIN.