Ho riscontrato questo problema un numero di volte. Supponiamo di avere un oggetto di grandi dimensioni che desideri archiviare nel database. Forse è un profilo di appuntamenti per un utente e ha 100 campi. Tutti questi 100 campi dovrebbero avere un valore, una volta completato il profilo.
Tuttavia, si vuole evitare di forzare l'utente a inserire tutti i 100 campi in un colpo solo! Forse possono creare il loro profilo sezione per sezione, ma non è considerato "completo" finché tutti i 100 campi non hanno un valore.
Sarebbe bello non consentire a questi campi di essere NULL
. Dopotutto, NULL
non è un valore valido per loro. Ma se i campi sono NOT NULL
, non puoi costruire la riga a capo, salvando alcuni campi ogni volta.
"Soluzioni" che ho usato in passato:
- Basta rendere i campi nullable. Questo non è eccezionale, perché perdi alcune garanzie di integrità dei dati. Un bug nella tua app porta a dati incoerenti.
- Dividi i 100 campi in più tabelle. Rendi tutti i campi
NOT NULL
. Ciò aggiunge complessità alle query e sembra un po 'sbagliato: un profilo completato non dovrebbe avere una riga in una tabella ma non un'altra, ma lo schema DB lo consente.
Quali sono alcuni buoni modi per gestirlo?