Описание тега denormalization
Денормализация - это процесс попытки оптимизировать производительность чтения базы данных путем добавления избыточных данных, группирования данных или ведения журнала.
Полностью нормализованная схема показывает только текущее состояние. Например, если в таблице "Клиент" клиент переходит на другой адрес, старый будет заменен на новый и утерян. Это можно решить, сохранив копию столбцов в таблице со старым адресом.
В нормализованной базе данных обычно больше таблиц. Это означает, что для выполнения запросов потребуется больше соединений, и это может отрицательно сказаться на производительности. Предварительно рассчитанные количества могут помочь избежать множества объединений и часто объединять большие наборы данных.
Однако денормализация всегда создает опасность аномалий обновления базы данных. Это должно быть сделано сознательно и хорошо задокументировано. Чтобы убедиться, что приложение поддерживает денормализованные данные, необходимы транзакции. Транзакции - это наименьшая единица работы, которая должна быть либо завершена полностью, либо не выполняться вовсе.
Транзакции должны завершаться неудачно, что обеспечивает согласованность данных. Если что-то не получается, следует провести процедуры восстановления данных с нуля.
В хранилищах данных используется денормализация для ведения истории. Для реализации медленно изменяющихся измерений (SCD) требуются дополнительные столбцы в таблице для более старых дат или текущих индексов.
Ссылки