Was ist eine Datenbankbeziehung?

Inhaltsverzeichnis:

Was ist eine Datenbankbeziehung?
Was ist eine Datenbankbeziehung?
Anonim

Eine Beziehung zwischen zwei Datenbanktabellen entsteht, wenn eine Tabelle einen Fremdschlüssel verwendet, der auf den Primärschlüssel einer anderen Tabelle verweist. 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 Kandidatenschlüssel, der normalerweise die erste Sp alte in einer Tabelle ist und automatisch von der Datenbank generiert werden kann, um sicherzustellen, dass er 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, die angeben, 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 Mathe 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 Teacher_Name
Lehrer_001 Carmen
Lehrer_002 Veronika
Lehrer_003 Jorge

Wir können sagen, dass der Teacher_ID-Fremdschlüssel dazu beigetragen hat, eine Beziehung zwischen den Courses- und den Teachers-Tabellen herzustellen.

Image
Image

Arten von Datenbankbeziehungen

Mit Hilfe von Fremdschlüsseln oder anderen Kandidatenschlüsseln können Sie drei Arten von Beziehungen zwischen Tabellen implementieren:

Einzelgespräch

Diese Art von Beziehung erlaubt nur einen Datensatz auf jeder Seite der Beziehung. Der Primärschlüssel bezieht sich nur auf einen Datensatz (oder keinen) in einer anderen Tabelle. Beispielsweise hat in einer Ehe jeder Ehegatte nur einen anderen Ehepartner. Diese Art von Beziehung kann in einer einzigen Tabelle implementiert werden und verwendet daher keinen Fremdschlüssel.

Eins-zu-Vielen

Eine Eins-zu-Viele-Beziehung ermöglicht es, einen einzelnen Datensatz in einer Tabelle mit mehreren Datensätzen in einer anderen Tabelle zu verknüpfen. Betrachten Sie ein Unternehmen mit einer Datenbank, die Kunden- und Auftragstabellen enthält.

Ein einzelner Kunde kann mehrere Bestellungen tätigen, aber eine einzelne Bestellung kann nicht mit mehreren Kunden verknüpft werden. Daher würde die Orders-Tabelle einen Fremdschlüssel enth alten, der mit dem Primärschlüssel der Customers-Tabelle übereinstimmt, während die Customers-Tabelle keinen Fremdschlüssel hätte, der auf die Orders-Tabelle zeigt.

Many-to-Many

Dies ist eine komplexe Beziehung, in der viele Datensätze in einer Tabelle mit vielen Datensätzen in einer anderen Tabelle verknüpft sein können. Zum Beispiel benötigt unser Unternehmen wahrscheinlich Kunden- und Auftragstabellen und wahrscheinlich auch eine Produkttabelle.

Auch hier gilt: Die Beziehung zwischen der Tabelle „Kunden“und „Bestellungen“ist eine Eins-zu-Viele-Beziehung, aber betrachten Sie die Beziehung zwischen der Tabelle „Bestellungen“und „Produkte“. Eine Bestellung kann mehrere Produkte enth alten, und ein Produkt könnte 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 Herstellen konsistenter Beziehungen zwischen Datenbanktabellen hilft, die Datenintegrität zu gewährleisten und trägt zur Normalisierung der Datenbank bei. Was wäre zum Beispiel, wenn wir keine Tabellen über einen Fremdschlüssel verknüpfen und stattdessen die Daten in den Tabellen Courses und Teachers wie folgt kombinieren würden:

Lehrer_ID Teacher_Name Kurs
Lehrer_001 Carmen Biologie, Mathematik
Lehrer_002 Veronika Mathe
Lehrer_003 Jorge Englisch

Dieses Design ist unflexibel und verstößt gegen das erste Prinzip der Datenbanknormalisierung, die Erste Normalform, die besagt, dass jede Tabellenzelle ein einzelnes, diskretes Datenelement enth alten sollte.

Oder vielleicht haben wir uns entschieden, einen zweiten Datensatz für Carmen hinzuzufügen, um 1NF durchzusetzen:

Lehrer_ID Teacher_Name Kurs
Lehrer_001 Carmen Biologie
Lehrer_001 Carmen Mathe
Lehrer_002 Veronika Mathe
Lehrer_003 Jorge Englisch

Dies ist immer noch ein schwaches Design, das unnötige Duplizierung und sogenannte Dateneinfügeanomalien einführt, was bedeutet, dass es zu inkonsistenten Daten beitragen könnte. Wenn beispielsweise ein Lehrer mehrere Datensätze hat, was ist, wenn einige Daten bearbeitet werden müssen, aber die Person, die die Datenbearbeitung durchführt, nicht erkennt, dass mehrere Datensätze vorhanden sind? Die Tabelle würde dann unterschiedliche Daten für dieselbe Person enth alten, ohne dass es eine eindeutige Möglichkeit gibt, sie zu identifizieren oder zu vermeiden.

Die Aufteilung dieser Tabelle in zwei Tabellen, Lehrer und Kurse, stellt die richtige Beziehung zwischen den Daten her und trägt somit dazu bei, Datenkonsistenz und -genauigkeit sicherzustellen.

Empfohlen: