Ответ 1
Существует подход к проектированию систем с идеей никогда не удалять или мутировать данные, называемые Event Sourcing. В принципе, идея состоит в том, чтобы хранить события (или факты), которые изменяют состояние системы, а не моментальные снимки состояния. История событий может быть воспроизведена позже, чтобы создать определенную целевую проекцию того, как выглядело состояние в любой момент времени. Многочисленные проекции, построенные для разных целей, могут сосуществовать в системе. Более подробную информацию можно найти на следующих веб-сайтах:
- http://martinfowler.com/eaaDev/EventSourcing.html
- http://codebetter.com/gregyoung/2010/02/20/why-use-event-sourcing/
Это в соответствии с тем, что вы описываете, но вместо того, чтобы быть просто моделью базы данных, Event Sourcing и Command Query Responsibility Segregation (CQRS) предписывают специальный способ проектирования всей системы, включая уровни базы данных и бизнес-логики.
Существует несколько рамок, которые следуют этому подходу, например:
Хотя это напрямую не отвечает на ваш вопрос, это может дать другую точку зрения на проблему.