Was ist eine Datenbankbeziehung?
Eine Beziehung wird zwischen zwei Datenbanktabellen hergestellt, wenn eine Tabelle a. verwendet Unbekannter Schlüssel das verweist auf die Primärschlüssel eines anderen Tisches. Dies ist das Grundkonzept hinter dem Begriff relationale Datenbank.
Wie ein Fremdschlüssel funktioniert, um eine Beziehung aufzubauen
Ein Primärschlüssel identifiziert jeden Datensatz in der Tabelle eindeutig. Es ist eine Art von Kandidatenschlüssel Dies ist normalerweise die erste Spalte in einer Tabelle und kann automatisch von der Datenbank generiert werden, um sicherzustellen, dass sie eindeutig ist. Ein Fremdschlüssel ist ein weiterer Kandidatenschlüssel (nicht der Primärschlüssel), der verwendet wird, um einen Datensatz mit Daten in einer anderen Tabelle zu verknüpfen.
Betrachten Sie zum Beispiel diese beiden Tabellen, aus denen hervorgeht, welcher Lehrer welchen Kurs unterrichtet. Hier ist der Primärschlüssel der Courses-Tabelle Course_ID. Sein Fremdschlüssel ist Teacher_ID:
Kurs-ID | Kursname | Lehrer_ID |
---|---|---|
Kurs_001 | Biologie | Lehrer_001 |
Kurs_002 | Mathematik | Lehrer_002 |
Kurs_003 | Englisch | Lehrer_003 |
Sie können sehen, dass der Fremdschlüssel in Courses mit einem Primärschlüssel in Teachers übereinstimmt:
Lehrer_ID | Name des Lehrers |
---|---|
Lehrer_001 | Carmen |
Lehrer_002 | Veronika |
Lehrer_003 | Jorge |
Wir können sagen, dass der Fremdschlüssel Teacher_ID dazu beigetragen hat, eine Beziehung zwischen den Tabellen Courses und Teachers herzustellen.

Arten von Datenbankbeziehungen
Mithilfe von Fremdschlüsseln oder anderen Kandidatenschlüsseln können Sie drei Arten von Beziehungen zwischen Tabellen implementieren:
Eins zu eins
Dieser Beziehungstyp lässt nur einen Datensatz auf jeder Seite der Beziehung zu. Der Primärschlüssel bezieht sich nur auf einen Datensatz (oder keinen) in einer anderen Tabelle. In einer Ehe hat beispielsweise jeder Ehepartner nur einen anderen Ehepartner. Diese Art von Beziehung kann in einer einzigen Tabelle implementiert werden und verwendet daher keinen Fremdschlüssel.
Eins-zu-Viele
Eine 1:n-Beziehung ermöglicht es, einen einzelnen Datensatz in einer Tabelle mit mehreren Datensätzen in einer anderen Tabelle zu verknüpfen. Stellen Sie sich ein Unternehmen mit einer Datenbank vor, die über Tabellen für Kunden und Bestellungen verfügt.
Ein einzelner Kunde kann mehrere Bestellungen kaufen, aber eine einzelne Bestellung kann nicht mit mehreren Kunden verknüpft werden. Daher würde die Orders-Tabelle einen Fremdschlüssel enthalten, der mit dem Primärschlüssel der Customers-Tabelle übereinstimmt, während die Customers-Tabelle keinen Fremdschlüssel hat, der auf die Orders-Tabelle zeigt.
Viel zu viel
Dies ist eine komplexe Beziehung, bei der viele Datensätze in einer Tabelle mit vielen Datensätzen in einer anderen Tabelle verknüpft werden können. Unser Unternehmen benötigt beispielsweise wahrscheinlich die Tabellen Customers und Orders und wahrscheinlich auch eine Products-Tabelle.
Auch hier ist die Beziehung zwischen der Tabelle "Kunden" und "Bestellungen" eins-zu-viele, aber bedenken Sie die Beziehung zwischen der Tabelle "Bestellungen" und "Produkte". Eine Bestellung kann mehrere Produkte enthalten, und ein Produkt kann mit mehreren Bestellungen verknüpft sein, da mehrere Kunden möglicherweise eine Bestellung aufgeben, die einige der gleichen Produkte enthält. Diese Art von Beziehung erfordert mindestens drei Tabellen.
Warum sind Datenbankbeziehungen wichtig?
Das Einrichten konsistenter Beziehungen zwischen Datenbanktabellen trägt zur Sicherstellung der Datenintegrität bei und trägt zur Normalisierung der Datenbank bei. Was wäre beispielsweise, wenn wir keine Tabellen über einen Fremdschlüssel verknüpfen und stattdessen die Daten in den Tabellen "Kurse" und "Lehrer" wie folgt kombinieren:
Lehrer_ID | Name des Lehrers | Kurs |
---|---|---|
Lehrer_001 | Carmen | Biologie, Mathematik |
Lehrer_002 | Veronika | Mathematik |
Lehrer_003 | Jorge | Englisch |
Dieses Design ist unflexibel und verletzt das erste Prinzip der Datenbanknormalisierung, First Normal Form, das besagt, dass jede Tabellenzelle ein einzelnes, diskretes Datenelement enthalten sollte.
Oder vielleicht haben wir uns entschieden, einen zweiten Rekord für Carmen hinzuzufügen, um 1NF durchzusetzen:
Lehrer_ID | Name des Lehrers | Kurs |
---|---|---|
Lehrer_001 | Carmen | Biologie |
Lehrer_001 | Carmen | Mathematik |
Lehrer_002 | Veronika | Mathematik |
Lehrer_003 | Jorge | Englisch |
Dies ist immer noch ein schwaches Design, das unnötige Duplizierungen und sogenannte Dateneinfügungsanomalien einführt, was bedeutet, dass es zu inkonsistenten Daten beitragen könnte. Wenn ein Lehrer beispielsweise über mehrere Datensätze verfügt, was ist, wenn einige Daten bearbeitet werden müssen, die Person, die die Datenbearbeitung durchführt, jedoch nicht erkennt, dass mehrere Datensätze vorhanden sind? Die Tabelle würde dann unterschiedliche Daten für dieselbe Person enthalten, ohne dass es eine eindeutige Möglichkeit gibt, sie zu identifizieren oder zu vermeiden.
Das Aufteilen dieser Tabelle in zwei Tabellen, Lehrer und Kurse, stellt die richtige Beziehung zwischen den Daten her und trägt somit dazu bei, die Datenkonsistenz und -genauigkeit sicherzustellen.