Databasedesignere gjør bred bruk av nøkler når de utvikler relasjonsdatabaser. Blant de vanligste av disse nøklene er primære nøkler og utenlandske nøkler. En database utenlandsnøkkel er et felt i et relasjonstabell som samsvarer med primærnøkkelkolonnen i en annen tabell. For å forstå hvordan en utenlandsk nøkkel fungerer, la oss ta en nærmere titt på ideen om en relasjonsdatabase.
Noen grunnleggende om relasjonsdatabaser
I en relasjonsdatabase lagres data i tabeller som inneholder rader og kolonner, noe som gjør det enkelt å søke og manipulere. Det er noe seriøst matematikk bak begrepet relasjonsdatabase (relasjonsalgebra, foreslått av E.F.
Codd på IBM i 1970), men det er ikke temaet i denne artikkelen.
For praktiske formål (og ikke-matematikere) lagrer en relasjonsdatabase relatert data i rader og kolonner. Videre - og her blir det interessant - de fleste databaser er utformet slik at dataene i ett bord kan få tilgang til dataene i et annet bord. Denne muligheten til å opprette relasjoner mellom tabeller er den virkelige kraften til en relasjonsdatabase.
Bruke utenlandske nøkler
De fleste tabeller, spesielt de i store, komplekse databaser, har primære nøkler. Tabeller som er laget for å få tilgang til andre tabeller, må også ha en utenlandsk nøkkel.
For å bruke den vanlige citerte Northwinds-databasen, her er et utdrag fra en produkttabell:
Produkt ID | Produktnavn | CategoryID | QuantityPerU | Enhetspris |
---|---|---|---|---|
1 | Chai | 1 | 10 bokser 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 | Kokk Antons Cajun krydder | 2 | 48 - 6 oz krukker | 22.00 |
5 | Kokk Antons Gumbo Mix | 2 | 36 bokser | 21.35 |
6 | Bestemors Boysenberry Spread | 2 | 12 - 8 oz krukker | 25.00 |
7 | Onkel Bobs organiske tørkede pærer | 7 | 12 - 1 pund pkgs. | 30.00 |
De Produkt ID kolonnen er denne tabellens primære nøkkel. Den tildeler en unik ID til hvert produkt.
Denne tabellen inneholder også en fremmednøkkelkolonne, CategoryID. Hvert produkt i produkttabellen kobler til en oppføring i kategoristabellen som definerer produktets kategori.
Merk dette utsnittet fra databasens kategoristabell:
CategoryID | Kategori navn | Beskrivelse |
---|---|---|
1 | drikkevarer | Brus, kaffe, te, øl og øl |
2 | sauser | Søte og smakfulle sauser, relishes, spreads og krydder |
3 | confections | Desserter, godteri og sweetbreads |
5 | Meieriprodukter | oster |
Kolonnen CategoryID er denne kolonnens primære nøkkel. (Det har ingen utenlandsk nøkkel fordi det ikke har behov for å få tilgang til et annet bord.) Hver utenlandsk nøkkel i produkttabellen kobler til en primærnøkkel i kategoristabellen. For eksempel er produktet Chai tildelt en kategori "Drikkevarer", mens Aniseed Syrup er i kategorien Smaksprøver.
Denne typen kobling skaper et myriade av måter å bruke og gjenbruke data i en relasjonsdatabase.