It is required to develop a database model (or data warehouse) in which not only the current state would be stored, as in ordinary operational databases, but also the entire history of changes of any attributes of any entity over time in order to know everything on any time slice, as done with aggregated data in data warehouses. But if the text attributes and nothing to aggregate, it is unclear how to build such a model. Something close to what I need, probably, temporal databases. I would like to know references to books, scientific articles, open projects on this topic.
Then we have only the essence (for simplicity, let it be one and simple) and it can change. We can choose to keep copies or only changes and calculate the desired state when prompted.
In the first case, we need to keep copies of the entities and keep track of versions, for this it is enough to determine such data in the entity itself and mark the latest version as final.
In the second case, we will need a mechanism for calculating changes between versions and applying them to the entity itself, when requested.
The easiest script. Get the latest version of entity A, edit and save:
1) refer to the service layer (knows nothing about versions) with a request to take entity A,
2) the data layer requests the entity A and adds an item about the latest version to the request,
3) receives an entity and gives it to a service that gives it to us,
4) change the entity and ask the service layer to save it,
5) the data layer marks the new version as the last, and this status is removed from the old one.
6) two entities are saved, but for us it will look like one entity, since we will operate with only one entity.
With other things it is much more difficult in terms of compactness - you have to store them entirely.