Это началось с комментария, но стало слишком длинным, так что ...
С какой базой данных вы работаете?
Например, SQL Server представил концепцию временных таблиц в версии 2016 года.По сути, у вас есть две таблицы, идентичные по структуре, одна из которых является основной таблицей, в которой вы можете использовать DML, как если бы вы использовали обычную таблицу, а другая - таблицу только для чтения, в которой хранятся исторические данные - так что когда вы обновляете запись в основнойВ действительности, таблица сначала копируется в таблицу истории, а затем обновляется.
Нечто подобное может существовать и в других базах данных, а также может быть довольно легко реализовано вручную с использованием триггеров, если ваша база данных не предоставляет его «из коробки».
Конечно, вы можетеиспользуйте технику, называемую «мягкое удаление», где вместо фактического удаления данных вы просто помечаете их как удаленные, и вместо обновления данных вы создаете новую запись с обновленными данными и меняете статус существующей записи на «Неактивный».
Основным преимуществом этого подхода перед временными таблицами является то, что у вас по-прежнему есть только одна таблица для вашей сущности вместо двух, но с другой стороны, преимущество временных таблиц состоит в том, что активные данные хранятся в отдельной таблице.Исходя из исторических данных, активные данные хранятся в сравнительно небольшой таблице, и в результате все операции CRUD более эффективны.
«Боязнь» раздутой таблицы в наши дни и в возрасте, когда памятьи хранилище так дешево кажется немного страннымдля меня.