Utilizzo di SQL per la persistenza DDD: l'integrità referenziale è obbligatoria?

5

Sto scrivendo contesti con confini DDD con alcune entità che utilizzano il sourcing di eventi per la loro persistenza e altre entità che utilizzano database SQL.

Per semplificare la scrittura delle entità che usano la persistenza SQL, dato che tutto è controllato tramite l'entità nel livello del dominio, è prassi comune ignorare la nozione di integrità referenziale rispetto alle chiavi esterne? Questi controlli di integrità sulle chiavi esterne possono essere completamente esclusi dai database sottostanti?

In tal caso ciò ridurrebbe la complessità in qualsiasi ORM e ridurrebbe gli archivi in tabelle indipendenti con il livello del dominio dell'entità che gestisce il mapping relazionale tra.

Ci sono delle insidie contro questo approccio? Fino ad ora non riesco a vedere nessuno quando uso le entità per controllare tutto.

    
posta g18c 03.08.2017 - 22:57
fonte

1 risposta

11

Ho lavorato brevemente in un'azienda in cui hanno deciso di non aggiungere vincoli di integrità del database su nessuna delle tabelle perché stavano pianificando di fare affidamento sull'ORM e correggere la programmazione per garantire l'integrità del database.

Per usare un eufemismo è stato un grosso fallimento. Gli errori di codice avevano causato la perdita dell'integrità del database, e al momento in cui mi sono unito a circa 1/2 del tempo di sviluppo stava risolvendo i bug da problemi di integrità dei dati che avrebbero potuto essere evitati con vincoli di database corretti.

Inoltre, provare a esplorare e comprendere lo schema era molto difficile. Si poteva solo intuire le colonne che dovevano essere chiavi esterne per nome e tipo della colonna. Gli strumenti di diagrammi dello schema non funzionano perché si basano su chiavi esterne per mappare le relazioni.

I tuoi programmi potrebbero contenere bug, o potresti configurare erroneamente qualcosa, quindi non dovresti affidarti a programmi per mantenere l'integrità del tuo database. Inoltre, potresti voler collegare gli strumenti direttamente al database a un certo punto e quelli saranno liberi di causare caos sulla tua integrità dei dati senza vincoli. Se fossi nella tua posizione preferirei essere al sicuro piuttosto che correggere incoerenze nei dati.

    
risposta data 03.08.2017 - 23:02
fonte

Leggi altre domande sui tag