Включите исполнение JavaScript в браузере, чтобы запустить приложение.
9 мар 2025

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

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

Зачем выполнять нормализацию данных и как это делать? Разберем на простом примере.

Представим базу данных как огромный excel-файл с разрозненной информацией. Чтобы с ним было удобно работать, нужно систематизировать и упорядочить записи: отсортировать по категориям, разбить таблицу на несколько вкладок и установить связи между этими вкладками.

В процессе обработки записей нужно следовать определенным правилам, которые помогут защитить информацию, сделать БД более гибкой и управляемой. Эти правила и сам подход к организации табличных баз называется нормализацией.

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

Это процесс распределения данных по взаимосвязанным таблицам. Нормализация помогает преобразовать информацию так, чтобы привести к единообразию разные единицы измерения, форматы и масштабы.

Например, в этой таблице данные не нормализованы:

ГородПлощадь, кв. кмНаселение, млн человекПлотность населения, человек на кв. км
Москва2 51119,15 100
Санкт-Петербург1 4395,64 000
Екатеринбург1 1101,51 400

Параметры указаны в разных единицах измерения, отношения и связи между ними неочевидны. Данные сложно сравнить напрямую, что затрудняет аналитику и использование информации в расчетах, прогнозах, моделировании. Чтобы привести данные к одному масштабу, нужно выполнять нормализацию.

Цели и принципы нормализации

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

  • стандартность — величины представлены в общепринятом стандарте (например, площадь города — в квадратных километрах);
  • консистентность (от data consistency — «согласованность») — данные последовательны и не противоречат друг другу;
  • полнота — количество информации в базе достаточно для анализа или выполнения других задач;
  • актуальность — информация не устарела и соответствует временному интервалу, к которому относится задача;
  • уникальность — в базе нет записей-дубликатов;
  • валидность — информация релевантна и относится к сути задачи или объекту исследования.

Нормализация помогает повысить качество данных в отношении консистентности и уникальности.

Главные цели, которые преследует нормализация данных:

  • устранение избыточности — явления, при котором одни и те же записи хранятся в нескольких местах базы;
  • уменьшение размера базы;
  • сохранение целостности данных при их изменении.

В ненормализованном виде одна таблица может хранить данные о нескольких сущностях — так в информатике и аналитике называются объекты или классы объектов. Кроме этого, неструктурированная таблица может содержать повторяющиеся столбцы и одинаковые ячейки в разных столбцах. После нормализации одна таблица содержит информацию только об одной сущности.

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

Первая нормальная форма — 1NF

Требования к 1NF:

  • таблица не содержит повторяющиеся группы;
  • все столбцы содержат атомарные (неделимые) значения;
  • каждая строка уникальна и идентифицируется уникальным первичным ключом.

Например, в однотабличной БД «Клиенты» есть колонки «Ф. И. О.» и «Телефоны». Колонку «Ф. И. О.» нужно разделить на три столбца — «Фамилия», «Имя», «Отчество», в каждом хранится по одному слову. Колонка «Телефоны» должна содержать только один номер для каждого клиента. Если у контакта несколько номеров, телефоны нужно записать в отдельные строки или создать отдельную таблицу для этого.

Вторая нормальная форма — 2NF

Содержание и структура таблицы должны соответствовать критериям 1NF. Для переменных, которые относятся к нескольким записям, нужно создавать отдельные таблицы, связанные внешним ключом.

Пример: телефонный номер клиента используется в таблицах «Заказы», «Доставка», «Договоры», «Контакты», «Сделки». После преобразования в соответствии с требованиями 2NF телефон хранится только в одной таблице, а к другим — их может быть сколько угодно — привязан с помощью кода-ключа. 

Третья нормальная форма — 3NF

БД должна соответствовать требованиям второй NF. Поля, которые не зависят от ключа, исключены. Все колонки в таблице не зависят друг от друга.

Например, в базе «Заказы» хранятся города клиентов, которые хотя бы раз делали заказ. По этой БД не получится проанализировать географию бизнеса: непонятно, сколько клиентов из каких регионов проявили интерес к продукту — видны только те, кто успел сделать заказ. Лучше создать отдельную таблицу со списком городов и связать ее с базой заказов при помощи ключа — кода города. 

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

Остальные уровни применяются еще реже:

  • нормальная форма Бойса-Кодда — BCNF;
  • четвертая — 4NF;
  • пятая — 5NF;
  • шестая — 6NF (domain key normal form, доменно-ключевая нормальная форма).

Недостаток 6NF — высокая сложность процессов обработки. Доменно-ключевая нормальная форма применима к хронологическим таблицам и данным, меняющимся во времени. 6NF вводит концепцию декомпозиции по времени: каждая таблица должна быть разбита до такой степени, что каждое изменение данных отражается в отдельной таблице с указанием времени изменения. Как правило, 6NF не используют в стандартных СУБД: она полезна в системах, где требуется точный учет изменений с течением времени: например, в финансовой аналитике или при работе с историческими данными. 

Методы нормализации данных

Рассмотрим несколько подходов, которые используются для повышения качества данных и подготовки собранной статистики к проведению анализа.

Минимально-максимальная нормализация (min-max scaling)

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

Формула: X’ = (X−Xmin)/(Xmax−Xmin)

Переменные в формуле:

  • X — исходная величина;
  • Xmin — минимум в наборе данных;
  • Xmax — максимум в наборе данных;
  • X’ — нормализованная величина.

Метод используют для обработки данных с известными минимальными и максимальными величинами.

Z-преобразование (z-score)

Процесс преобразования данных на основе средней величины и стандартного отклонения.

Формула: X’ = (X−μ)/σ

Переменные:

  • X — исходная величина;
  • μ — средняя величина;
  • σ — стандартное отклонение;
  • X’ — нормализованная величина.

В результате данные представлены в виде расстояний от средней величины, измеренных в стандартных отклонениях.

Нормализация данных на основе среднего значения (mean normalization)

Приводит величины к диапазону, центрированному вокруг нуля.

Формула: X’ = (X−Xˉ)/(Xmax−Xmin)

Переменные: 

  • X — исходная величина;
  • Xˉ — средняя величина;
  • Xmin — минимум в наборе данных;
  • Xmax — максимум в наборе данных;
  • X’ — нормализованная величина.

После преобразования средняя величина всего набора данных равна 0.

Преимущества нормализации данных

Нормализация — это способ обеспечить порядок и точность информации в однотабличных и многотабличных базах данных. Выполнение требований 1NF и 2NF делает данные более надежными и гибкими, устраняет избыточность, предотвращает появление ошибок при обновлении или удалении записей в БД.

Зачем применять нормализацию данных

Нормализация используется в проектировании СУБД, аналитике, математическом моделировании, Big Data, машинном обучении и других областях.

При работе с финансовыми данными правила нормализации помогают привести разные экономические показатели к единому масштабу для упрощения анализа и прогнозирования.

В ML-разработке данные нормализуют перед подачей в алгоритм нейронной сети, чтобы повысить эффективность обучения и точность модели. 

Термин Data Normalization обычно ассоциируется с табличными хранилищами — реляционными моделями: концепция нормализации изначально направлена на решение проблем избыточности и непоследовательности данных в БД, использующих язык запросов SQL. Однако подход может быть полезен и за пределами SQL — например, для организации данных в графовых, документоориентированных и других типах БД. 

Создавать приложения для работы с данными любых типов, развивать программные продукты на любых языках программирования и хранить файлы с исходным кодом удобно на GitVerse. Это российская платформа с хорошо продуманным инструментарием для решения разных задач программиста. Познакомиться с преимуществами GitVerse можно после регистрации