Reutilizar a chave raiz agregada em contextos limitados?
Como afirma a pergunta, isso é uma má prática? Eu tenho uma raiz agregada de usuário no contexto limitado de identidade para autenticar o usuário. Nestes contextos limitados, tenho campos para o usuário relacionados à identificação do usuário, por exemplo, e-mail, salted pw e assim por diante.
Eu também tenho um subdomínio genérico para lidar com notificações. Neste contexto, um usuário é um notificante. Neste contexto, o Notificant tem campos para, por exemplo, o número de notificações não lidas, lastRead etc.
É bom reutilizar o ID do usuário neste caso, pois eu sei que há uma correspondência 1 para 1 entre um usuário e uma pessoa importante? Ou devo ter um campo na raiz Notificant referenciando o usuário? Parece redundante, porque então tenho que fazer uma pesquisa para mapear entre eles quando sei que sua relação é simétrica.
Respostas
Não, não reutilize chaves raiz agregadas para identificar objetos diferentes em contextos diferentes!
Por quê?
- Porque a
Notificant
não é aUser
. Talvez hoje, principalmente os usuários sejam notificados. Mas amanhã você pode ter que notificar terceiros que não estão usando o sistema, ou mesmo sistemas de monitoramento automático. - Porque é outro contexto limitado, e contextos limitados podem evoluir independentemente. Talvez hoje
User
eNotificant
compartilhe a mesma granularidade e pode estar diretamente relacionado um a um. Mas quem sabe sobre o amanhã? Portanto, você precisa pensar cuidadosamente sobre como eles devem estar relacionados.