Историю можно вести версиями строк, журналом изменений или отдельной исторической таблицей. Выбор зависит от того, нужно ли восстановить состояние на дату или только узнать, кто что изменил.
Какие есть способы ведения истории изменений данных в базе? Например, как сохранить смену фамилии пользователя?
Историю можно вести версиями строк, журналом изменений или отдельной исторической таблицей. Выбор зависит от того, нужно ли восстановить состояние на дату или только узнать, кто что изменил.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Историю можно вести версиями строк, журналом изменений или отдельной исторической таблицей. Выбор зависит от того, нужно ли восстановить состояние на дату или только узнать, кто что изменил.
Для смены фамилии подходит SCD Type 2: старая версия закрывается датой окончания, новая получает новую дату начала. SCD Type 1 просто перезаписывает значение и историю не сохраняет. Для исправления ошибки и реального изменения могут требоваться разные правила, поэтому семантику согласуют заранее.