Chiavi straniere
applicare l'integrità referenziale
. Questi vincoli garantiscono che una riga in una tabella order_details
con un campo order_id
facendo riferimento a un orders
la tabella non avrà mai un order_id
valore che non esiste negli orders
tavolo.
Non è necessario che le chiavi esterne dispongano di un database relazionale funzionante (infatti la memoria predefinita di MySQL engine non supporta gli FK), ma sono sicuramente essenziali per evitare relazioni interrotte e righe orfane (es. integrità referenziale). Per il C è richiesta la capacità di imporre l'integrità referenziale a livello di database in ACID stare in piedi.
Per quanto riguarda le tue preoccupazioni in merito alle prestazioni, in generale c'è un costo per le prestazioni, ma probabilmente sarà trascurabile. Ti suggerisco di inserire tutti i tuoi vincoli di chiave esterna e di sperimentare senza di essi solo se hai problemi di prestazioni reali che non potresti risolvere altrimenti.