Was sind Fremdschlüssel in SQL-Datenbanken?

Was sind Fremdschlüssel in SQL-Datenbanken?

Fremdschlüssel ermöglichen es Datenbankadministratoren, die verschiedenen Verbindungen, die in einem SQL-Datenbankverwaltungssystem vorhanden sind, leicht zu identifizieren.





SQL führt mathematische Operationen an Daten innerhalb eines Datenbankverwaltungssystems durch. Diese Datenbanken enthalten verschiedene Tabellen, die jeweils Daten zu einer bestimmten Entität speichern. Wenn Sie über eine Autovermietungsdatenbank verfügen, handelt es sich bei einer Entität (oder Tabelle) in dieser Datenbank um Kunden (in der alle personenbezogenen Daten zu jedem Kunden gespeichert werden).





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 die Bedingung lautet, dass jeder Datensatz in einer Tabelle unterschiedlich sein sollte, ist dies nicht immer der Fall. Um mit dem Beispiel einer Autovermietungsdatenbank fortzufahren: Wenn die Datenbank zwei Kunden enthält, die jeweils den Namen John Brown haben, könnte erwartet werden, dass ein John Brown einen Mercedes-Benz zurückgibt, den er nicht gemietet hat.



Das Erstellen eines Primärschlüssels verringert dieses Risiko. In einem SQL-Datenbankverwaltungssystem ist ein Primärschlüssel ein eindeutiger Bezeichner, der einen Datensatz von einem anderen unterscheidet.

Was tun, wenn Sie ein iPhone finden?

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 diese beim Erstellen einer neuen Tabelle einfach als normales Attribut hinzufügen. Die Kundentabelle enthält also vier Attribute (oder Spalten):

  • CarOwnerID (die den Primärschlüssel speichert)
  • Vorname
  • Nachname
  • Telefonnummer

Verwandt: So erstellen Sie eine Tabelle in SQL





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

Beispiel für einen Datensatz mit einem Primärschlüssel

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

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

Der Fremdschlüssel

Jetzt haben Sie Primärschlüssel, die einen Automieter eindeutig von einem anderen unterscheiden. Das einzige Problem ist, dass in der Datenbank keine wirkliche Verbindung zwischen jedem John Brown und dem von ihm gemieteten Auto besteht.

Daher besteht immer noch 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 Eigentumsmehrdeutigkeit ist nur erreichbar, wenn der Primärschlüssel auch als Fremdschlüssel dient.

Was ist ein Fremdschlüssel?

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

Von den vier existierenden SQL-Datenbankverwaltungssystemen ist das relationale Datenbankverwaltungssystem das beliebteste. Bei der Entscheidung, welche Tabelle in einer relationalen Datenbank einen Fremdschlüssel haben soll, sollten Sie zunächst ermitteln, welche Tabelle das Subjekt und welche das Objekt in ihrer Beziehung ist.

Um zur Autovermietungsdatenbank zurückzukehren, müssen Sie verstehen, dass ein Kunde (das Subjekt) ein Auto (das Objekt) mietet, um jeden Kunden mit dem richtigen Auto zu verbinden. Daher sollte sich der Fremdschlüssel in der Tabelle cars 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üssel-Beispiel

/* 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 einer Referenz auf den Primärschlüssel, der mit der neuen Tabelle verbunden wird.

Netflix wie man Untertitel ausschaltet

Verwandt: Der Spickzettel für grundlegende SQL-Befehle 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 ursprünglichen Tabelle übereinstimmt.

Hinzufügen eines Datensatzes mit einem Fremdschlüssel-Beispiel

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

Der obige Code erstellt einen neuen Datensatz im neuen Autos Tabelle mit folgendem Ergebnis.

Autos Tabelle

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

Erweiterte Fremdschlüssel

Es gibt zwei andere 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 aus eindeutigen Bezeichnern sein kann.

Wenn Sie zum Beispiel der Autovermietungsdatenbank zurückkehren, werden Sie feststellen, dass das Erstellen eines neuen Datensatzes (des gleichen Autos) jedes Mal, wenn ein Kunde dieses Auto mietet, den Zweck des Autos Tisch. Wenn die Autos zum Verkauf stehen und einmal an einen einzigen Kunden verkauft werden, ist die vorhandene Datenbank perfekt; Aber da es sich bei den Autos 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 einer 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, müssen 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 notwendig, alle drei Attribute in der Tabelle zu kombinieren, um einen eindeutigen Schlüssel zu erhalten. Ein Kunde kann am selben Tag mehr als ein Auto mieten (so Kundennummer und DatumVermietet ist keine gute Kombination) können auch mehrere Kunden am selben Tag dasselbe Auto mieten (also Lizenznummer und DatumVermietet ist keine gute Kombination).

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

integrierte/On-Board-Grafik

Fremde Primärschlüssel

Oh ja, ausländische 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 spezialisierte Daten zu einer vorhandenen Entität (oder einen Datensatz in einer anderen Tabelle) enthält.

Sagen wir, Fred (der bei der Autovermietung arbeitet) ist 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 dieselbe ID-Nummer haben. Die Mitarbeiter-ID von Fred befindet sich jetzt als Fremdschlüssel in der Vorgesetztentabelle, der auch in dieser Tabelle zum Primärschlüssel wird (da es keinen Sinn macht, für Fred jetzt, da er Vorgesetzter ist, eine neue ID-Nummer zu erstellen).

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

Fremdschlüssel verbinden verschiedene Tabellen innerhalb einer SQL-Datenbank. In diesem Artikel erfahren Sie, 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, werden Sie einen großen Tag haben, wenn Sie die Projekt- und Auswahloperationen verwenden, um Ihre SQL-Datenbanken abzufragen.

Teilen Teilen Tweet Email Erfahren Sie, wie Sie die Projekt- und Auswahloperationen in SQL verwenden

Machen Sie sich mit relationalen SQL-Datenbanken vertraut, indem Sie die Project- und Selection-Operationen anhand dieser Beispiele verstehen.

Weiter lesen
Verwandte Themen
  • Programmierung
  • Programmierung
  • SQL
  • Datenbank
Über den Autor Kadeisha Kean(21 Artikel veröffentlicht)

Kadeisha Kean ist Full-Stack-Softwareentwicklerin und Technik- und Technologieautorin. Sie hat die ausgeprägte Fähigkeit, einige der komplexesten technologischen Konzepte zu vereinfachen; Herstellung von Material, das von jedem Technikneuling leicht verstanden werden kann. Sie schreibt leidenschaftlich gerne, entwickelt interessante Software und bereist die Welt (durch Dokumentationen).

Mehr von Kadeisha Kean

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um zu abonnieren