Как транспонировать в модель базы данных локальную идентичность сущностей внутри совокупности модели предметной области - PullRequest
0 голосов
/ 08 ноября 2018

В моей доменной модели у меня есть агрегат, корень агрегата, конечно же, имеет глобально уникальную идентичность, в то время как другие сущности этого агрегата имеют только локальную идентичность, которая относится к корневому объекту.

Пока все хорошо. Теперь я пытаюсь разработать базу данных, которая будет хранить данные этого агрегата.

Мое первое предположение состоит в том, чтобы спроектировать его с той же идеей локальных идентификаторов, что означает, что все первичные ключи других таблиц сущностей будут включать корневой ключ сущности (несколько ключей столбцов).

Вариант 1: enter image description here Также обратите внимание, что из-за того, что у меня много вложенных дочерних объектов, в моей последней таблице я получаю 4 столбца PK.

Еще один способ сделать это - использовать один ключ столбца в каждой таблице, как это Вариант 2: enter image description here

Я не уверен, какой из них использовать. Хотя мне нравится, что вариант 1 лучше согласован с логикой домена, он кажется более сложным, и я не уверен, что могу столкнуться с некоторыми проблемами с производительностью.

Вариант 2 кажется более простым, но менее согласованным с доменом. Для меня это означает, что дочерняя сущность может изменить своего родителя, изменив значение FK, но это невозможно с точки зрения бизнес-логики.

Что я должен рассмотреть, чтобы решить, какой вариант использовать? Вы видите другие варианты?

...