logo

Utländsk nyckel i DBMS

En främmande nyckel skiljer sig från en supernyckel, kandidatnyckel eller primärnyckel eftersom en främmande nyckel är den som används för att länka samman två tabeller eller skapa anslutning mellan de två.

Här, i det här avsnittet, kommer vi att diskutera främmande nyckel, dess användning och titta på några exempel som hjälper oss att förstå hur den främmande nyckeln fungerar och används. Vi kommer också att se dess praktiska implementering på en databas, det vill säga skapa och ta bort en främmande nyckel på en tabell.

Vad är en främmande nyckel

En främmande nyckel är den som används för att länka samman två tabeller via primärnyckeln. Det betyder att kolumnerna i en tabell pekar på det primära nyckelattributet för den andra tabellen. Det betyder vidare att om något attribut är satt som ett primärnyckelattribut kommer det att fungera i en annan tabell som ett främmande nyckelattribut. Men man bör veta att en främmande nyckel inte har något att göra med primärnyckeln.

Användning av främmande nyckel

Användningen av en främmande nyckel är helt enkelt att länka samman attributen för två tabeller med hjälp av ett primärnyckelattribut. Således används den för att skapa och upprätthålla relationen mellan de två relationerna.

Exempel på främmande nyckel

Låt oss diskutera ett exempel för att förstå hur en främmande nyckel fungerar.

rad vs kolumn

Tänk på två tabeller Studerande och Avdelning som har sina respektive attribut som visas i tabellstrukturen nedan:

Utländsk nyckel i DBMS
Utländsk nyckel i DBMS

I tabellerna är ett attribut, som du kan se, vanligt, det vill säga Stud_Id , men den har olika nyckelbegränsningar för båda tabellerna. I elevtabellen är fältet Stud_Id en primärnyckel eftersom det unikt identifierar alla andra fält i elevtabellen. Å andra sidan är Stud_Id en främmande nyckel attribut för Institutionstabellen eftersom det fungerar som ett primärt nyckelattribut för Elevtabellen. Det betyder att både Student- och Institutionstabellen är länkade med varandra på grund av Stud_Id-attributet.

I den nedan visade bilden kan du se följande struktur för förhållandet mellan de två tabellerna.

Utländsk nyckel i DBMS

Obs: Referensintegritet i DBMS utvecklas utifrån konceptet med den främmande nyckeln. Det är tydligt att en primärnyckel är en ensam befintlig nyckel och en främmande nyckel refererar alltid till en primärnyckel i någon annan tabell, där tabellen som innehåller primärnyckeln är känd som den refererade tabellen eller överordnade tabellen för den andra tabellen som har den främmande nyckeln.

Skapar utländsk nyckel-begränsning

På CREATE TABLE

Nedan är syntaxen som får oss att lära oss skapandet av en främmande nyckel 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å detta sätt kan vi ställa in en främmande nyckel för en tabell i MYSQL-databasen.

normalisering i databasen

Om du skapar en främmande nyckel för en tabell i SQL- eller Oracle-servern kommer följande syntax att fungera:

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

På ALTER TABLE

Följande är syntaxen för att skapa en främmande nyckel-begränsning på ALTER TABLE:

 ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id); 

Tappa utländsk nyckel

För att ta bort en främmande nyckel finns det en syntax som beskrivs nedan som kan användas:

 ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment; 

Så på detta sätt kan vi släppa en främmande nyckel med ALTER TABLE i MYSQL-databasen.

gratis vs gratis

Punkt att komma ihåg

När du släpper den främmande nyckeln måste man ta hand om integriteten hos tabellerna som är anslutna via en främmande nyckel. Om du gör ändringar i en tabell och stör integriteten för båda tabellerna, kan den visa vissa fel på grund av felaktig anslutning mellan de två tabellerna.

Refererande åtgärder

Det finns några åtgärder som är kopplade till de åtgärder som vidtas av innehavaren av den främmande nyckeltabellen:

1) Kaskad

När vi tar bort rader i den överordnade tabellen (dvs den som håller primärnyckeln) tas också samma kolumner i den andra tabellen (dvs den som har en främmande nyckel) bort. Således är åtgärden känd som Kaskad .

2) Ställ in NULL

charat java

Sådana referensåtgärder upprätthåller referensintegriteten för båda tabellerna. När vi manipulerar/tar bort en refererad rad i den överordnade/refererade tabellen, i den underordnade tabellen (tabell med främmande nyckel), sätts värdet på en sådan referensrad som NULL. En sådan referensåtgärd som utförs är känd som Ställ in NULL .

3) Ställ in STANDARD

En sådan åtgärd sker när värdena i den refererade raden i den överordnade tabellen uppdateras, eller raden tas bort, värdena i den underordnade tabellen är inställda på standardvärden för kolumnen.

4) Begränsa

Det är restriktionsrestriktionen där värdet på den refererade raden i den överordnade tabellen inte kan ändras eller tas bort om det inte hänvisas till av den främmande nyckeln i den underordnade tabellen. Det är således en normal referensåtgärd för en främmande nyckel.

5) Ingen åtgärd

palindromnummer

Det är också en restriktion för den främmande nyckeln, men implementeras endast efter försök att modifiera eller ta bort den refererade raden i den överordnade tabellen.

6) Triggers

Alla dessa och andra referensåtgärder är i princip implementerade som utlösare där åtgärderna för en främmande nyckel är mycket lika eller nästan liknar användardefinierade utlösare. Men i vissa fall ersätts de beställda referensåtgärderna av motsvarande användardefinierade utlösare för att säkerställa korrekt utlösningsutförande.