La risposta breve è "mai" (si applicano i caveat).
Se hai una relazione genitore / figlio, le chiavi esterne ti danno un modo naturale di modellarlo. Considera queste situazioni:
- Hai diversi ordini che utilizzano lo stesso prodotto, immediatamente hai dati duplicati per ogni ordine.
- Che cosa succede se vuoi un modo per modellare le situazioni in cui gli ordini hanno più prodotti.
- Se vuoi modificare i dettagli di un prodotto (il suo prezzo, per esempio), devi modificarlo ovunque sia usato.
- Che cosa succede se hai altre situazioni in cui desideri utilizzare le informazioni sul prodotto (controllo delle scorte, forse). È necessario copiare tutti i dati in queste posizioni anche
- Se hai bisogno di utilizzare le informazioni sul tuo prodotto in più posizioni, tutti i problemi sopra riportati sono moltiplicati
Tecnicamente, quest'area di sviluppo del database si chiama normalizzazione del database e il tuo caso specifico (utilizzando chiavi esterne per fare riferimento a record correlati) viene chiamato prima forma normale. Probabilmente vale la pena di leggere su questi argomenti.
(avvertimenti) La risposta leggermente più lunga è "probabilmente mai", a meno che l'applicazione non sia estremamente sensibile alle prestazioni e i requisiti di prestazione superino il costo di trattare i punti sopra riportati. Uno di questi esempi è un data warehouse, in cui è garantito che i vecchi dati non cambiano e le prestazioni possono trarre vantaggio da alcuni dati duplicati senza i rischi sopra menzionati. Per tutto il resto, normalizza i tuoi dati.