Databasedesignere gør bred brug af nøgler til udvikling af relationsdatabaser. Blandt de mest almindelige af disse nøgler er primære nøgler og udenlandske nøgler. En database udenlandsk nøgle er et felt i et relationeltabel, som matcher den primære nøglekolonne i en anden tabel. For at forstå, hvordan en fremmed nøgle fungerer, lad os se nærmere på ideen om en relationsdatabase.
Nogle grundlæggende oplysninger om relationelle databaser
I en relationsdatabase lagres data i tabeller indeholdende rækker og kolonner, hvilket gør det let at søge og manipulere. Der er noget seriøst matematik bag begrebet relational database (relationel algebra, foreslået af E.F.
Codd hos IBM i 1970), men det er ikke emnet for denne artikel.
Til praktiske formål (og ikke-matematikere) gemmer en relationsdatabase relaterede data i rækker og kolonner. Yderligere - og her er hvor det bliver interessant - de fleste databaser er designet, så dataene i en tabel kan få adgang til dataene i en anden tabel. Denne evne til at skabe relationer mellem tabeller er den reelle effekt af en relationsdatabase.
Brug af udenlandske nøgler
De fleste tabeller, især dem i store, komplekse databaser, har primære nøgler. Tabeller, der er designet til at få adgang til andre tabeller, skal også have en fremmed nøgle.
For at bruge den almindeligt citerede Northwinds database er her et uddrag fra en produkttabel:
ProductID | Produktnavn | CategorylD | QuantityPerU | Pris per stk |
---|---|---|---|---|
1 | Chai | 1 | 10 kasser x 20 poser | 18.00 |
2 | Chang | 1 | 24 - 12 oz flasker | 19.00 |
3 | Anis sirup | 2 | 12 - 550 ml flasker | 10.00 |
4 | Kok Antons Cajun Krydderier | 2 | 48 - 6 oz krukker | 22.00 |
5 | Kokken Antons Gumbo Mix | 2 | 36 kasser | 21.35 |
6 | Bedstemor's Boysenberry Spread | 2 | 12 - 8 oz krukker | 25.00 |
7 | Onkel Bobs Økologiske Tørrede Pærer | 7 | 12 - 1 lb pkgs. | 30.00 |
Det ProductID kolonne er denne tabels primære nøgle. Det tildeler et unikt id til hvert produkt.
Denne tabel indeholder også en fremmed nøglesøjle, CategorylD. Hvert produkt i produkttabellen henviser til en post i kategoristabellen, der definerer produktets kategori.
Bemærk dette uddrag fra databasens kategoristabel:
CategorylD | CategoryName | Beskrivelse |
---|---|---|
1 | drikkevarer | Læskedrikke, kaffe, te, øl og øl |
2 | Krydderier | Søde og salte saucer, relishes, spreads og krydderier |
3 | confections | Desserter, slik og sweetbreads |
5 | Mejeriprodukter | Oste |
Kolonnen CategorylD er denne søjlens primære nøgle. (Det har ingen fremmednøgle, fordi det ikke behøver at få adgang til en anden tabel.) Hver fremmednøgle i produkttabellen forbinder til en primærnøgle i kategoristabellen. For eksempel er produktet Chai tildelt en kategori "Drikkevarer", mens anis sirup er i kategorien Smagspræparater.
Denne form for sammenkædning skaber et utal af måder at bruge og genbruge data i en relationsdatabase på.