Повторное использование совокупного корневого ключа в ограниченном контексте?
Как говорится в вопросе, является ли это плохой практикой? У меня есть совокупный корень User в ограниченном контексте Identity для аутентификации пользователя. В этом ограниченном контексте у меня есть поля для пользователя, связанные с идентификацией пользователя, например электронная почта, соленый pw и так далее.
У меня также есть общий поддомен для обработки уведомлений. В этом контексте Пользователь является уведомителем. В этом контексте Notificant имеет поля, например, для количества непрочитанных уведомлений, lastRead и т. Д.
Можно ли повторно использовать идентификатор пользователя в этом случае, поскольку я знаю, что между пользователем и уведомителем существует соответствие один-к-одному? Или мне нужно иметь поле в корне Notificant, ссылающееся на пользователя? Это кажется излишним, потому что тогда мне нужно выполнить поиск для сопоставления между ними, когда я знаю, что их отношения симметричны.
Ответы
Нет, не используйте повторно совокупные корневые ключи для идентификации разных объектов в разных контекстах!
Зачем?
- Потому что a
Notificant
не aUser
. Возможно, сегодня в основном пользователи получают уведомления. Но завтра вам, возможно, придется уведомить третьих лиц, которые не используют систему или даже системы автоматического мониторинга. - Потому что это еще один ограниченный контекст, и ограниченные контексты могут развиваться независимо. Может быть , сегодня
User
иNotificant
одни и те же зернистости и могут быть непосредственно связаны один к одному. Но кто знает о завтрашнем дне? Так что нужно хорошо подумать о том, как они должны быть связаны.