Зачем выполнять нормализацию данных и как это делать? Разберем на простом примере.
Представим базу данных как огромный excel-файл с разрозненной информацией. Чтобы с ним было удобно работать, нужно систематизировать и упорядочить записи: отсортировать по категориям, разбить таблицу на несколько вкладок и установить связи между этими вкладками.
В процессе обработки записей нужно следовать определенным правилам, которые помогут защитить информацию, сделать БД более гибкой и управляемой. Эти правила и сам подход к организации табличных баз называется нормализацией.
Что такое нормализация данных
Это процесс распределения данных по взаимосвязанным таблицам. Нормализация помогает преобразовать информацию так, чтобы привести к единообразию разные единицы измерения, форматы и масштабы.
Например, в этой таблице данные не нормализованы:
Город | Площадь, кв. км | Население, млн человек | Плотность населения, человек на кв. км |
Москва | 2 511 | 19,1 | 5 100 |
Санкт-Петербург | 1 439 | 5,6 | 4 000 |
Екатеринбург | 1 110 | 1,5 | 1 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 можно после регистрации.