Введение
Нормализация данных – процесс структурирования реляционной базы данных путём организации атрибутов и таблиц по определённым правилам (нормальным формам) с целью устранения избыточности данных и аномалий при операциях вставки, обновления и удаления. Концепция разработана Э. Ф. Коддом в 1970–1974 годах вместе с реляционной моделью данных.
Ненормализованная база данных, где одна таблица содержит данные о клиентах, заказах и продуктах вместе, порождает три класса проблем: аномалия вставки (нельзя добавить товар без заказа), аномалия обновления (изменение адреса клиента требует обновления тысяч строк) и аномалия удаления (удаление последнего заказа уничтожает данные о клиенте).
История и контекст
Эдгар Кодд ввёл понятие первой нормальной формы (1НФ) в 1970 году, второй и третьей (2НФ, 3НФ) – в 1972-м. Нормальная форма Бойса-Кодда (BCNF) – уточнение 3НФ – предложена Рэймондом Бойсом и Коддом в 1974 году. Четвёртая (4НФ) и пятая (5НФ) нормальные формы добавлены позже для обработки многозначных зависимостей.
Нормализация до 3НФ/BCNF стала стандартом проектирования транзакционных (OLTP) баз данных. В аналитических системах (OLAP, DWH) применяется осознанная денормализация для ускорения запросов – этот компромисс между нормализацией и производительностью является ключевым в архитектурном выборе DBA.
Как это работает
Нормализация проходит через последовательность нормальных форм:
- 1НФ (Первая нормальная форма): все атрибуты содержат только атомарные (неделимые) значения; каждая строка уникальна (есть первичный ключ). Устраняются повторяющиеся группы и массивы в ячейках.
- 2НФ (Вторая нормальная форма): 1НФ + каждый не-ключевой атрибут полностью функционально зависит от всего первичного ключа (не от его части). Актуально при составных ключах.
- 3НФ (Третья нормальная форма): 2НФ + нет транзитивных зависимостей: не-ключевой атрибут не зависит от другого не-ключевого атрибута. Позволяет вынести справочники в отдельные таблицы.
- BCNF (Нормальная форма Бойса-Кодда): усиленная 3НФ – каждый детерминант является потенциальным ключом.
- 4НФ и 5НФ: обрабатывают многозначные и проекционно-соединительные зависимости; применяются редко.
На практике большинство OLTP-баз проектируются до 3НФ/BCNF. Инструменты: ERD-диаграммы в ER-нотации, инструменты CASE (ERwin, PowerDesigner), встроенные designers СУБД.
Где применяется
- OLTP-системы: ERP, CRM, банковские АБС – системы, где данные активно изменяются и целостность критична.
- Исходный слой DWH (ODS): копия операционных данных сохраняется в нормализованном виде для полноты и целостности.
- Мастер-данные MDM: золотые записи о клиентах, продуктах проектируются в нормализованном виде.
- Микросервисные базы данных: каждый микросервис имеет свою нормализованную схему для независимой эволюции.
Преимущества и ограничения
Преимущества: устранение избыточности и экономия места; защита от аномалий при INSERT/UPDATE/DELETE; упрощение поддержки при изменении структуры данных; единое место хранения каждого факта.
Ограничения: аналитические запросы с множеством JOIN к нормализованным таблицам медленнее, чем к денормализованным. Для OLAP-нагрузок нормализация – антипаттерн; используется денормализация и схема «звезда».
Связь с другими понятиями
Денормализация – намеренное нарушение нормальных форм для ускорения аналитических запросов. Витрина данных строится на денормализованной схеме «звезда». MDM использует нормализованные структуры для хранения мастер-данных. Data Quality – нормализация устраняет класс аномалий, повышая качество данных при изменениях.