Ein Fremdschlüssel unterscheidet sich von einem Superschlüssel, Kandidatenschlüssel oder Primärschlüssel, da ein Fremdschlüssel verwendet wird, um zwei Tabellen miteinander zu verknüpfen oder eine Konnektivität zwischen beiden herzustellen.
In diesem Abschnitt besprechen wir den Fremdschlüssel und seine Verwendung und schauen uns einige Beispiele an, die uns helfen, die Funktionsweise und Verwendung des Fremdschlüssels zu verstehen. Wir werden auch die praktische Implementierung in einer Datenbank sehen, d. h. das Erstellen und Löschen eines Fremdschlüssels in einer Tabelle.
Was ist ein Fremdschlüssel?
Ein Fremdschlüssel ist derjenige, der verwendet wird, um zwei Tabellen über den Primärschlüssel miteinander zu verknüpfen. Dies bedeutet, dass die Spalten einer Tabelle auf das Primärschlüsselattribut der anderen Tabelle verweisen. Dies bedeutet außerdem, dass jedes Attribut, das als Primärschlüsselattribut festgelegt ist, in einer anderen Tabelle als Fremdschlüsselattribut funktioniert. Man sollte jedoch wissen, dass ein Fremdschlüssel nichts mit dem Primärschlüssel zu tun hat.
Verwendung eines Fremdschlüssels
Die Verwendung eines Fremdschlüssels besteht lediglich darin, die Attribute zweier Tabellen mithilfe eines Primärschlüsselattributs miteinander zu verknüpfen. Somit wird es zum Erstellen und Aufrechterhalten der Beziehung zwischen den beiden Beziehungen verwendet.
Beispiel für einen Fremdschlüssel
Lassen Sie uns ein Beispiel besprechen, um die Funktionsweise eines Fremdschlüssels zu verstehen.
Java-Visualizer
Betrachten Sie zwei Tabellen Student Und Abteilung mit ihren jeweiligen Attributen, wie in der folgenden Tabellenstruktur gezeigt:
In den Tabellen ist nämlich ein Attribut, wie Sie sehen können, gemeinsam Stud_Id , aber es gibt unterschiedliche Schlüsseleinschränkungen für beide Tabellen. In der Student-Tabelle ist das Feld Stud_Id ein Primärschlüssel weil es alle anderen Felder der Student-Tabelle eindeutig identifiziert. Andererseits ist Stud_Id eine Unbekannter Schlüssel Attribut für die Abteilungstabelle, da es als Primärschlüsselattribut für die Student-Tabelle fungiert. Dies bedeutet, dass sowohl die Tabelle „Student“ als auch die Tabelle „Department“ aufgrund des Stud_Id-Attributs miteinander verknüpft sind.
In der unten gezeigten Abbildung können Sie die folgende Struktur der Beziehung zwischen den beiden Tabellen sehen.
Hinweis: Die referenzielle Integrität im DBMS basiert auf dem Konzept des Fremdschlüssels. Es ist klar, dass ein Primärschlüssel ein allein vorhandener Schlüssel ist und ein Fremdschlüssel immer auf einen Primärschlüssel in einer anderen Tabelle verweist, wobei die Tabelle, die den Primärschlüssel enthält, als referenzierte Tabelle oder übergeordnete Tabelle für die andere Tabelle bezeichnet wird hat den Fremdschlüssel.
Fremdschlüsseleinschränkung erstellen
Auf TABELLE ERSTELLEN
Nachfolgend finden Sie die Syntax, mit der wir die Erstellung eines Fremdschlüssels in einer Tabelle lernen:
Ankita Dave
CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int, FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id) );
Auf diese Weise können wir einen Fremdschlüssel für eine Tabelle in der MYSQL-Datenbank festlegen.
Im Falle der Erstellung eines Fremdschlüssels für eine Tabelle in SQL oder Oracle Server funktioniert die folgende Syntax:
CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int FOREIGN KEY REFERENCES Student (Stud_Id) );
Auf ALTER TABLE
Im Folgenden finden Sie die Syntax zum Erstellen einer Fremdschlüsseleinschränkung für ALTER TABLE:
ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id);
Fremdschlüssel löschen
Um einen Fremdschlüssel zu löschen, gibt es eine unten beschriebene Syntax, die verwendet werden kann:
So blenden Sie die Anwendung in Android ein
ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment;
Auf diese Weise können wir einen Fremdschlüssel mithilfe von ALTER TABLE in der MYSQL-Datenbank löschen.
Punkt zum Erinnern
Wenn Sie den Fremdschlüssel löschen, müssen Sie auf die Integrität der Tabellen achten, die über einen Fremdschlüssel verbunden sind. Wenn Sie Änderungen an einer Tabelle vornehmen und dadurch die Integrität beider Tabellen beeinträchtigt wird, kann es sein, dass aufgrund einer fehlerhaften Konnektivität zwischen den beiden Tabellen bestimmte Fehler angezeigt werden.
Referenzielle Aktionen
Es gibt einige Aktionen, die mit den Aktionen des Fremdschlüsseltabelleninhabers verknüpft sind:
Schriftarten für Gimp
1) Kaskade
Wenn wir Zeilen in der übergeordneten Tabelle (d. h. der Tabelle mit dem Primärschlüssel) löschen, werden dieselben Spalten in der anderen Tabelle (d. h. der Tabelle mit dem Fremdschlüssel) ebenfalls gelöscht. Daher wird die Aktion als bezeichnet Kaskade .
2) Setzen Sie NULL
Eine solche referenzielle Aktion wahrt die referenzielle Integrität beider Tabellen. Wenn wir eine referenzierte Zeile in der übergeordneten/referenzierten Tabelle manipulieren/löschen, wird in der untergeordneten Tabelle (Tabelle mit Fremdschlüssel) der Wert dieser referenzierenden Zeile auf NULL gesetzt. Eine solche durchgeführte Referenzaktion wird als bezeichnet NULL setzen .
3) Stellen Sie STANDARD ein
Eine solche Aktion findet statt, wenn die Werte in der referenzierten Zeile der übergeordneten Tabelle aktualisiert oder die Zeile gelöscht wird und die Werte in der untergeordneten Tabelle auf die Standardwerte der Spalte gesetzt werden.
4) Einschränken
Es handelt sich um die Einschränkungsbeschränkung, bei der der Wert der referenzierten Zeile in der übergeordneten Tabelle nicht geändert oder gelöscht werden kann, es sei denn, er wird nicht durch den Fremdschlüssel in der untergeordneten Tabelle referenziert. Es handelt sich also um eine normale referenzielle Aktion eines Fremdschlüssels.
Namen von Städten in den USA
5) Keine Aktion
Es handelt sich ebenfalls um eine Einschränkungsbeschränkung des Fremdschlüssels, die jedoch erst implementiert wird, nachdem versucht wurde, die referenzierte Zeile der übergeordneten Tabelle zu ändern oder zu löschen.
6) Auslöser
Alle diese und andere referenzielle Aktionen werden grundsätzlich als Auslöser implementiert, wobei die Aktionen eines Fremdschlüssels den benutzerdefinierten Auslösern sehr oder fast ähnlich sind. In einigen Fällen werden die geordneten Referenzaktionen jedoch durch die entsprechenden benutzerdefinierten Trigger ersetzt, um eine ordnungsgemäße Triggerausführung sicherzustellen.