Un modo è quello di progettare i modelli prima di progettare il database. Quando si progettano i modelli, l'obiettivo è catturare la logica e i significati aziendali all'interno del dominio del problema. Questo dovrebbe essere catturato in un modo che ha senso per il business, tra cui più di semplici entità e campi di dati. Alcuni elementi di dati sono interpretati dagli altri, alcuni sono dipendenti da altri, ecc. Inoltre, devi aggiungere a questo modello qualsiasi logica di base che ti serve, come ad esempio il modo in cui un oggetto risponde internamente quando un determinato elemento è impostato su un determinato valore. p>
È molto probabile che ti ritroverai con qualcosa che è 90 +% identico a come finisci per mantenere i dati. Va bene. Può essere completamente identico senza essere accoppiato.
Nota anche che modellare il dominio in una nebbia di vera ignoranza di persistenza è un po 'un sacro graal per la progettazione del software. Se puoi farlo, fantastico. Ma se il dominio del problema è del tutto significativo e ha una certa complessità, allora è comunque una buona idea fare un passo indietro dalla modellazione del dominio di volta in volta per fare un controllo sulla persistenza dei dati per assicurarsi di non aver dipinto te stesso in un angolo.
Ricorda solo i ruoli reali dei vari componenti e tieni separati quei ruoli quando li disegni. Per qualsiasi decisione sul design, chiediti se qualcuno di questi ruoli è stato violato:
- Database - Memorizza i dati, conserva l'integrità dei dati, conserva i dati a riposo.
- Modelli: contengono la logica aziendale, modellano il dominio del problema, mantengono i dati in movimento, rispondono agli eventi a livello aziendale, ecc.
- Visualizzazioni - Presenta i dati agli utenti, esegui la logica lato utente (convalida di base prima che la validazione vera venga eseguita nei modelli, ecc.).
- Controller: risponde agli eventi utente, passa il controllo ai modelli, inoltra le richieste e restituisce le risposte.