DBMS-nøkler: Kandidat-, primær-, super- og fremmedtyper
⚡ Smart oppsummering
Nøkler i DBMS er attributter som unikt identifiserer en rad i en tabell og etablerer relasjoner mellom tabeller. Åtte nøkkeltyper, fra super- og primærnøkkel til fremmednøkkel og surrogatnøkkel, håndhever identitet og integritet på tvers av en relasjonsdatabase.

Hva er nøkler i DBMS?
Nøkler i DBMS er et attributt eller et sett med attributter som hjelper deg med å identifisere en rad (tuple) i en relasjon (tabell). De lar deg finne relasjonen mellom to tabeller. Nøkler hjelper deg med å identifisere en rad i en tabell unikt ved en kombinasjon av én eller flere kolonner, og de er også nyttige for å finne en unik post i tabellen.
Eksempel:
| Ansatt ID | Fornavn | Etternavn |
|---|---|---|
| 11 | Andrew | Johnson |
| 22 | Tom | Treverk |
| 33 | Alex | Hale |
I eksemplet ovenfor er ansatt-ID en primærnøkkel fordi den unikt identifiserer en ansattpost. I denne tabellen kan ingen andre ansatte ha samme ansatt-ID.
Hvorfor trenger vi en nøkkel?
Her er noen grunner til å bruke en nøkkel i et DBMS:
- Nøkler hjelper deg med å identifisere en hvilken som helst rad med data i en tabell. I en virkelig applikasjon kan en tabell inneholde tusenvis av poster, og postene kan dupliseres. Nøkler sikrer at du kan identifisere en tabellpost unikt til tross for disse utfordringene.
- De lar deg etablere og identifisere relasjoner mellom tabeller.
- De hjelper deg med å håndheve identitet og integritet i forholdet.
Typer nøkler i DBMS
Det finnes hovedsakelig åtte forskjellige typer nøkler i DBMS, og hver nøkkel har sin egen funksjonalitet:
- Supernøkkel
- Primærnøkkel
- Kandidatnøkkel
- Alternativ nøkkel
- Foreign Key
- Sammensatt nøkkel
- Komposittnøkkel
- Surrogatnøkkel
Tabellen nedenfor oppsummerer alle åtte på et raskt blikk før hver enkelt forklares i detalj.
| nøkkel | På én linje | Unik? |
|---|---|---|
| Supernøkkel | Ethvert attributtsett som identifiserer en rad, ekstra tillatt | Ja |
| Kandidatnøkkel | En minimal supernøkkel, ingen overflødige attributter | Ja |
| Primærnøkkel | Den valgte kandidatnøkkelen, ikke null | Ja |
| Alternativ nøkkel | En kandidatnøkkel som ikke er valgt som primærnøkkel | Ja |
| Foreign Key | Refererer til en primærnøkkel i en annen tabell | Nei |
| Sammensatt nøkkel | To eller flere attributter, hvorav hver muligens ikke er unik | Kombinert |
| Komposittnøkkel | To eller flere kolonner kombinert for unikhet | Kombinert |
| Surrogatnøkkel | En generert kunstig identifikator | Ja |
Hva er en supernøkkel?
En supernøkkel er en gruppe med én eller flere nøkler som identifiserer rader i en tabell. En supernøkkel kan ha tilleggsattributter som ikke er nødvendige for unik identifikasjon.
Eksempel:
| EmpSSN | EmpNum | Empname |
|---|---|---|
| 9812345098 | AB05 | Vist |
| 9876512345 | AB06 | Roslyn |
| 199937890 | AB07 | James |
I eksemplet ovenfor er EmpSSN og EmpNum supernøkler.
Hva er en primærnøkkel?
PRIMÆRNØKKEL in DBMS er en kolonne eller gruppe av kolonner i en tabell som unikt identifiserer hver rad i tabellen. Primærnøkkelen kan ikke være en duplikat, noe som betyr at samme verdi ikke kan forekomme mer enn én gang i tabellen. En tabell kan ikke ha mer enn én primærnøkkel.
Regler for å definere en primærnøkkel
- To rader kan ikke ha samme primærnøkkelverdi.
- Hver rad må ha en primærnøkkelverdi.
- Primærnøkkelfeltet kan ikke være null.
- Verdien i en primærnøkkelkolonne kan aldri endres eller oppdateres hvis en fremmednøkkel refererer til den primærnøkkelen.
Eksempel: I det følgende eksemplet, StudID er en primærnøkkel.
| StudID | Rulle nr | Fornavn | Etternavn | Epost |
|---|---|---|---|---|
| 1 | 11 | Tom | Pris | abc@gmail.com |
| 2 | 12 | Nick | Wright | xyz@gmail.com |
| 3 | 13 | Dana | Natan | mno@yahoo.com |
Hva er en alternativ nøkkel?
ALTERNATIV NØKKEL er en kolonne eller gruppe av kolonner i en tabell som unikt identifiserer hver rad. En tabell kan ha flere valg for en primærnøkkel, men bare én kan angis som primærnøkkel. Alle nøklene som ikke er primærnøkkelen kalles alternative nøkler.
Eksempel: I denne tabellen er StudID, Roll No og Email kvalifisert til å bli primærnøkler. Men siden StudID er primærnøkkelen, blir Roll No og Email de alternative nøklene.
| StudID | Rulle nr | Fornavn | Etternavn | Epost |
|---|---|---|---|---|
| 1 | 11 | Tom | Pris | abc@gmail.com |
| 2 | 12 | Nick | Wright | xyz@gmail.com |
| 3 | 13 | Dana | Natan | mno@yahoo.com |
Hva er en kandidatnøkkel?
KANDIDATNØKKEL er et sett med attributter som unikt identifiserer tupler i en tabell. En kandidatnøkkel er en supernøkkel uten gjentatte attributter. Primærnøkkelen bør velges fra kandidatnøklene. Hver tabell må ha minst én kandidatnøkkel, og en tabell kan ha flere kandidatnøkler, men bare én primærnøkkel.
Egenskaper for en kandidatnøkkel:
- Den må inneholde unike verdier.
- En kandidatnøkkel kan ha flere attributter.
- Den må ikke inneholde nullverdier.
- Den bør inneholde minimum antall felt som trengs for å sikre unikhet.
- Den identifiserer hver post i en tabell unikt.
Eksempel: I tabellen nedenfor er StudID, Roll No og Email kandidatnøkler som hjelper oss med å identifisere en studentjournal unikt. Forholdet deres til super- og primærnøkler er en vanlig måte å forstå funksjonell avhengighet.
| StudID | Rulle nr | Fornavn | Etternavn | Epost |
|---|---|---|---|---|
| 1 | 11 | Tom | Pris | abc@gmail.com |
| 2 | 12 | Nick | Wright | xyz@gmail.com |
| 3 | 13 | Dana | Natan | mno@yahoo.com |

