Что такое нормализация базы данных и зачем она нужна?

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

Ответ

Нормализация — это процесс проектирования схемы реляционной базы данных для устранения избыточности данных и минимизации аномалий при операциях вставки, обновления и удаления.

Основные цели:

  1. Исключить дублирование данных.
  2. Предотвратить аномалии модификации данных.
  3. Обеспечить целостность и непротиворечивость данных.

Ключевые нормальные формы:

Форма Правило Пример нарушения и исправления
1NF Все значения атрибутов атомарны, нет повторяющихся групп. Поля: (OrderID, Item1, Item2)(OrderID, Item)
2NF Выполнена 1NF. Все неключевые атрибуты полностью зависят от всего первичного ключа (нет частичных зависимостей). В таблице (OrderID, ProductID, ProductName) ProductName зависит только от ProductID. Исправление: Вынести (ProductID, ProductName) в отдельную таблицу.
3NF Выполнена 2NF. Нет транзитивных зависимостей (неключевой атрибут не должен зависеть от другого неключевого атрибута). В таблице (OrderID, CustomerID, CustomerCity) CustomerCity зависит от CustomerID. Исправление: Вынести (CustomerID, CustomerCity) в отдельную таблицу.

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