Ciao a tutti,
pongo la questione utilizzando un esempio così dovrebbe risultare più chiaro:
su una web applicatione devo visualizzare 100 fatture visualizzando sia la testata che le varie righe della fattura.
Va da sè quindi che nel database avrò 2 tabelle:
fatture_testata (PK fatturaID)
fatture_dettaglio (ogni riga avrà la FK fatturaID)
Il dubbio rimane su quale sia la modalità più usata / più corretta per recuperare i dati dal punto di vista del design applicativo per cui vorrei un confronto con voi.
Ecco le 3 opzioni (se ce ne sono altre ben vengano):
1) nel modello recupero tutti i dati dal database facendo una join tra fatture_testata e fatture_dettaglio.
In questo modo ottengo un unico oggetto da restituire che però contiene tutte le righe di testata ripetute e sarà poi premura della vista andare a splittare testata e dettaglio
2) nel modello recupero tutti i dati da fatture_testata, li scorro e ci inserisco un nuovo campo (dettaglio).
In questo modo avrò un oggetto con tutte le righe di testata e che avrà un oggetto collegato alla riga contenente le righe di fattura.
Molto più comodo per la vista però ho già iterato sull'array e per ogni riga ho effettuato un'altra richiesta al database.
3) nel modello creo una query con una subquery tale che associ ad ogni riga si testata le righe di dettaglio.
In questo modo (credo) che comunque venga fatta un'unica lettura al db da parte dell'applicativo e mi ritrovo già con l'oggetto ben "formato" per la vista.
Ho fatto alcune prove con i 3 metodi e i tempi sono molto vicini così come il peso dell'oggetto finale (ovviamente dipende dalla quantità).
Voi quale metodo usate?
grazie
ciao