Toevoegen van een foreign key
Als je een foreign key wilt toevoegen dan gebruik je de volgende syntax:
Met de volgende opdracht maak je een foreign key aan tussen de tabel boeken en de tabel auteurs.
Dit betekent dus dat er een foreign key verwijzing wordt aangemaakt van de tabel boeken naar de tabel auteurs. Als je dus een boek wilt toevoegen van een auteur, dan moet de desbetreffende auteur wel bestaan in de tabel auteurs!
Elke tabel in een database heeft een kolom, of een combinatie van kolommen, die uniek is. Daarmee wordt bedoeld dat elk woord of getal in die kolom (of de combinatie van de woorden en/of getallen in die kolommen) maar één keer voorkomt.
Die kolom, of combinatie van kolommen, noemen we de (primaire) sleutel van de tabel (in het engels primary key).
Voor een primaire steutel geldt:
In elke rij moet in de sleutelkolom(men) iets zijn ingevuld.
Deze waarden (of combinaties van waarden) zijn verschillend voor alle rijen.
Bij de tabellen van de database bibliotheek, die in het vorige hoofdstuk beschreven is, heb je ook primaire sleutels.
Bij de tabel leerlingen is het sleutelveld de kolom llnr. Als je het llnr weet dan weet je precies welke leerling er bedoeld wordt.
Als je de kolom naam als sleutelveld kiest dan heb je een probleem als er twee leerlingen met dezelfde naam zijn.
Wel zou je het mobiele nummer als sleutel kunnen kiezen, want twee leden met hetzelfde mobiele nummer zullen niet voorkomen. Als er verschillende mogelijkheden zijn om een sleutel te kiezen dan noem je dat kandidaat-sleutels. Meestal kies je als primaire sleutel de eenvoudigste kandidaat-sleutel; het liefst één kolom, en vaak wordt er daarom een extra kolom toegevoegd met een nummer, die dan als sleutelveld dienst doet.
De tabellen van de database bibliotheek staan niet los van elkaar, er bestaat een bepaald verband tussen de meeste tabellen; ze hebben een relatie.
In de tabel uitleningen staan bijvoorbeeld leerlingennummers (llnr). Als je wilt weten wie bij een gegeven llnr hoort, dan moet je dat opzoeken in de leerlingen tabel.
Zo'verband tussen de gegevens in de ene tabel en die in een andere tabel noem je een verwijzing of referentie-sleutel, in het engels foreign key.
Verwijzingen kunnen door een RDBMS (database programma) worden gecontroleerd. Als je bij een uitlening als boeknummer een nummer invult, dat niet voorkomt bij de boeken-tabel, dan kan het programma een foutmelding geven. Tenminste als in het programma is aangegeven dat die relatie er is.
Het controleren van de verwijzingen noemen we het bewaken van de referentiële integriteit.
Een overzicht van de tabellen, met de kolommen, sleutels en verwijzingen, wordt vaak weergegeven in een strokendiagram.
Dat is een schema waarin de tabellen als stroken verschijnen, met daarin de namen van de kolommen. Hieronder een gedeelte van een tennisvereniging database:
Het sleutelveld wordt aangegeven met een dubbele pijl, die onder de betreffende kolom(men) staat.
En de verwijzingen worden ook met pijlen aangegeven.
Verder zie je onder sommige veldnamen NL staan. Dat is de afkorting van Niet Leeg. In het Engels heet dat NOT NULL
Dat betekent dat die kolom beslist moet worden ingevuld. Als je een nieuwe rij invoert en je vult in die kolom niets in, dan zal het programma een foutmelding geven Tenminste als in het programma is aangegeven dat het een niet-leeg-kolom is.