Een foreign key koppelt records in de ene tabel aan records in een andere tabel. Een ordertabel heeft een veld customer_id. Dat veld is een foreign key die verwijst naar de primary key van de klantentabel. De koppeling zorgt ervoor dat elke bestelling bij een echte klant hoort. Zonder deze koppeling zouden bestellingen kunnen verwijzen naar klanten die niet bestaan. De database handhaaft de relatie.
Vreemde sleutels doen meer dan alleen relaties documenteren. Ze zorgen voor referentiële integriteit. Als je een bestelling probeert in te voegen met een customer_id die niet in de klantentabel bestaat, wordt deze door de database geweigerd. Als je een klant probeert te verwijderen die bestellingen heeft, blokkeert de database de verwijdering of voert deze door, afhankelijk van de regel. Deze handhaving voorkomt weesrecords en inconsistente gegevens. Vreemde sleutels verbeteren ook de queryprestaties. De database kan de relatie gebruiken om joins te optimaliseren. Niet alle databases handhaven vreemde sleutels. Sommige NoSQL-databases laten referentiële integriteit over aan de applicatie. Dat geeft ontwikkelaars meer flexibiliteit, maar ook meer verantwoordelijkheid. De applicatie moet ervoor zorgen dat de verwijzingen geldig zijn. Als dit niet het geval is, worden de gegevens inconsistent. Vreemde sleutels zijn een beperking. Beperkingen zijn onhandig totdat ze een ramp voorkomen.
Regels voor externe sleutels
- Beperken — blokkeer verwijdering als er verwijzingen bestaan
- Cascade — automatisch verwijzende records verwijderen of bijwerken
- Stel de externe sleutel in op null bij verwijdering.
- Geen actie — laat de bewerking doorgaan en controleer later.
Een foreign key is een link en een garantie. De link verbindt tabellen. De garantie zorgt ervoor dat ze consistent blijven.
Comments
No comments yet. Be the first to share a thought.
Leave a comment