logo

Fremmednøkkel i DBMS

En fremmednøkkel er forskjellig fra en supernøkkel, kandidatnøkkel eller primærnøkkel fordi en fremmednøkkel er den som brukes til å koble to tabeller sammen eller skape tilkobling mellom de to.

Her, i denne delen, vil vi diskutere fremmednøkkelen, dens bruk og se på noen eksempler som vil hjelpe oss å forstå virkemåten og bruken av fremmednøkkelen. Vi vil også se den praktiske implementeringen på en database, dvs. opprette og slette en fremmednøkkel på en tabell.

Hva er en fremmednøkkel

En fremmednøkkel er den som brukes til å koble to tabeller sammen via primærnøkkelen. Det betyr at kolonnene i en tabell peker til primærnøkkelattributtet til den andre tabellen. Det betyr videre at hvis et attributt er satt som et primærnøkkelattributt, vil det fungere i en annen tabell som et fremmednøkkelattributt. Men man bør vite at en fremmednøkkel ikke har noe med primærnøkkelen å gjøre.

Bruk av fremmednøkkel

Bruken av en fremmednøkkel er ganske enkelt å koble attributtene til to tabeller sammen ved hjelp av en primærnøkkelattributt. Dermed brukes den til å skape og opprettholde forholdet mellom de to relasjonene.

Eksempel på fremmednøkkel

La oss diskutere et eksempel for å forstå hvordan en fremmednøkkel fungerer.

linux snarveier

Tenk på to tabeller Student og Avdeling har sine respektive attributter som vist i tabellstrukturen nedenfor:

Fremmednøkkel i DBMS
Fremmednøkkel i DBMS

I tabellene er ett attributt, du kan se, vanlig, altså Stud_Id , men den har forskjellige nøkkelbegrensninger for begge tabellene. I Student-tabellen er feltet Stud_Id en primærnøkkel fordi den identifiserer alle andre felt i elevtabellen unikt. På den annen side er Stud_Id en fremmednøkkel attributt for Institutttabellen fordi det fungerer som et primærnøkkelattributt for Studenttabellen. Det betyr at både Student- og Institutttabellen er koblet til hverandre på grunn av Stud_Id-attributtet.

I figuren nedenfor kan du se følgende struktur av forholdet mellom de to tabellene.

css fet skrift
Fremmednøkkel i DBMS

Merk: Referensiell integritet i DBMS er utviklet fra konseptet med fremmednøkkelen. Det er klart at en primærnøkkel er en alene eksisterende nøkkel og en fremmednøkkel refererer alltid til en primærnøkkel i en annen tabell, der tabellen som inneholder primærnøkkelen er kjent som den refererte tabellen eller overordnede tabellen for den andre tabellen som har fremmednøkkelen.

Opprette utenlandsk nøkkelbegrensning

På CREATE TABLE

Nedenfor er syntaksen som vil få oss til å lære å lage en fremmednøkkel i en tabell:

 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int, FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id) ); 

Så på denne måten kan vi sette en fremmednøkkel for en tabell i MYSQL-databasen.

I tilfelle du oppretter en fremmednøkkel for en tabell i SQL eller Oracle server, vil følgende syntaks fungere:

 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int FOREIGN KEY REFERENCES Student (Stud_Id) ); 

På ALTER TABLE

Følgende er syntaksen for å lage en fremmednøkkelbegrensning på ALTER TABLE:

hvordan konvertere et heltall til en streng i java
 ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id); 

Slippe fremmednøkkel

For å slette en fremmednøkkel, er det en syntaks som er beskrevet nedenfor som kan brukes:

 ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment; 

Så på denne måten kan vi slippe en fremmednøkkel ved å bruke ALTER TABLE i MYSQL-databasen.

Punkt å huske

Når du slipper fremmednøkkelen, må man ta vare på integriteten til tabellene som er koblet sammen via en fremmednøkkel. I tilfelle du gjør endringer i én tabell og forstyrrer integriteten til begge tabellene, kan den vise visse feil på grunn av feil tilkobling mellom de to tabellene.

Refererende handlinger

Det er noen handlinger som er knyttet til handlingene utført av innehaveren av utenlandsk nøkkeltabell:

1) Kaskade

Når vi sletter rader i den overordnede tabellen (dvs. den som har primærnøkkelen), blir de samme kolonnene i den andre tabellen (dvs. den som har en fremmednøkkel) også slettet. Dermed er handlingen kjent som Cascade .

ikke-deterministiske endelige automater

2) Sett NULL

Slik referansehandling opprettholder referanseintegriteten til begge tabellene. Når vi manipulerer/sletter en referert rad i den overordnede/refererte tabellen, i den underordnede tabellen (tabell med fremmednøkkel), settes verdien til en slik refererende rad som NULL. En slik referansehandling som utføres er kjent som Sett NULL .

3) Sett STANDARD

En slik handling finner sted når verdiene i den refererte raden i den overordnede tabellen oppdateres, eller raden slettes, verdiene i den underordnede tabellen er satt til standardverdiene for kolonnen.

4) Begrens

zeenat aman skuespiller

Det er restriksjonsbegrensningen der verdien av den refererte raden i den overordnede tabellen ikke kan endres eller slettes med mindre den ikke er referert av fremmednøkkelen i den underordnede tabellen. Dermed er det en normal referansehandling av en fremmednøkkel.

5) Ingen handling

Det er også en begrensning av fremmednøkkelen, men implementeres bare etter forsøk på å endre eller slette den refererte raden i den overordnede tabellen.

6) Triggere

Alle disse og andre referansehandlinger er i utgangspunktet implementert som utløsere der handlingene til en fremmednøkkel er mye like eller nesten lik brukerdefinerte utløsere. I noen tilfeller blir imidlertid de bestilte referansehandlingene erstattet av deres tilsvarende brukerdefinerte utløsere for å sikre riktig utførelse av utløseren.