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 | eksempel@sqldat.com | Hyderabad |
| 102 | Anmol | Temani | eksempel@sqldat.com | Jalgaon |
| 103 | Harshal | Patel | eksempel@sqldat.com | Mumbai |
| 104 | Sakshi | Hood | eksempel@sqldat.com | Pune |
| 105 | Suresh | Kohli | eksempel@sqldat.com | 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.