Нормализация и денормализация данных
Разработчику
Аналитику
Тестировщику
Архитектору
Инженеру
Нормализация
★ Нормализация – это процесс организации данных в БД таким образом, чтобы уменьшить избыточность (дублирование данных) и обеспечить целостность данных. Этот процесс включает разделение данных на несколько связанных таблиц.
Цели нормализации:
- устранение дублирования данных - одинаковые данные хранятся только один раз;
- обеспечение целостности данных - изменение данных в одном месте автоматически отражается во всех связанных местах;
- упрощение обновления данных - уменьшение риска несогласованности данных.
Формы нормализации (нормальные формы)
Первая нормальная форма (1NF)
Первая нормальная форма (1NF) - все значения в столбцах должны быть атомарными (неделимыми). Вместо хранения списка значений в одной ячейке (например, «яблоки, груши») каждое значение должно быть в отдельной строке.
Вторая нормальная форма (2NF)
Вторая нормальная форма (2NF):
- таблица должна соответствовать 1NF;
- все неключевые столбцы должны зависеть от полного первичного ключа.
Если есть таблица заказов с колонками order_id, product_id, product_name, то product_name должен быть вынесен в отдельную таблицу Products.
Третья нормальная форма (3NF)
Третья нормальная форма (3NF):
- таблица должна соответствовать 2NF;
- все неключевые столбцы должны зависеть только от первичного ключа (а не от других неключевых столбцов).
Если в таблице Employees есть столбец department_name, который зависит от department_id, то department_name должен быть вынесен в отдельную таблицу Departments.
Более высокие формы
Более высокие формы (4NF, 5NF, форма Бойса-Кодда) используются реже и применяются для специфических случаев.
При использовании нормализации, уменьшается избыточность данных, обеспечивается их целостность, а обновление упрощается. Минусом является увеличение числа таблиц и связей, что может замедлить выполнение запросов и повысить сложность написания JOIN-операций.
Нормализацию лучше применять:
- когда данные часто обновляются (например, системы учёта, где важно избежать дублирования и несогласованности);
- когда важна целостность данных (например, банковские системы, медицинские записи);
- когда объем данных относительно небольшой (производительность запросов не является критичной.
Денормализация
Понятие денормализации
★ Денормализация – это процесс объединения данных из нескольких таблиц в одну или добавление избыточных данных для повышения производительности чтения. Этот подход часто используется в системах с высокими требованиями к скорости выполнения запросов.
Цели денормализации:
- ускорение запросов - уменьшение числа JOIN-операций за счёт хранения данных в одной таблице;
- оптимизация для чтения - часто данные читаются чаще, чем изменяются, поэтому денормализация может быть полезной;
- упрощение аналитики - хранение предварительно вычисленных данных (например, сводных таблиц) для быстрого анализа.
Пример денормализации
★ Пример денормализации.
Представим интернет-магазин. В нормализованной базе данных есть таблицы Orders, OrderItems, Products. Для ускорения отчётов о продажах можно создать денормализованную таблицу SalesSummary, которая содержит предварительно вычисленные данные: product_name, total_sales, average_price. При использовании денормализации, повышается производительность чтения, упрощаются запросы (меньше JOIN), а для аналитики это удобно. Минусы - увеличение объема данных (избыточность), риск несогласованности данных при обновлении, и сложность поддержки целостности данных.
Применение денормализации
Денормализация применима:
- когда данные читаются чаще, чем изменяются (например, аналитические системы, системы отчётности);
- когда важна скорость выполнения запросов (высоконагруженные веб-приложения);
- когда данные предварительно агрегированы (хранилища данных).


См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Они ускоряют поиск данных в БД, работая как указатели, которые помогают быстро находить нужные записи. для этого используется указание имени базы данных или выбор из списка доступных. Диск (HDD или SSD) — это устройство для долгосрочного хранения данных. Скорость доступа к диску значительно ниже скорости доступа к ОЗУ. Разница может достигать нескольких порядков — диск работает… dbContext.Users — это DbSet, представляющий таблицу Users в БД. ★ Объект - строка. Экземпляр класса (объект) представляет собой строку в таблице. Значения свойств объекта сохраняются в ячейках строки. В современных ORM часто используются аннотации или декораторы… При организации работы с ORM, важно понимать ключевые концепции, на основании которых выстраивают взаимодействие между объектной моделью программы и базой данных. Версионирование схемы БД. Управление изменениями структуры. Структура данных. В ООП данные организованы в виде объектов с методами, а в реляционных БД в виде таблиц с фиксированной структурой. В микросервисной архитектуре каждая служба имеет свою собственную базу данных. ORM используется для управления данными в пределах каждой службы и обеспечивает инкапсуляцию логики доступа к данным.… На практике ORM редко используется в чистом виде. Современные системы комбинируют ORM с другими подходами, чтобы достичь баланса между удобством разработки и производительностью. ORM — это не… Итоги и вопросы по теме Чек-лист самопроверки для самопроверки в энциклопедии Вселенная IT.Работа приложений с базами данных
Взаимодействие программного кода с СУБД
Работа с хранилищем
ORM - объектно-реляционное отображение
Принципы проектирования ORM-систем
Подходы к реализации ORM
Миграции баз данных
Ограничения и проблемы ORM
ORM на практике
Итоги
Чек-лист самопроверки