Контекст
, учитывая, что источник данных обновляется в соответствии с SCD 1 (Перезапись). Единственный способ отслеживать изменения по дням - это сбор данных каждый день. На практике запланируйте ежедневную загрузку источника данных и сохраните новые данные на этот день.
Ответ
Вы реализуете SCD 2 (Создать новую запись в изменить) правильно. Важно убедиться, что к каждой записи добавлено техническое поле с отметкой времени, когда она была сгенерирована, чтобы вы могли изучить тренд позже.
Extra
Вы можете в конечном итоге оптимизировать этот подход, нормализуя модель, чтобы уменьшить размер таблицы, к которой вы применяете SCD 2 (Создать новую запись при изменении).
Пожалуйста, позвольте мне привести простой пример. Рассмотрим таблицу с:
- только 1 запись
- 1000 полей, из которых только 1 поле (LAST_UPDATE) можно изменить с помощью SCD 2 (Создать новую запись при изменении)
Если LAST_UPDATE изменяется 100 000 раз в день, каждый день запускается создание 100 000 новых версий одной и той же записи (поскольку мы отслеживаем ее изменения). Следовательно, через год в таблице будет еще 1000 полей и 36 500 000 записей. Вместо этого, если мы нормализуем модель таким образом, что поле LAST_UPDATE (с историей SCD 2) будет сохранено в отдельной таблице, через год у нас будет одна таблица с 1 записью и 999 столбцами, а другая таблица с 1 столбцом и 36 500 000 записей.
В случае, если ваша база данных является базой данных строк, вы очень выиграете от нормализации модели. Вместо этого, если ваша база данных является столбчатой базой данных, обо всем уже позаботятся, потому что каждый столбец сжимается отдельно, а не по строкам.