制限されたコンテキスト間で集約ルートキーを再利用しますか?
質問が述べているように、これは悪い習慣ですか?ユーザーを認証するために、Identityの制限されたコンテキストにユーザー集約ルートがあります。この制限されたコンテキストでは、ユーザーの識別に関連するユーザー用のフィールドがあります。たとえば、電子メール、ソルトされたpwなどです。
通知を処理するための汎用サブドメインもあります。このコンテキストでは、ユーザーは重要です。このコンテキストでは、Notificantには、未読通知の数、lastReadなどのフィールドがあります。
この場合、ユーザーと通知者の間に1対1の対応があることを知っているので、ユーザーIDを再利用するのは良いことですか?または、ユーザーを参照する重要なルートにフィールドを含める必要がありますか?それらの関係が対称的であることがわかっている場合、それらの間でマップするためにルックアップを作成する必要があるため、冗長に感じます。
回答
3 Christophe
いいえ、異なるコンテキストで異なるオブジェクトを識別するために集約ルートキーを再利用しないでください!
どうして?
- a
Notificant
はではないからUser
です。たぶん今日、ほとんどのユーザーは通知を受けます。しかし、明日は、システムを使用していないサードパーティ、または自動監視システムにさえ通知する必要があるかもしれません。 - これは別の制限付きコンテキストであり、制限付きコンテキストは独立して進化する可能性があるためです。たぶん今日、同じ粒度
User
をNotificant
共有し、1対1で直接関連しているかもしれません。しかし、誰が明日について知っていますか?したがって、それらをどのように関連付けるかを慎重に検討する必要があります。