Supponiamo che ci sia uno schema di database definito in questo modo:
Person.mail_address_key ----- Address.address_key
Person.billing_address_key ----- Address.address_key
Un Person
ha un indirizzo postale e un indirizzo di fatturazione. Come tecnica di denormalizzazione, creiamo una tabella Address
separata. Il più delle volte il mail_address_key
e il billing_address_key
di un singolo Person
avranno lo stesso valore (es .: il loro indirizzo e indirizzo di fatturazione sarà lo stesso).
Nel mio database Address
ha un'identità (la chiave dell'indirizzo). Ma, nel mio modello di dominio , non vedo un motivo convincente per il fatto che Address
sia un'entità, mi piacerebbe che fosse un oggetto valore.
- In DDD, questa è un'opzione? O sono oggetti valore di solito un gruppo di colonne (al contrario di una tabella)? In questo caso, interpreto l'avvocato del diavolo, perché non penso che il database debba dettare la struttura del modello di dominio, ma solo per essere sicuro.
- In tal caso, dove / quando / in che modo l'indirizzo perde la sua identità di database in modo che possa essere utilizzato come oggetto valore nel livello dominio? O, dovrei mantenere l'identificatore del database nell'oggetto valore?
- Quando il modello deve essere persistente nel database, qual è il processo? Dovrei passare attraverso un processo di a) Trovare un indirizzo con questi campi, b) se non esiste, crearne uno nuovo c) se lo fa, aggiornare i campi?