Skip to content

Kraften hos utländska nycklar i relationsdatabaser

18 de juni de 2021
165667304 56a227c13df78cf77272a94f d2ec7a74e9384162af79c1a098c528c9

Databasdesigners använder stora nycklar när de utvecklar relationsdatabaser. Bland de vanligaste av dessa nycklar är primära nycklar och främmande nycklar. En främmande databasnyckel är ett fält i en relationstabell som matchar den primära nyckelkolumnen i en annan tabell. För att förstå hur en främmande nyckel fungerar, låt oss titta närmare på idén om en relationsdatabas.

 

Några grunder i relationsdatabaser

I en relationsdatabas lagras data i tabeller som innehåller rader och kolumner, vilket gör det enkelt att söka och manipulera. Det finns en del allvarlig matematik bakom begreppet en relationsdatabas (relationsalgebra, föreslagen av EF Codd hos IBM 1970), men det är inte ämnet för denna artikel. För praktiska ändamål (och icke-matematiker) lagrar en relationsdatabas relaterad data i rader och kolumner. Vidare – och här blir det intressant – de flesta databaser är utformade så att data i en tabell kan komma åt data i en annan tabell. Denna förmåga att skapa relationer mellan tabeller är den verkliga kraften i en relationsdatabas.

 

Använda utländska nycklar

De flesta tabeller, särskilt de i stora, komplexa databaser, har primära nycklar. Tabeller som är utformade för att komma åt andra tabeller måste också ha en främmande nyckel. För att använda den vanliga Northwinds-databasen, här är ett utdrag från en produkttabell:

Serienummer Produktnamn CategoryID QuantityPerU Enhetspris
1 Chai 1 10 lådor x 20 påsar 18.00
2 Chang 1 24 – 12 oz flaskor 19.00
3 Anis-sirap 2 12 – 550 ml flaskor 10.00
4 Kock Anton’s Cajun-kryddor 2 48 – 6 oz burkar 22.00
5 Kock Anton’s Gumbo Mix 2 36 lådor 21.35
6 Farmor’s Boysenberry Spread 2 12 – 8 oz burkar 25.00
7 Farbror Bobs organiska torkade päron 7 12 – 1 lb pkgs. 30.00

Northwind Databases produkttabellutdrag

De Serienummer kolumn är den här tabellens primära nyckel. Det tilldelar varje produkt ett unikt ID. Denna tabell innehåller också en främmande nyckelkolumn, CategoryID. Varje produkt i produkttabellen länkar till en post i kategoritabellen som definierar produktens kategori. Notera detta utdrag från databasens Kategoritabell:

CategoryID Kategori namn Beskrivning
1 Drycker Läsk, kaffe, te, öl och öl
2 Kryddor Söta och salta såser, smak, pålägg och kryddor
3 Konfektioner Efterrätter, godis och söta bröd
5 Mejeriprodukter Ostar

Northwind Databases kategorier Tabellutdrag

Kolumnen CategoryID är den här kolumnens primära nyckel. (Den har ingen främmande nyckel eftersom den inte behöver komma åt en annan tabell.) Varje främmande nyckel i produkttabellen länkar till en primär nyckel i kategoritabellen. Till exempel tilldelas produkten Chai en kategori ”Drycker”, medan anis-sirap ingår i kategorin Smaktillsatser. Denna typ av länkning skapar en mängd olika sätt att använda och återanvända data i en relationsdatabas.