I denne artikel lærer vi om FOREIGN KEY-begrænsningerne, og hvordan man definerer en FOREIGN KEY-begrænsning for at opbygge forholdet mellem to tabeller.
I et RDBMS (Relational Databases Management System) er en FOREIGN KEY et felt eller en masse felter, som bruges til at bygge en relation mellem to tabeller eller forbinde de to tabeller.
- FOREIGN KEY er også kendt som referencenøgle i RDBMS
- Ved at bruge FOREIGN KEY-begrænsninger mellem to tabeller definerer vi et forældre-underordnet forhold mellem to tabeller.
- Feltet definerer PRIMÆR NØGLE-begrænsningerne i en tabel kendt som den overordnede tabel, mens det samme felt definerer FOREIGN KEY-begrænsningerne i en anden tabel er kendt som den underordnede tabel.
- Der kan kun være én PRIMÆR NØGLE i tabellen, men der er ingen defineret grænse for UDENLANDSKE NØGLE. Vi kan have en eller mere end én UDENLANDSKE NØGLE på bordet.
- Vi kan definere FOREIGN KEY-begrænsninger, mens vi opretter tabellen eller definere FOREIGN KEY-begrænsninger på den allerede eksisterende tabel.
Lad os tage et eksempel for at forstå og lære om UDENLANDSKE NØGLE-begrænsningerne.
Eksempel:
Her har vi to tabeller, den ene er kursustabellen og den anden er elevtabellen:
Eleverne vælger kurser. Følgende eksempel på FOREIGN KEY-begrænsninger er defineret på ét felt.
Tabel nummer ét:Elevbord
Student_Id | Fornavn | Efternavn | Email_Id | By |
101 | Kareena | Sayyed | [email protected] | Hyderabad |
102 | Anmol | Temani | [email protected] | Jalgaon |
103 | Harshal | Patel | [email protected] | Mumbai |
104 | Sakshi | Hood | [email protected] | Pune |
105 | Suresh | Kohli | [email protected] | Hyderabad |
Tabel nummer to:Kursustabel
Course_Id | Course_Name | Student_Id |
C101 | Java | 101 |
C102 | SQL | 102 |
C103 | SOA | Nul |
C104 | SAP | 104 |
C105 | MuleSoft | 103 |
C101 | Java | 105 |
I Elev-tabellen er Student_Id-feltet PRIMÆR NØGLE, og i Kursustabellen er Student_Id UDENLANDSKE NØGLE.
FOREIGN KEY
begrænsning forhindrer ugyldige data i at blive indsat i kolonnen med fremmednøgle, fordi det skal være en af værdierne i den overordnede tabel.
Definer UDENLANDSKE NØGLE-begrænsninger på CREATE TABLE
Følgende eksempel definerer en UDENLANDSKE NØGLE på kursustabellen.
Først har vi lavet elevtabellen med følgende felter:
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ølgende eksempel viser, hvordan man definerer FOREIGN KEY-begrænsningerne på den anden tabel.
Tabelnavnkursus:
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 kursustabellen definerede vi ikke nogen PRIMÆR NØGLE. Du skal blot definere FOREIGN KEY-begrænsningerne på Student_Id.
Følgende eksempel på FOREIGN KEY-begrænsninger er defineret på flere felter.
Antag, at vi har tre tabeller, den ene er pakketabellen, den anden er datatabellen, og den tredje er tabellen Tale_time:
Tabel 1:Pakke:
Package_Id | Data_Id | Taletids_Id |
P1001 | D1003 | T1001 |
P1002 | D1001 | T1002 |
P1003 | D1002 | T1003 |
P1004 | D1003 | T1004 |
P1005 | D1004 | T1005 |
Tabel 2:Data:
Data_Id | Data_Limit | Data_Price |
D1001 | 5 | 120 |
D1002 | 3 | 75 |
D1003 | 6 | 150 |
D1004 | 10 | 240 |
D1005 | 15 | 320 |
Tabel 3:Taletid:
Talk_Time_Id | Talketid _grænse | Talketid _Pris |
T1001 | 120 | 130 |
T1002 | 70 | 105 |
T1003 | 60 | 90 |
T1004 | 200 | 220 |
T1005 | 150 | 170 |
I Talk_Time-tabellen er Talk_Time_Id den PRIMÆRE NØGLE.
I datatabellen er Data_Id den PRIMÆRE NØGLE.
Hvorimod Talk_Time_Id og Data_Id i pakketabellen er UDENLANDSKE nøgler
Tabel nummer et:Data:
CREATE TABLE Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));
Tabel nummer to:Tale_Time:
CREATE TABLE Talk_Time(Talk_Time_Id varchar(5) NOT NULL, Talk_Time_Limit int, Talk_Time_Price int , PRIMARY KEY(Talk_Time_Id));
Tabel nummer tre:Pakke:
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 Constraints ved hjælp af ALTER TABLE:
Antag, at vi allerede har oprettet tabellen og ønsker at definere FOREIGN KEY-begrænsningerne på feltet. Vi vil bruge ALTER TABLE-forespørgslen til at tilføje FOREIGN KEY-begrænsninger i et sådant tilfælde.
Følgeforespørgslen bruges til at tilføje FOREIGN KEY-begrænsninger i feltet Student_Id.
ALTER TABLE Course ADD FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id);
ADD Keyword bruges efter tabelnavnet for at tilføje FOREIGN KEY-begrænsningerne til den allerede eksisterende tabel.
SLIP UDENLANDSKE NØGLE-begrænsning fra tabellen
Brug følgende forespørgsel til at fjerne FOREIGN KEY-begrænsningen fra tabellen.
ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;
Drop søgeord bruges til at fjerne FOREIGN KEY-begrænsninger fra feltet Student_Id.
course_ibfk_1 er navnet på den fremmede nøglebegrænsning.
Vi kan have nulværdier i feltet FOREIGN KEY constraints. Vi kan have duplikerede værdier i feltet FOREIGN KEY constraints.