Eins-zu-Viele-Beziehungen in einer Datenbank

Inhaltsverzeichnis:

Eins-zu-Viele-Beziehungen in einer Datenbank
Eins-zu-Viele-Beziehungen in einer Datenbank
Anonim

Eine Eins-zu-Viele-Beziehung in einer Datenbank tritt auf, wenn jeder Datensatz in Tabelle A viele verknüpfte Datensätze in Tabelle B haben kann, aber jeder Datensatz in Tabelle B möglicherweise nur einen entsprechenden Datensatz in Tabelle A hat.

Eine Eins-zu-Viele-Beziehung in einer Datenbank ist das häufigste relationale Datenbankdesign und das Herzstück eines guten Designs.

Datenbanken können auch eine Eins-zu-Eins-Beziehung und eine Viele-zu-Viele-Beziehung implementieren.

Image
Image

Beispiel einer 1:n-Beziehung

Betrachte die Beziehung zwischen einem Lehrer und den Kursen, die er unterrichtet. Ein Lehrer kann mehrere Klassen unterrichten, aber der Kurs würde nicht die gleiche Beziehung zum Lehrer haben.

Daher kann es für jeden Datensatz in einer Teachers-Tabelle viele Datensätze in der Courses-Tabelle geben. Dieses Beispiel veranschaulicht eine Eins-zu-Viele-Beziehung: ein Lehrer zu mehreren Kursen.

Warum der Aufbau einer Eins-zu-Vielen-Beziehung wichtig ist

Um eine 1:n-Beziehung darzustellen, benötigen Sie mindestens zwei Tabellen. Mal sehen warum.

Einh altung des ersten Normalform-Designs

Vielleicht haben wir eine Tabelle erstellt, in der wir den Namen und die unterrichteten Kurse festh alten wollen. Wir könnten eine Lehrer- und Kurstabelle wie folgt entwerfen:

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

Was ist, wenn Carmen zwei oder mehr Kurse unterrichtet? Wir haben zwei Möglichkeiten mit diesem Design. Wir könnten es wie folgt zu Carmens bestehendem Datensatz hinzufügen:

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

Das obige Design ist jedoch unflexibel und könnte später beim Einfügen, Bearbeiten oder Löschen von Daten zu Problemen führen. Es erschwert die Suche nach Daten.

Dieses Design verstößt auch gegen das erste Prinzip der Datenbanknormalisierung, First Normal Form (1NF), das besagt, dass jede Tabellenzelle ein einzelnes, diskretes Datenelement enth alten sollte.

Die zweite Normalformregel

Eine weitere Design alternative könnte darin bestehen, einen zweiten Datensatz für Carmen hinzuzufügen:

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

Dieser Ansatz hält sich an 1NF, ist aber immer noch ein schlechtes Datenbankdesign, da er Redundanz einführt und eine große Datenbank unnötig aufblähen könnte. Noch wichtiger ist, dass die Daten inkonsistent werden könnten.

Zum Beispiel, was wäre, wenn sich Carmens Name ändern würde? Jemand, der mit den Daten arbeitet, könnte ihren Namen in einem Datensatz aktualisieren und ihn im zweiten Datensatz nicht aktualisieren.

Dieses Design verstößt gegen den Second Normal Form (2NF)-Standard, der sich an 1NF hält und auch die Redundanz mehrerer Datensätze vermeiden muss. Die 2NF-Regel erreicht dies, indem Teilmengen von Daten in mehrere Tabellen aufgeteilt und eine Beziehung zwischen ihnen hergestellt wird.

So entwerfen Sie eine Datenbank mit 1:n-Beziehungen

Um eine Eins-zu-Viele-Beziehung in den Tabellen „Lehrer“und „Kurse“zu implementieren, teilen Sie die Tabellen in zwei Teile und verknüpfen Sie sie mit einem Fremdschlüssel.

Hier haben wir die Sp alte Kurs in der Lehrertabelle entfernt:

Lehrer_ID Lehrer_Name
Lehrer_001 Carmen
Lehrer_002 Veronika
Lehrer_003 Jorge

Und hier ist die Kurstabelle. Beachten Sie, dass sein Fremdschlüssel Teacher_ID einen Kurs mit einem Lehrer in der Teachers-Tabelle verknüpft:

Kurs_ID Kursname Lehrer_ID
Kurs_001 Biologie Lehrer_001
Kurs_002 Mathe Lehrer_001
Kurs_003 Englisch Lehrer_003

Wir haben mithilfe eines Fremdschlüssels eine Beziehung zwischen der Teachers- und der Courses-Tabelle entwickelt. Diese Anordnung sagt uns, dass Carmen sowohl Biologie als auch Mathematik unterrichtet und dass Jorge Englisch unterrichtet.

Wir können sehen, wie dieses Design mögliche Redundanzen vermeidet, es einzelnen Lehrern ermöglicht, mehrere Kurse zu unterrichten, und eine Eins-zu-Viele-Beziehung implementiert.

Empfohlen: