In diesem Artikel lernen wir etwas über die FOREIGN KEY-Einschränkungen und wie man eine FOREIGN KEY-Einschränkung definiert, um die Beziehung zwischen zwei Tabellen aufzubauen.
In einem Managementsystem für relationale Datenbanken (RDBMS) ist ein FOREIGN KEY ein Feld oder eine Reihe von Feldern, die verwendet werden, um eine Beziehung zwischen zwei Tabellen aufzubauen oder die beiden Tabellen zu verknüpfen.
- FREMDSCHLÜSSEL wird im RDBMS auch als referenzierender Schlüssel bezeichnet
- Durch die Verwendung von FOREIGN KEY-Einschränkungen zwischen zwei Tabellen definieren wir eine Eltern-Kind-Beziehung zwischen zwei Tabellen.
- Das Feld definiert die PRIMARY KEY-Einschränkungen in einer Tabelle, die als übergeordnete Tabelle bekannt ist, während dasselbe Feld die FOREIGN KEY-Einschränkungen in einer anderen Tabelle definiert, die als untergeordnete Tabelle bezeichnet wird.
- Es kann nur einen PRIMARY KEY in der Tabelle geben, aber es gibt kein definiertes Limit für den FOREIGN KEY. Wir können einen oder mehr als einen FOREIGN KEY auf dem Tisch haben.
- Wir können FOREIGN KEY-Einschränkungen beim Erstellen der Tabelle definieren oder FOREIGN KEY-Einschränkungen für die bereits vorhandene Tabelle definieren.
Nehmen wir ein Beispiel, um die FOREIGN KEY-Einschränkungen zu verstehen und zu lernen.
Beispiel:
Hier haben wir zwei Tabellen, eine ist die Course-Tabelle und die zweite die Student-Tabelle:
Die Studierenden wählen Lehrveranstaltungen aus. Das folgende FOREIGN KEY-Einschränkungsbeispiel ist für ein Feld definiert.
Tisch Nummer eins:Schülertisch
Student_ID | Vorname | Nachname | E-Mail_ID | Stadt |
101 | Kareena | Sayyed | [email protected] | Hyderabad |
102 | Anmol | Temani | [email protected] | Jalgaon |
103 | Harshal | Patel | [email protected] | Mumbai |
104 | Sakshi | Haube | [email protected] | Pune |
105 | Sicher | Kohli | [email protected] | Hyderabad |
Tabelle Nummer Zwei:Kurstabelle
Kurs_ID | Kursname | Student_ID |
C101 | Java | 101 |
C102 | SQL | 102 |
C103 | SOA | Null |
C104 | SAP | 104 |
C105 | MuleSoft | 103 |
C101 | Java | 105 |
In der Student-Tabelle ist das Feld Student_Id der PRIMARY KEY und in der Course-Tabelle ist Student_Id der FOREIGN KEY.
Der FOREIGN KEY
Einschränkung verhindert, dass ungültige Daten in die Fremdschlüsselspalte eingefügt werden, da es sich um einen der in der übergeordneten Tabelle enthaltenen Werte handeln muss.
Definiere FOREIGN KEY Constraints auf CREATE TABLE
Das folgende Beispiel definiert einen FOREIGN KEY in der Course-Tabelle.
Zuerst haben wir die Student-Tabelle mit den folgenden Feldern erstellt:
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));
Das folgende Beispiel zeigt, wie die FOREIGN KEY-Einschränkungen für die andere Tabelle definiert werden.
Tabellenname Kurs:
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));
In der Course-Tabelle haben wir keinen PRIMARY KEY definiert. Definieren Sie einfach die FOREIGN KEY-Einschränkungen für die Student_Id.
Das folgende FOREIGN KEY-Einschränkungsbeispiel ist für mehrere Felder definiert.
Angenommen, wir haben drei Tabellen, eine ist die Package-Tabelle, die zweite die Data-Tabelle und die dritte die Talk_time-Tabelle:
Tabelle 1:Paket:
Package_Id | Daten_ID | Talktime_Id |
P1001 | D1003 | T1001 |
P1002 | D1001 | T1002 |
P1003 | D1002 | T1003 |
P1004 | D1003 | T1004 |
P1005 | D1004 | T1005 |
Tabelle 2:Daten:
Daten-ID | Data_Limit | Data_Price |
D1001 | 5 | 120 |
D1002 | 3 | 75 |
D1003 | 6 | 150 |
D1004 | 10 | 240 |
D1005 | 15 | 320 |
Tabelle 3:Talk_Time:
Talk_Time_Id | Talk_Time _Limit | Talk_Time _Price |
T1001 | 120 | 130 |
T1002 | 70 | 105 |
T1003 | 60 | 90 |
T1004 | 200 | 220 |
T1005 | 150 | 170 |
In der Talk_Time-Tabelle ist Talk_Time_Id der PRIMARY KEY.
In der Datentabelle ist Data_Id der PRIMARY KEY.
Während in der Pakettabelle Talk_Time_Id und Data_Id die FOREIGN-Schlüssel sind
Tabelle Nummer eins:Daten:
CREATE TABLE Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));
Tabelle Nummer zwei:Talk_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));
Tabelle Nummer drei: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));
FREMDSCHLÜSSEL-Einschränkungen mit ALTER TABLE:
Angenommen, wir haben die Tabelle bereits erstellt und möchten die FOREIGN KEY-Einschränkungen für das Feld definieren. Wir werden die ALTER TABLE-Abfrage verwenden, um in einem solchen Fall FOREIGN KEY-Einschränkungen hinzuzufügen.
Die folgende Abfrage wird verwendet, um FOREIGN KEY-Einschränkungen für das Feld Student_Id hinzuzufügen.
ALTER TABLE Course ADD FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id);
Das Schlüsselwort ADD wird nach dem Tabellennamen verwendet, um die FOREIGN KEY-Einschränkungen zu der bereits vorhandenen Tabelle hinzuzufügen.
DOP FOREIGN KEY Constraint aus der Tabelle
Verwenden Sie die folgende Abfrage, um die Einschränkung FOREIGN KEY aus der Tabelle zu entfernen.
ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;
Das Schlüsselwort Drop wird verwendet, um FOREIGN KEY-Einschränkungen aus dem Feld Student_Id zu entfernen.
course_ibfk_1 ist der Name der Fremdschlüsselbeschränkung.
Wir können Nullwerte im FOREIGN KEY-Einschränkungsfeld haben. Wir können doppelte Werte im FOREIGN KEY-Einschränkungsfeld haben.