Skip to main content

De kracht van buitenlandse sleutels in relationele databases

Shyam Sankar: The rise of human-computer cooperation (Juni- 2026)

Shyam Sankar: The rise of human-computer cooperation (Juni- 2026)
Anonim

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:

De producttabelfragment van de Northwind-database
Product-IDProductnaamCategorie IDQuantityPerUEenheid prijs
1Chai110 dozen x 20 zakken18.00
2Chang1Flessen van 24 - 12 oz19.00
3Anijsstroop212 - 550 ml flessen10.00
4Chef Anton's Cajun kruiden248 - 6 oz potten22.00
5Gumbo Mix van chef Anton236 dozen21.35
6Grandma's Boysenberry Spread212 - 8 oz potten25.00
7Uncle Bob's biologische gedroogde peren712 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:

Noordenwind Database Categorieën Tabel Fragment
Categorie IDCategorie naamOmschrijving
1drankenFrisdranken, koffie, thee, bier en ales
2SpecerijenZoete en hartige sauzen, relishes, spreads en smaakmakers
3GebakDesserts, snoep en zwezeriken
5Zuivelproductenkazen

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.