Описание тега denormalization

Денормализация - это процесс перехода от более высоких нормальных форм моделирования базы данных к более низким, чтобы повысить производительность чтения базы данных или сохранить историю.

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

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

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

Однако денормализация всегда создает опасность аномалий обновления базы данных. Это должно быть сделано сознательно и хорошо задокументировано. Чтобы убедиться, что приложение поддерживает денормализованные данные, необходимы транзакции. Транзакции - это наименьшая единица работы, которая должна быть либо завершена полностью, либо не выполняться вовсе.

Транзакции должны завершаться неудачно, что обеспечивает согласованность данных. Если что-то не получается, следует провести процедуры восстановления данных с нуля.

В хранилищах данных используется денормализация для ведения истории. Для реализации медленно изменяющихся измерений (SCD) требуются дополнительные столбцы в таблице для более старых дат или текущих индексов.

Ссылки

Оптимизация дизайна базы данных путем денормализации