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

Ответ

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

Основные цели нормализации:

  • Устранение дублирования данных: Каждый факт хранится только в одном месте.
  • Обеспечение целостности данных: Предотвращение противоречивых данных в базе.
  • Упрощение структуры БД: Создание логически понятных и легко поддерживаемых таблиц.

Процесс нормализации описывается через нормальные формы (НФ). Наиболее часто используются первые три:

  1. Первая нормальная форма (1НФ):

    • Все атрибуты (колонки) должны быть атомарными (неделимыми).
    • В таблице не должно быть повторяющихся групп столбцов.
  2. Вторая нормальная форма (2НФ):

    • Таблица находится в 1НФ.
    • Все неключевые атрибуты полностью функционально зависимы от первичного ключа (актуально для составных ключей).
  3. Третья нормальная форма (3НФ):

    • Таблица находится в 2НФ.
    • Отсутствуют транзитивные зависимости (когда неключевой атрибут зависит от другого неключевого атрибута).

Практический пример

До нормализации (нарушение 1НФ и 3НФ): Одна таблица Orders со всеми данными.

OrderID CustomerName CustomerAddress Products (список)
101 Иван Петров ул. Ленина, 10 "Ноутбук, Мышь"
102 Анна Сидорова пр. Мира, 5 "Клавиатура"

Проблемы: поле Products неатомарно, CustomerAddress зависит от CustomerName, а не от OrderID (транзитивная зависимость).

После нормализации (3НФ): Данные разделены на три логические таблицы.

Таблица Customers CustomerID CustomerName CustomerAddress
1 Иван Петров ул. Ленина, 10
2 Анна Сидорова пр. Мира, 5
Таблица Orders OrderID CustomerID (FK)
101 1
102 2
Таблица OrderItems OrderItemID OrderID (FK) ProductName
1 101 "Ноутбук"
2 101 "Мышь"
3 102 "Клавиатура"

Такая структура устраняет избыточность и аномалии, делая базу данных надежной и масштабируемой.