Supongamos que hay un esquema de base de datos definido así:
Person.mail_address_key ----- Address.address_key
Person.billing_address_key ----- Address.address_key
A Person
tiene una dirección postal y una dirección de facturación. Como técnica de desnormalización, creamos una Address
tabla separada . La mayoría de las veces el mail_address_key
y el billing_address_key
de un solo Person
habrá el mismo valor (es decir: la llave de su dirección postal y de facturación es la misma).
En mi base de datos de la Address
cuenta con una identidad (la tecla de dirección). Pero, en mi modelo de dominio , no veo una razón convincente para Address
que sea una Entidad, me gustaría que fuera un Objeto de valor.
- En DDD, ¿es esta una opción? ¿O los objetos de valor suelen ser un grupo de columnas (a diferencia de una tabla)? Estoy jugando al abogado del diablo aquí, porque no creo que la base de datos deba dictar la estructura del modelo de dominio, sino solo asegurarme.
- Si es así, ¿dónde / cuándo / cómo pierde la dirección su identidad de base de datos para que pueda usarse como un Objeto de valor en la Capa de dominio? ¿O se supone que debo mantener el identificador de la base de datos en el objeto de valor?
- Cuando el modelo necesita persistir en la base de datos, ¿cuál es el proceso? ¿Se supone que debo pasar por un proceso de a) Buscar una dirección por estos campos, b) si no existe, crear una nueva c) si es así, actualizar los campos?