Réutiliser la clé racine agrégée dans des contextes limités?
Comme l'indique la question, est-ce une mauvaise pratique? J'ai une racine d'agrégat d'utilisateur dans le contexte limité de l'identité pour authentifier l'utilisateur. Dans ces contextes délimités, j'ai des champs pour l'utilisateur liés à l'identification de l'utilisateur, par exemple e-mail, pw salé, etc.
J'ai également un sous-domaine générique pour gérer les notifications. Dans ce contexte, un utilisateur est un notifiant. Dans ce contexte, le Notificant a des champs pour par exemple le nombre de notifications non lues, lastRead etc.
Est-il bon de réutiliser l'identifiant d'utilisateur dans ce cas, car je sais qu'il existe une correspondance 1-à-1 entre un utilisateur et un notifiant? Ou devrais-je avoir un champ dans la racine de notification référençant l'utilisateur? Cela semble redondant, car alors je dois faire une recherche pour les cartographier lorsque je sais que leur relation est symétrique.
Réponses
Non, ne réutilisez pas les clés racine agrégées pour identifier différents objets dans différents contextes!
Pourquoi?
- Parce que a
Notificant
n'est pas aUser
. Peut-être qu'aujourd'hui, la plupart des utilisateurs sont notifiés. Mais demain, vous devrez peut-être avertir des tiers qui n'utilisent pas le système, ou même des systèmes de surveillance automatiques. - Parce que c'est un autre contexte borné, et les contextes bornés peuvent évoluer indépendamment. Peut-être aujourd'hui
User
etNotificant
partager la même granularité et peut être directement lié un à un. Mais qui sait pour demain? Vous devez donc réfléchir attentivement à la manière dont ils devraient être liés.