Was sind Fremdschlüssel in SQL-Datenbanken?

Mit Fremdschlüsseln können Datenbankadministratoren auf einfache Weise die verschiedenen Verbindungen identifizieren, die in einem SQL-Datenbankverwaltungssystem vorhanden sind.

SQL führt mathematische Operationen an Daten in einem Datenbankverwaltungssystem aus. Diese Datenbanken enthalten verschiedene Tabellen, in denen jeweils Daten für eine bestimmte Entität gespeichert sind. Wenn Sie über eine Autovermietungsdatenbank verfügen, handelt es sich bei einer Entität (oder Tabelle) in dieser Datenbank um Kunden (in denen alle personenbezogenen Daten jedes Kunden gespeichert sind).

Diese Datenbanktabellen enthalten Zeilen und Spalten, wobei jede Zeile einen Datensatz enthält und jede Spalte attributspezifische Daten enthält.

In einem Datenbankverwaltungssystem sollte jeder Datensatz (oder jede Zeile) eindeutig sein.

Primärschlüssel

Obwohl festgelegt ist, dass jeder Datensatz in einer Tabelle unterschiedlich sein sollte, ist dies nicht immer der Fall. Wenn die Datenbank zwei Kunden mit dem Namen „John Brown“ enthält, kann von einem John Brown erwartet werden, dass er einen Mercedes-Benz zurückgibt, den er nicht gemietet hat.

Durch das Erstellen eines Primärschlüssels wird dieses Risiko verringert. In einem SQL-Datenbankverwaltungssystem ist ein Primärschlüssel eine eindeutige Kennung, die einen Datensatz von einem anderen unterscheidet.

Daher sollte jeder Datensatz in einem SQL-Datenbankverwaltungssystem einen Primärschlüssel haben.

Verwenden von Primärschlüsseln in einer Datenbank

Um Primärschlüssel mithilfe von SQL in ein Datenbankverwaltungssystem aufzunehmen, können Sie sie beim Erstellen einer neuen Tabelle einfach als normales Attribut hinzufügen. Die Kundentabelle enthält also vier Attribute (oder Spalten):

  • CarOwnerID (in der der Primärschlüssel gespeichert wird)
  • Vorname
  • Nachname
  • Telefonnummer

Verwandte: So erstellen Sie eine Tabelle in SQL

Jetzt hat jeder Kundendatensatz, der in die Datenbank eingeht, eine eindeutige Identifikationsnummer sowie einen Vor- und Nachnamen sowie eine Telefonnummer. Die Telefonnummer ist nicht eindeutig genug, um ein Primärschlüssel zu sein, denn obwohl sie jeweils nur für eine Person eindeutig ist, kann eine Person ihre Nummer leicht ändern, was bedeutet, dass sie jetzt einer anderen Person gehört.

