Databaseontwerpers maken uitgebreid gebruik van sleutels bij het ontwikkelen van relationele databases. Een van de meest voorkomende van deze toetsen zijn primaire en externe sleutels. Een externe sleutel van een database is een veld in een relationele tabel die overeenkomt met de primaire sleutelkolom van een andere tabel. Om te begrijpen hoe een externe sleutel werkt, laten we het idee van een relationele database eens nader bekijken.
Enkele basisprincipes van relationele databases
In een relationele database worden gegevens opgeslagen in tabellen met rijen en kolommen, waardoor het gemakkelijk te doorzoeken en te manipuleren is. Er is een serieuze wiskunde achter het concept van een relationele database (relationele algebra, voorgesteld door E.F.
Codd bij IBM in 1970), maar dat is niet het onderwerp van dit artikel.
Voor praktische doeleinden (en niet-wiskundigen) slaat een relationele database gerelateerde gegevens op in rijen en kolommen. Verder - en hier wordt het interessant - zijn de meeste databases zo ontworpen dat de gegevens in de ene tabel toegang hebben tot de gegevens in een andere tabel. Deze mogelijkheid om relaties tussen tabellen te creëren, is de echte kracht van een relationele database.
Vreemde sleutels gebruiken
De meeste tabellen, vooral die in grote, complexe databases, hebben primaire sleutels. Tabellen die zijn ontworpen om toegang te krijgen tot andere tabellen, moeten ook een externe sleutel hebben.
Om de algemeen geciteerde Northwinds-database te gebruiken, is hier een fragment uit een producttabel:
| Product-ID | Productnaam | Categorie ID | QuantityPerU | Eenheid prijs |
|---|---|---|---|---|
| 1 | Chai | 1 | 10 dozen x 20 zakken | 18.00 |
| 2 | Chang | 1 | Flessen van 24 - 12 oz | 19.00 |
| 3 | Anijsstroop | 2 | 12 - 550 ml flessen | 10.00 |
| 4 | Chef Anton's Cajun kruiden | 2 | 48 - 6 oz potten | 22.00 |
| 5 | Gumbo Mix van chef Anton | 2 | 36 dozen | 21.35 |
| 6 | Grandma's Boysenberry Spread | 2 | 12 - 8 oz potten | 25.00 |
| 7 | Uncle Bob's biologische gedroogde peren | 7 | 12 kg pkg. | 30.00 |
De Product-ID kolom is de primaire sleutel van deze tabel. Het kent een uniek ID toe aan elk product.
Deze tabel bevat ook een kolom met een buitenlandse sleutel, Categorie ID. Elk product in de tabel Product linkt naar een item in de tabel Categorieën die de categorie van dat product definieert.
Let op dit fragment uit de Categories-tabel van de database:
| Categorie ID | Categorie naam | Omschrijving |
|---|---|---|
| 1 | dranken | Frisdranken, koffie, thee, bier en ales |
| 2 | Specerijen | Zoete en hartige sauzen, relishes, spreads en smaakmakers |
| 3 | Gebak | Desserts, snoep en zwezeriken |
| 5 | Zuivelproducten | kazen |
De kolom Categorie ID is de primaire sleutel van deze kolom. (Het heeft geen externe sleutel omdat het geen behoefte heeft om toegang te krijgen tot een andere tabel.) Elke externe sleutel in de producttabel linkt naar een primaire sleutel in de categorietabel. Het product Chai krijgt bijvoorbeeld een categorie "Dranken", terwijl Anijs Syrup deel uitmaakt van de categorie Specerijen.
Dit soort koppelingen creëert een groot aantal manieren om gegevens in een relationele database te gebruiken en opnieuw te gebruiken.




