logo

Fremmednøgle i DBMS

En fremmednøgle er forskellig fra en supernøgle, kandidatnøgle eller primærnøgle, fordi en fremmednøgle er den, der bruges til at forbinde to tabeller sammen eller skabe forbindelse mellem de to.

Her, i dette afsnit, vil vi diskutere fremmednøgle, dens brug og se på nogle eksempler, der vil hjælpe os med at forstå virkemåden og brugen af ​​den fremmede nøgle. Vi vil også se dens praktiske implementering på en database, dvs. oprettelse og sletning af en fremmednøgle på en tabel.

Hvad er en fremmednøgle

En fremmednøgle er den, der bruges til at forbinde to tabeller sammen via den primære nøgle. Det betyder, at kolonnerne i den ene tabel peger på den primære nøgleattribut i den anden tabel. Det betyder yderligere, at hvis en attribut er indstillet som en primær nøgle attribut, vil den fungere i en anden tabel som en fremmed nøgle attribut. Men man bør vide, at en fremmednøgle ikke har noget at gøre med den primære nøgle.

Brug af fremmednøgle

Brugen af ​​en fremmednøgle er simpelthen at forbinde to tabellers attributter sammen ved hjælp af en primær nøgleattribut. Det bruges således til at skabe og vedligeholde forholdet mellem de to relationer.

Eksempel på fremmednøgle

Lad os diskutere et eksempel for at forstå, hvordan en fremmednøgle fungerer.

hjemmeside som coomeet

Overvej to tabeller Studerende og Afdeling med deres respektive attributter som vist i nedenstående tabelstruktur:

Fremmednøgle i DBMS
Fremmednøgle i DBMS

I tabellerne er én egenskab, du kan se, fælles, dvs Stud_Id , men den har forskellige nøglebegrænsninger for begge tabeller. I elevtabellen er feltet Stud_Id en primærnøgle fordi det entydigt identificerer alle andre felter i elevtabellen. På den anden side er Stud_Id en fremmed nøgle attribut for afdelingstabellen, fordi den fungerer som en primær nøgleattribut for elevtabellen. Det betyder, at både Student- og Instituttabellen er forbundet med hinanden på grund af Stud_Id-attributten.

I nedenstående viste figur kan du se følgende struktur af forholdet mellem de to tabeller.

css fed
Fremmednøgle i DBMS

Bemærk: Referenceintegritet i DBMS er udviklet ud fra begrebet fremmednøgle. Det er klart, at en primærnøgle er en alene eksisterende nøgle, og en fremmednøgle refererer altid til en primærnøgle i en anden tabel, hvor tabellen, der indeholder primærnøglen, er kendt som den refererede tabel eller overordnede tabel for den anden tabel, der har fremmednøglen.

Oprettelse af fremmednøglebegrænsning

På CREATE TABLE

Nedenfor er syntaksen, der vil få os til at lære oprettelsen af ​​en fremmednøgle i en tabel:

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

Så på denne måde kan vi indstille en fremmednøgle til en tabel i MYSQL-databasen.

I tilfælde af at der oprettes en fremmednøgle til en tabel 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 til at oprette en fremmednøgle-begrænsning på ALTER TABLE:

char til heltal java
 ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id); 

Slipning af fremmednøgle

For at slette en fremmednøgle er der en nedenfor beskrevet syntaks, der kan bruges:

 ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment; 

Så på denne måde kan vi slippe en fremmednøgle ved hjælp af ALTER TABLE i MYSQL-databasen.

Punkt at huske

Når du dropper den fremmede nøgle, skal man passe på integriteten af ​​tabellerne, som er forbundet via en fremmed nøgle. Hvis du foretager ændringer i en tabel og forstyrrer integriteten af ​​begge tabeller, kan den vise visse fejl på grund af forkert forbindelse mellem de to tabeller.

Henvisningshandlinger

Der er nogle handlinger, der er forbundet med de handlinger, der udføres af indehaveren af ​​udenlandsk nøgletabellen:

1) Kaskade

Når vi sletter rækker i den overordnede tabel (dvs. den, der har den primære nøgle), bliver de samme kolonner i den anden tabel (dvs. den, der har en fremmednøgle) også slettet. Således er handlingen kendt som Kaskade .

ikke-deterministiske endelige automater

2) Indstil NULL

En sådan henvisningshandling bevarer begge tabellers referenceintegritet. Når vi manipulerer/sletter en referencerække i den overordnede/refererede tabel, i den underordnede tabel (tabel med fremmednøgle), er værdien af ​​en sådan referencerække sat til NULL. En sådan referentiel handling, der udføres, er kendt som Indstil NULL .

3) Indstil STANDARD

En sådan handling finder sted, når værdierne i den refererede række i den overordnede tabel opdateres, eller rækken slettes, er værdierne i den underordnede tabel indstillet til standardværdierne for kolonnen.

4) Begræns

ekta kapoor skuespiller

Det er begrænsningen, hvor værdien af ​​den refererede række i den overordnede tabel ikke kan ændres eller slettes, medmindre den ikke er henvist af fremmednøglen i den underordnede tabel. Det er således en normal referencehandling af en fremmednøgle.

5) Ingen handling

Det er også en begrænsning af den fremmede nøgle, men implementeres kun efter forsøg på at ændre eller slette den refererede række i den overordnede tabel.

6) Udløsere

Alle disse og andre referentielle handlinger er grundlæggende implementeret som triggere, hvor handlingerne af en fremmed nøgle ligner meget eller næsten ligner brugerdefinerede triggere. I nogle tilfælde bliver de bestilte henvisningshandlinger imidlertid erstattet af deres tilsvarende brugerdefinerede triggere for at sikre korrekt triggerudførelse.