Ein Datensatz mit einem Primärschlüsselbeispiel

 /* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

Der obige SQL-Code fügt der bereits vorhandenen Customers- Tabelle einen neuen Datensatz hinzu. Die folgende Tabelle zeigt die neue Kundentabelle mit den beiden John Brown-Datensätzen.

Was sind Fremdschlüssel in SQL-Datenbanken? - car rental customers table

Der Fremdschlüssel

Jetzt haben Sie Primärschlüssel, die einen Autovermieter eindeutig von einem anderen unterscheiden. Das einzige Problem ist, dass es in der Datenbank keine echte Verbindung zwischen jedem John Brown und dem Auto gibt, das er mietet.

Daher besteht weiterhin die Möglichkeit, einen Fehler zu machen. Hier kommen Fremdschlüssel ins Spiel. Die Verwendung eines Primärschlüssels zur Lösung des Problems der Mehrdeutigkeit des Eigentums ist nur möglich, wenn der Primärschlüssel gleichzeitig als Fremdschlüssel fungiert.

Was ist ein Fremdschlüssel?

In einem SQL-Datenbankverwaltungssystem ist ein Fremdschlüssel ein eindeutiger Bezeichner oder eine Kombination eindeutiger Bezeichner, die zwei oder mehr Tabellen in einer Datenbank verbinden.

Von den vier existierenden SQL-Datenbankverwaltungssystemen ist das relationale Datenbankverwaltungssystem das beliebteste. Wenn Sie entscheiden, welche Tabelle in einer relationalen Datenbank einen Fremdschlüssel haben soll, sollten Sie zuerst identifizieren, welche Tabelle das Subjekt und welches das Objekt in ihrer Beziehung ist.

Wenn Sie zur Autovermietungsdatenbank zurückkehren, um jeden Kunden mit dem richtigen Auto zu verbinden, müssen Sie verstehen, dass ein Kunde (das Subjekt) ein Auto (das Objekt) mietet. Daher sollte sich der Fremdschlüssel in der Autotabelle befinden.

Der SQL-Code, der eine Tabelle mit einem Fremdschlüssel generiert, unterscheidet sich geringfügig von der Norm.

Erstellen einer Tabelle mit einem Fremdschlüsselbeispiel

 /* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

Wie Sie im obigen Code sehen können, muss ein Fremdschlüssel explizit als solcher identifiziert werden, zusammen mit einem Verweis auf den Primärschlüssel, der mit der neuen Tabelle verbunden wird.

Verwandte: Das Essential SQL Commands Cheat Sheet für Anfänger

Um der neuen Tabelle einen Datensatz hinzuzufügen, müssen Sie sicherstellen, dass der Wert im Fremdschlüsselfeld mit dem Wert im Primärschlüsselfeld der Originaltabelle übereinstimmt.

Hinzufügen eines Datensatzes mit einem Fremdschlüsselbeispiel

 /* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

Der obige Code erstellt einen neuen Datensatz in der Tabelle "Neue Autos" und führt zu folgendem Ergebnis.

Autotisch

Was sind Fremdschlüssel in SQL-Datenbanken? - cars table

Aus der obigen Tabelle können Sie den richtigen John Brown, der einen Mercedes-Benz mietet, anhand des Fremdschlüssels in der Aufzeichnung identifizieren.

Fremdschlüssel vorschieben

Es gibt zwei weitere Möglichkeiten, einen Fremdschlüssel in einer Datenbank zu verwenden.

Wenn Sie auf die obige Definition eines Fremdschlüssels zurückblicken, werden Sie feststellen, dass ein Fremdschlüssel ein eindeutiger Bezeichner oder eine Kombination eindeutiger Bezeichner sein kann.

Wenn Sie zum Beispiel der Autovermietungsdatenbank zurückkehren, werden Sie feststellen, dass das Erstellen eines neuen Datensatzes (desselben Autos) jedes Mal, wenn ein Kunde dieses Auto mietet, den Zweck der Tabelle " Autos" zunichte macht. Wenn die Autos zum Verkauf stehen und einmal an einen einzelnen Kunden verkauft werden, ist die vorhandene Datenbank perfekt. Da es sich bei den Autos jedoch um Mietwagen handelt, gibt es eine bessere Möglichkeit, diese Daten darzustellen.

Zusammengesetzte Schlüssel

Ein zusammengesetzter Schlüssel hat zwei oder mehr eindeutige Bezeichner. In einer relationalen Datenbank gibt es Fälle, in denen die Verwendung eines einzelnen Fremdschlüssels die in dieser Datenbank vorhandenen Beziehungen nicht ausreichend darstellt.

Im Beispiel für eine Autovermietung besteht der praktischste Ansatz darin, eine neue Tabelle zu erstellen, in der die Mietdetails gespeichert sind. Damit die Informationen in der Autovermietungstabelle nützlich sind, muss sie sowohl mit der Auto- als auch mit der Kundentabelle verbunden sein.

Erstellen einer Tabelle mit zusammengesetzten Fremdschlüsseln

 /* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

Der obige Code zeigt einen wichtigen Punkt. Obwohl eine Tabelle in einer SQL-Datenbank mehr als einen Fremdschlüssel haben kann, kann sie nur einen einzigen Primärschlüssel haben. Dies liegt daran, dass es nur eine eindeutige Möglichkeit geben sollte, einen Datensatz zu identifizieren.

Es ist erforderlich, alle drei Attribute in der Tabelle zu kombinieren, um einen eindeutigen Schlüssel zu erhalten. Ein Kunde kann mehr als ein Auto am selben Tag mieten ( CustomerID und DateRented sind also keine gute Kombination). Mehr als ein Kunde kann dasselbe Auto auch am selben Tag mieten ( LicenseNumber und DateRented sind also keine gute Kombination). .

Die Erstellung eines zusammengesetzten Schlüssels, der angibt, welcher Kunde, welches Auto und an welchem ​​Tag, ist jedoch ein hervorragender eindeutiger Schlüssel. Dieser eindeutige Schlüssel repräsentiert sowohl einen zusammengesetzten Fremdschlüssel als auch einen zusammengesetzten Primärschlüssel.

Ausländische Primärschlüssel

Oh ja, fremde Primärschlüssel werden beendet. Obwohl es keinen offiziellen Namen dafür gibt, kann ein Fremdschlüssel auch ein Primärschlüssel in derselben Tabelle sein. Dies geschieht, wenn Sie eine neue Tabelle erstellen, die spezielle Daten zu einer vorhandenen Entität enthält (oder in einer anderen Tabelle aufzeichnet).

Angenommen, Fred (der bei der Autovermietung arbeitet) befindet sich in der Datenbank des Unternehmens unter der Mitarbeitertabelle. Nach einigen Jahren wird er Supervisor und wird in die Supervisor-Tabelle aufgenommen.

Fred ist immer noch ein Angestellter und wird immer noch die gleiche ID-Nummer haben. Die Mitarbeiter-ID von Fred befindet sich jetzt in der Supervisor-Tabelle als Fremdschlüssel, der auch als Primärschlüssel in dieser Tabelle verwendet wird (da es keinen Sinn macht, eine neue ID-Nummer für Fred zu erstellen, da er Supervisor ist).

Jetzt können Sie Fremdschlüssel in SQL-Datenbanken identifizieren

Fremdschlüssel verbinden verschiedene Tabellen innerhalb einer SQL-Datenbank. In diesem Artikel können Sie sehen, was ein Fremdschlüssel ist, wie er funktioniert und warum es wichtig ist, ihn in einer Datenbank zu haben. Sie verstehen auch die grundlegenden und noch komplexeren Formen von Fremdschlüsseln.

Wenn Sie der Meinung sind, dass Fremdschlüssel interessant sind, haben Sie einen Feldtag, an dem Sie die Projekt- und Auswahloperationen zum Abfragen Ihrer SQL-Datenbanken verwenden.