Without the Id field in your entity, you cannot match it with a database row. Therefore, this id field, even if it has nothing to do with your objects, should flow in your domain model.
I feel that it’s most common to use a presentation model, especially if what you are trying to achieve hides some properties.
I think that the separation of problems is mainly due to the limited context. For example, your Person, PersonView, and Person table all seem to refer to a transaction processing context. In this context, I would not even have a PersonView, and the character table would be abstracted.
On the other hand, if you are in the context of reporting, PersonView will be more useful.
I think the context is much more important than any layering scheme.
As for the lack of a natural key in your personality, this may mean that Man is not an entity. For example, in any real-life application, there is always a number associated with a person: an employee has an employee number, a client as an account number, etc. This business identifier is definitely part of the domain.
Simon laroche
source share