Hva er en fremmednøkkel?
UTENLANDSK NØKKEL er en kolonne som oppretter en relasjon mellom to tabeller. Formålet med en fremmednøkkel er å opprettholde dataintegritet og tillate navigering mellom to forskjellige forekomster av en enhet. Den fungerer som en kryssreferanse mellom to tabeller, ettersom den refererer til primærnøkkelen til en annen tabell.
Eksempel:
| gjeldCode | DeptName |
|---|---|
| 001 | Vitenskap |
| 002 | Engelsk |
| 005 | datamaskin |
| Lærer-ID | Fname | Lnavn |
|---|---|---|
| B002 | David | Warner |
| B017 | Sara | Joseph |
| B009 | Mike | Brunton |
I dette eksemplet har vi to tabeller, Lærer og Avdeling, på en skole. Slik de er nå, er det ingen måte å se hvilken lærer som jobber i hvilken avdeling.
Ved å legge til fremmednøkkelen DeptCode til Lærer-tabellen, kan vi opprette en relasjon mellom de to tabellene.
| Lærer-ID | gjeldCode | Fname | Lnavn |
|---|---|---|---|
| B002 | 002 | David | Warner |
| B017 | 002 | Sara | Joseph |
| B009 | 001 | Mike | Brunton |
Dette konseptet er også kjent som referanseintegritet.
Hva er en sammensatt nøkkel?
SAMMENSATT NØKKEL har to eller flere attributter som lar deg unikt gjenkjenne en bestemt post. Det er mulig at hver kolonne ikke er unik i seg selv i databasen. Men når de kombineres, blir kolonnene unike. Formålet med den sammensatte nøkkelen er å unikt identifisere hver post i tabellen.
Eksempel:
| Bestillingsnr | Produkt ID | Produktnavn | Antall |
|---|---|---|---|
| B005 | JAP102459 | Mus | 5 |
| B005 | DKT321573 | USB | 10 |
| B005 | OMG446789 | LCD-skjerm | 20 |
| B004 | DKT321573 | USB | 15 |
| B002 | OMG446789 | laser Printer | 3 |
I dette eksemplet kan ikke Ordrenummer og ProduktID være primærnøkler hver, ettersom ingen av dem identifiserer en post unikt. En sammensatt nøkkel av Ordrenummer og ProduktID identifiserer imidlertid hver post unikt.
Hva er en sammensatt nøkkel?
KOMPOSITT NØKKEL er en kombinasjon av to eller flere kolonner som unikt identifiserer rader i en tabell. Kombinasjonen av kolonner garanterer unikhet, men individuelt unikhet er ikke garantert. Derfor kombineres de for å unikt identifisere poster i en tabell.
Forskjellen mellom en sammensatt og en komposittnøkkel er at enhver del av en sammensatt nøkkel kan være en fremmednøkkel, men en sammensatt nøkkel kan være eller ikke være en del av en fremmednøkkel.
Hva er en surrogatnøkkel?
SURROGATNØKKEL er en kunstig nøkkel som har som mål å identifisere hver post unikt. Denne typen nøkkel er unik fordi den opprettes når du ikke har noen naturlig primærnøkkel. Surrogatnøkler gir ingen betydning til dataene i tabellen og er vanligvis et heltall generert rett før posten settes inn.
| Fname | Etternavn | Starttid | Sluttid |
|---|---|---|---|
| Anne | Smith | 09:00 | 18:00 |
| jekk | Francis | 08:00 | 17:00 |
| Anna | McLean | 11:00 | 20:00 |
| Vist | William | 14:00 | 23:00 |
Eksemplet ovenfor viser skifttidene til forskjellige ansatte. Her trengs en surrogatnøkkel for å identifisere hver ansatt unikt. Surrogatnøkler i SQL brukes når:
- Ingen egenskaper har parameteren til en primærnøkkel.
- Primærnøkkelen er for stor eller komplisert.
Forskjellen mellom primærnøkkel og fremmednøkkel
Følgende er hovedforskjellen mellom en primærnøkkel og en fremmednøkkel:
| Primærnøkkel | Foreign Key |
|---|---|
| Hjelper deg med å identifisere en post i tabellen unikt. | Det er et felt i tabellen som er primærnøkkelen til en annen tabell. |
| En primærnøkkel aksepterer aldri nullverdier. | En fremmednøkkel kan godta flere nullverdier. |
| Primærnøkkelen er en gruppert indeks, og dataene i tabellen er fysisk organisert i rekkefølgen til den grupperte indeksen. | En fremmednøkkel kan ikke automatisk opprette en indeks, verken gruppert eller ikke-gruppert. Du kan opprette en manuelt. |
| Du kan ha én primærnøkkel i en tabell. | Du kan ha flere fremmednøkler i en tabell. |
