Когда вы думаете о DDD, оставьте отображение БД на более позднем этапе.Я знаю, что повторяю то, что вы сказали, но только потому, что это правда.У объекта значения может быть идентификатор БД по другим причинам (нормализация, отчетность и т. Д.).
Сначала придумайте свою объектную модель, а затем выясните, как ее отобразить.В некоторых (редких) случаях вам может понадобиться немного изменить объектную модель, если есть что-то, что слишком дорого для правильного отображения (я не могу привести пример, но я не хочу быть экстремистским).
Итак, еще раз, забудьте о БД - подумайте об объектах.По какой причине у объекта есть идентификатор?Я бы сказал, что потом его можно будет извлечь и изменить, сохранив тот же идентификатор.И если это VO, потому что идентичность неявно в значениях объекта.Имеет ли смысл для пользователя иметь идентификатор?А как насчет адреса?Или Город? ... Это зависит.
Чтобы привести пример объекта значения города, если вам нужно сопоставить его как FK с таблицей 'городов', то ваш объект City, вероятно, будет иметь идентификатор,но идентификатор не раскрывается.Это деталь реализации.Пока идентификатор пользователя будет выставлен.Например, город может быть связан с провинцией / штатом, а город - со страной.
Но в другом приложении, где пользователи могут добавлять города и информацию о них, город может быть сущностью или даже совокупностью.Это действительно зависит от ваших требований.
Сказав это, список сущностей и VO, которые вы предоставили, в целом выглядит нормально, но я не знаю ваших требований.
Чтобы ответить наПервый вопрос: вы можете прочитать Сущности, объекты-значения, агрегаты и корни , поскольку существуют некоторые правила относительно того, что такое VO, сущность или агрегат.Сложность возникает из-за того, как их применять, и опыт является решением этой проблемы.
Как итог:
Сущности
Многие объекты фундаментально не определяются своими атрибутами,а скорее потоком непрерывности и идентичности.
Объекты значения
Многие объекты не имеют концептуальной идентичности.Эти объекты описывают характеристики вещи.
Агрегаты
Агрегаты проводят границу вокруг одной или нескольких сущностей.Агрегат применяет инварианты для всех своих сущностей для любой поддерживаемой им операции.