Riutilizzare la chiave radice aggregata in contesti limitati?
Come afferma la domanda, questa è una cattiva pratica? Ho una radice aggregata utente nel contesto limitato di identità per l'autenticazione dell'utente. In questi contesti delimitati ho campi per l'utente relativi all'identificazione dell'utente, ad esempio email, pw salato e così via.
Ho anche un sottodominio generico per la gestione delle notifiche. In questo contesto un utente è un notificante. In questo contesto, il Notificante ha campi per ad esempio il numero di notifiche non lette, lastRead ecc.
È bene riutilizzare l'ID utente in questo caso, poiché so che esiste una corrispondenza 1 a 1 tra un utente e un notificante? O dovrei avere un campo nella root notificante che fa riferimento all'utente? Sembra ridondante, perché poi devo fare una ricerca per mappare tra loro quando so che la loro relazione è simmetrica.
Risposte
No, non riutilizzare le chiavi radice aggregate per identificare oggetti diversi in contesti diversi!
Perché?
- Perché a
Notificant
non è aUser
. Forse oggi la maggior parte degli utenti riceve una notifica. Ma domani potresti dover avvisare terze parti che non utilizzano il sistema, o anche sistemi di monitoraggio automatico. - Perché è un altro contesto delimitato e i contesti limitati possono evolversi in modo indipendente. Forse oggi
User
eNotificant
condividono la stessa granularità e possono essere direttamente correlati uno a uno. Ma chi lo sa domani? Quindi è necessario pensare attentamente a come dovrebbero essere correlati.