Czy używasz ponownie zagregowanego klucza głównego w kontekstach ograniczonych?
Jak stwierdza pytanie, czy jest to zła praktyka? Mam zagregowany root użytkownika w ograniczonym kontekście tożsamości do uwierzytelniania użytkownika. W tych ograniczonych kontekstach mam dla Użytkownika pola związane z identyfikacją Użytkownika, np. E-mail, solone pw i tak dalej.
Mam też ogólną subdomenę do obsługi powiadomień. W tym kontekście Użytkownik jest Zgłaszającym. W tym kontekście Zgłaszający posiada pola na np. Liczbę nieprzeczytanych powiadomień, lastRead itp.
Czy w tym przypadku warto ponownie użyć identyfikatora użytkownika, ponieważ wiem, że istnieje korespondencja 1 do 1 między użytkownikiem a powiadamiającym? A może powinienem mieć pole w głównym katalogu powiadomień odnoszące się do użytkownika? Wydaje się, że jest to niepotrzebne, ponieważ wtedy muszę szukać mapy między nimi, gdy wiem, że ich związek jest symetryczny.
Odpowiedzi
Nie, nie używaj ponownie zagregowanych kluczy głównych do identyfikowania różnych obiektów w różnych kontekstach!
Czemu?
- Ponieważ a
Notificant
nie jestUser
. Być może dzisiaj powiadamiani są głównie użytkownicy. Ale jutro być może będziesz musiał powiadomić osoby trzecie, które nie używają systemu, a nawet automatycznych systemów monitorowania. - Ponieważ jest to inny ograniczony kontekst, a ograniczone konteksty mogą ewoluować niezależnie. Może dzisiaj
User
iNotificant
mają tę samą szczegółowość i mogą być bezpośrednio powiązane jeden do jednego. Ale kto wie o jutrze? Musisz więc dokładnie przemyśleć, jak powinny być powiązane.