En fremmednøgle forbinder poster i én tabel med poster i en anden. En ordretabel har et customer_id-felt. Dette felt er en fremmednøgle, der peger på kundetabellens primære nøgle. Linket sikrer, at hver ordre tilhører en reel kunde. Uden det kunne ordrer referere til kunder, der ikke findes. Databasen håndhæver relationen.
Fremmednøgler gør mere end blot at dokumentere relationer. De håndhæver referentiel integritet. Hvis du forsøger at indsætte en ordre med et customer_id, der ikke findes i kundetabellen, afviser databasen den. Hvis du forsøger at slette en kunde, der har ordrer, blokerer databasen enten sletningen eller kaskaderer den afhængigt af reglen. Denne håndhævelse forhindrer forældreløse poster og inkonsistente data. Fremmednøgler hjælper også med forespørgselsydeevnen. Databasen kan bruge relationen til at optimere join-funktioner. Ikke alle databaser håndhæver fremmednøgler. Nogle NoSQL-databaser overlader referentiel integritet til applikationen. Det giver udviklere mere fleksibilitet, men også mere ansvar. Applikationen skal sikre, at referencerne er gyldige. Hvis det fejler, bliver dataene inkonsistente. Fremmednøgler er en begrænsning. Begrænsninger er ubelejlige, indtil de forhindrer en katastrofe.
Regler for fremmednøgler
- Begræns — bloker sletning, hvis der findes referencer
- Kaskade — slet eller opdater referenceposter automatisk
- Sæt null — sæt den fremmede nøgle til null ved sletning
- Ingen handling — tillad handlingen og tjek senere
En fremmednøgle er et link og en garanti. Linket forbinder tabeller. Garantien holder dem konsistente.
Comments
No comments yet. Be the first to share a thought.
Leave a comment