Buitenlandse sleutels
afdwingen referentiële integriteit
. Deze beperkingen garanderen dat een rij in een tabel order_details
met een veld order_id
verwijzend naar een orders
tabel zal nooit een order_id
. hebben waarde die niet bestaat in de orders
tafel.
Buitenlandse sleutels zijn niet vereist om een werkende relationele database te hebben (in feite De standaardopslag van MySQL engine ondersteunt geen FK's), maar ze zijn absoluut essentieel om verbroken relaties en weesrijen (dwz referentiële integriteit) te voorkomen. De mogelijkheid om referentiële integriteit af te dwingen op databaseniveau is vereist voor de C in ZUUR staan.
Wat betreft uw zorgen over de prestaties, er zijn over het algemeen prestatiekosten, maar deze zullen waarschijnlijk te verwaarlozen zijn. Ik raad aan om al je externe sleutelbeperkingen in te voeren en alleen zonder ze te experimenteren als je echte prestatieproblemen hebt die je anders niet kunt oplossen.