I den här artikeln kommer vi att lära oss om FOREIGN KEY-begränsningarna och hur man definierar en FOREIGN KEY-begränsning för att bygga relationen mellan två tabeller.
I ett RDBMS (Relational Databases Management System) är en FOREIGN KEY ett fält eller en massa fält som används för att bygga en relation mellan två tabeller eller förena de två tabellerna.
- FREIGN KEY är också känd som referensnyckel i RDBMS
- Genom att använda FOREIGN KEY-begränsningar mellan två tabeller definierar vi en förälder-underordnad relation mellan två tabeller.
- Fältet definierar PRIMARY KEY-begränsningarna i en tabell som kallas den överordnade tabellen, medan samma fält definierar FOREIGN KEY-begränsningarna i en annan tabell kallas den underordnade tabellen.
- Det kan bara finnas en PRIMÄR NYCKEL i tabellen, men det finns ingen definierad gräns för den UTLÄNDSKA NYCKELN. Vi kan ha en eller fler än en UTLÄNDSK NYCKEL på bordet.
- Vi kan definiera FOREIGN KEY-begränsningar medan vi skapar tabellen eller definiera FOREIGN KEY-begränsningar på den redan befintliga tabellen.
Låt oss ta ett exempel för att förstå och lära oss om begränsningarna i FOREIGN KEY.
Exempel:
Här har vi två tabeller, den ena är kurstabellen och den andra är elevtabellen:
Eleverna väljer kurser. Följande exempel på FOREIGN KEY-begränsningar definieras på ett fält.
Tabell nummer ett:Elevbord
Student_Id | First_Name | Efternamn | Email_Id | Stad |
101 | Kareena | Sayyed | [email protected] | Hyderabad |
102 | Anmol | Temani | [email protected] | Jalgaon |
103 | Harshal | Patel | [email protected] | Mumbai |
104 | Sakshi | Huv | [email protected] | Pune |
105 | Suresh | Kohli | [email protected] | Hyderabad |
Tabell nummer två:Kurstabell
Course_Id | Course_Name | Student_Id |
C101 | Java | 101 |
C102 | SQL | 102 |
C103 | SOA | Null |
C104 | SAP | 104 |
C105 | MuleSoft | 103 |
C101 | Java | 105 |
I elevtabellen är fältet Student_Id den PRIMÄRA NYCKELN och i kurstabellen är Student_Id den UTLÄNDSKA NYCKELN.
FOREIGN KEY
begränsning förhindrar att ogiltiga data infogas i kolumnen för främmande nyckel eftersom det måste vara ett av värdena i den överordnade tabellen.
Definiera UTLÄNDSKA NYCKELbegränsningar på CREATE TABLE
Följande exempel definierar en UTLÄNDSK NYCKEL på kurstabellen.
Först har vi skapat elevtabellen med följande fält:
CREATE TABLE Student( Student_Id int NOT NULL, First_Name varchar(40) NOT NULL, Last_Name varchar(40) NOT NULL, Email_Id varchar(50), City varchar(20) NOT NULL, PRIMARY KEY(Student_Id));
Följande exempel visar hur man definierar FOREIGN KEY-begränsningarna i den andra tabellen.
Tabellnamnkurs:
CREATE TABLE Course( Course_Id int NOT NULL, Course_Name varchar(40) NOT NULL, Student_Id int, FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id));
I kurstabellen definierade vi inte någon PRIMÄRNYCKEL. Definiera bara FOREIGN KEY-begränsningarna på Student_Id.
Följande exempel på FOREIGN KEY-begränsningar definieras på flera fält.
Anta att vi har tre tabeller, en är pakettabellen, den andra är datatabellen och den tredje är tabellen Talk_time:
Tabell 1:Paket:
Package_Id | Data_Id | Talktime_Id |
P1001 | D1003 | T1001 |
P1002 | D1001 | T1002 |
P1003 | D1002 | T1003 |
P1004 | D1003 | T1004 |
P1005 | D1004 | T1005 |
Tabell 2:Data:
Data_Id | Data_Limit | Data_Pris |
D1001 | 5 | 120 |
D1002 | 3 | 75 |
D1003 | 6 | 150 |
D1004 | 10 | 240 |
D1005 | 15 | 320 |
Tabell 3:Talktid:
Talk_Time_Id | Talktidsgräns | Talktid _Pris |
T1001 | 120 | 130 |
T1002 | 70 | 105 |
T1003 | 60 | 90 |
T1004 | 200 | 220 |
T1005 | 150 | 170 |
I tabellen Talk_Time är Talk_Time_Id den PRIMÄRA NYCKELN.
I datatabellen är Data_Id PRIMÄRNYCKELN.
Medan i pakettabellen är Talk_Time_Id och Data_Id utländska nycklar
Tabell nummer ett:Data:
CREATE TABLE Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));
Tabell nummer två:Talktid:
CREATE TABLE Talk_Time(Talk_Time_Id varchar(5) NOT NULL, Talk_Time_Limit int, Talk_Time_Price int , PRIMARY KEY(Talk_Time_Id));
Tabell nummer tre:Paket:
CREATE TABLE Package(Package_Id varchar(5) NOT NULL, Data_Id varchar(5), Talk_Time_Id varchar(5), FOREIGN KEY(Data_Id) REFERENCES Data(Data_Id), FOREIGN KEY(Talk_Time_Id) REFERENCES Talk_Time(Talk_Time_Id));
FREIGN KEY-begränsningar med ALTER TABLE:
Anta att vi redan har skapat tabellen och vill definiera FOREIGN KEY-begränsningarna på fältet. Vi kommer att använda ALTER TABLE-frågan för att lägga till FOREIGN KEY-begränsningar i ett sådant fall.
Följningsfrågan används för att lägga till FOREIGN KEY-begränsningar i fältet Student_Id.
ALTER TABLE Course ADD FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id);
ADD Keyword används efter tabellnamnet för att lägga till FOREIGN KEY-begränsningarna till den redan befintliga tabellen.
SLIPPA UTLÄNDLIG KEY från tabellen
Använd följande fråga för att ta bort FOREIGN KEY-begränsningen från tabellen.
ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;
Släpp nyckelord används för att ta bort FOREIGN KEY-begränsningar från Student_Id-fältet.
course_ibfk_1 är namnet på den främmande nyckeln.
Vi kan ha nollvärden i fältet FOREIGN KEY-begränsningar. Vi kan ha dubbletter av värden i fältet FOREIGN KEY constraints.