Gymterview
middle

Что такое денормализация и для чего она применяется?

Денормализация — осознанное внесение избыточности в структуру базы данных (отступление от нормальных форм) с целью повышения производительности чтения за счёт сокращения количества JOIN.

Аналогия из жизни: денормализация — это как написать шпаргалку. Информация дублируется, но при необходимости вы находите ответ мгновенно, не листая учебник.

Когда применяется денормализация

  • Частые сложные запросы с множеством JOIN тормозят систему
  • Данные читаются значительно чаще, чем обновляются (read-heavy нагрузка)
  • Нужна быстрая аналитика и отчёты (OLAP)
  • Построение материализованных представлений (materialized views)

Приёмы денормализации

Приём Описание Пример
Дублирование атрибутов Копирование поля из связанной таблицы Хранение user_name в таблице orders
Предвычисленные агрегаты Хранение результатов вычислений Поле total_orders в таблице users
Объединение таблиц Слияние часто соединяемых таблиц в одну Объединение orders и order_items
Материализованные представления Сохранённый результат запроса CREATE MATERIALIZED VIEW

Компромиссы

Нормализация Денормализация
Минимум избыточности Избыточные данные
Целостность обеспечена структурой Целостность на уровне приложения
Медленное чтение (JOIN) Быстрое чтение
Быстрая запись Медленная запись (обновление копий)
OLTP OLAP

На собеседовании: интервьюер хочет услышать, что денормализация — это осознанный компромисс, а не «плохой дизайн». Важно объяснить, в каких конкретно ситуациях она оправдана. Частая ошибка — не упомянуть, что при денормализации ответственность за целостность данных ложится на приложение.