Термин · Глоссарий B2B-ПО

Нормализация данных

Нормализация данных – процесс организации реляционной базы данных путём декомпозиции таблиц для устранения избыточности и аномалий обновления. Осуществляется в соответствии с нормальными формами (1НФ–5НФ, BCNF), каждая из которых налагает определённые ограничения на зависимости между атрибутами.

Буква «Н» В категориях: 3 Платформ: 6+

Введение

Нормализация данных – процесс структурирования реляционной базы данных путём организации атрибутов и таблиц по определённым правилам (нормальным формам) с целью устранения избыточности данных и аномалий при операциях вставки, обновления и удаления. Концепция разработана Э. Ф. Коддом в 1970–1974 годах вместе с реляционной моделью данных.

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

История и контекст

Эдгар Кодд ввёл понятие первой нормальной формы (1НФ) в 1970 году, второй и третьей (2НФ, 3НФ) – в 1972-м. Нормальная форма Бойса-Кодда (BCNF) – уточнение 3НФ – предложена Рэймондом Бойсом и Коддом в 1974 году. Четвёртая (4НФ) и пятая (5НФ) нормальные формы добавлены позже для обработки многозначных зависимостей.

Нормализация до 3НФ/BCNF стала стандартом проектирования транзакционных (OLTP) баз данных. В аналитических системах (OLAP, DWH) применяется осознанная денормализация для ускорения запросов – этот компромисс между нормализацией и производительностью является ключевым в архитектурном выборе DBA.

Как это работает

Нормализация проходит через последовательность нормальных форм:

  1. 1НФ (Первая нормальная форма): все атрибуты содержат только атомарные (неделимые) значения; каждая строка уникальна (есть первичный ключ). Устраняются повторяющиеся группы и массивы в ячейках.
  2. 2НФ (Вторая нормальная форма): 1НФ + каждый не-ключевой атрибут полностью функционально зависит от всего первичного ключа (не от его части). Актуально при составных ключах.
  3. 3НФ (Третья нормальная форма): 2НФ + нет транзитивных зависимостей: не-ключевой атрибут не зависит от другого не-ключевого атрибута. Позволяет вынести справочники в отдельные таблицы.
  4. BCNF (Нормальная форма Бойса-Кодда): усиленная 3НФ – каждый детерминант является потенциальным ключом.
  5. 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 – нормализация устраняет класс аномалий, повышая качество данных при изменениях.

Понятия из глоссария Цифрового маркетплейса, которые часто встречаются вместе с термином «Нормализация данных».

Платформы класса «Нормализация данных»

Решения из каталога Цифрового маркетплейса, относящиеся к этому классу ПО. Карточки ведут на полные карточки платформ с тарифами, обзорами и кейсами внедрения.

ClickHouse

ClickHouse

ИТ-инфраструктура
ClickHouse — колоночная аналитическая СУБД (OLAP), созданная Яндексом и открытая в 2016 году. Обеспечивает обр...
Цена по запросу
★ 4.8
Подробнее →
ЛИНТЕР БАСТИОН

ЛИНТЕР БАСТИОН

ИТ-инфраструктура
ЛИНТЕР БАСТИОН — полностью отечественная реляционная СУБД, разработанная АО НПП «РЕЛЭКС» (Воронеж). Не основан...
Цена по запросу
★ 4.6
Подробнее →
СИНЕРГИЯ-БД

СИНЕРГИЯ-БД

ИТ-инфраструктура
СИНЕРГИЯ-БД — импортонезависимая защищённая система управления базами данных, разработанная РФЯЦ-ВНИИЭФ (Всеро...
Цена по запросу
★ 4.7
Подробнее →
Field Connect

Field Connect

ИТ-инфраструктура
Программное обеспечение для удалённого управления и мониторинга сельскохозяйственного оборудования: дождевальн...
Цена по запросу
★ 4.7
Подробнее →
СБ

СДИ Базис

ИТ-инфраструктура
СДИ Базис - модульный программный продукт для технического учета и документирования ИТ-, телекоммуникационной...
Цена по запросу
★ 4.5
Подробнее →

Категории каталога

Разделы каталога Цифрового маркетплейса, в которые входят решения, использующие «Нормализация данных».

Где применяется

Отрасли, в которых «Нормализация данных» используется на практике. Откройте отраслевой раздел Цифрового маркетплейса, чтобы увидеть подходящие решения, кейсы и новости.

Частые вопросы про Нормализация данных

До какой нормальной формы нужно нормализовать базу данных?

Для большинства OLTP-систем достаточно 3НФ/BCNF – она устраняет все практически значимые избыточности. 4НФ и 5НФ применяются редко, в специфических случаях с многозначными зависимостями.

Почему DWH намеренно денормализован, если нормализация – хорошая практика?

DWH оптимизирован для чтения, а не записи. Денормализованные схемы «звезда» и «снежинка» требуют меньше JOIN при аналитических запросах, что критично для скорости. Нормализация важна для транзакционных систем с высокой частотой изменений.

Что такое функциональная зависимость в контексте нормализации?

Атрибут B функционально зависит от атрибута A, если для каждого значения A существует ровно одно значение B. Нормализация устраняет нежелательные функциональные зависимости, перемещая связанные атрибуты в отдельные таблицы.

Можно ли нормализовать базу данных после её создания?

Да, но это сложно при наличии данных и зависимостей: нужно разбить таблицы, перенести данные, обновить все запросы и приложения. Проще проектировать нормализованную схему изначально.

Как нормализация связана с производительностью СУБД?

Нормализация снижает объём хранимых данных (меньше дублирования) и ускоряет операции INSERT/UPDATE/DELETE. Но аналитические SELECT с многими JOIN работают медленнее. Поэтому OLTP-базы нормализованы, OLAP-базы денормализованы.