Skip to main content

Eins-zu-Viele-Beziehungen in einer Datenbank

Datenbank-Grundlagen Tutorial: Eins-zu-viele-Beziehung video2brain.com (Kann 2024)

Datenbank-Grundlagen Tutorial: Eins-zu-viele-Beziehung video2brain.com (Kann 2024)
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 aufweist. Eine Eins-zu-Viele-Beziehung in Eine Datenbank ist das gebräuchlichste relationale Datenbankdesign und ist das Herzstück eines guten Designs.

Betrachten Sie die Beziehung zwischen einem Lehrer und den Kursen, die er unterrichtet. Ein Lehrer kann mehrere Kurse unterrichten, aber der Kurs hat nicht die gleiche Beziehung zum Lehrer.

Daher können für jeden Datensatz in einer Teachers-Tabelle viele Datensätze in der Kurstabelle vorhanden sein. Dies ist eine Eins-zu-Viele-Beziehung: ein Lehrer zu mehreren Kursen.

Warum ist es wichtig, eine Eins-zu-Viele-Beziehung aufzubauen?

Um eine Eins-zu-Viele-Beziehung darzustellen, benötigen Sie mindestens zwei Tabellen. Mal sehen warum.

Vielleicht haben wir eine Tabelle erstellt, in der wir den Namen und die Kurse unterzeichnen wollten. Wir könnten es so gestalten:

Lehrer und Kurse
Lehrer_IDDer Name des LehrersKurs
Lehrer_001CarmenBiologie
Lehrer_002VeronicaMathematik
Lehrer_003JorgeEnglisch

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

Lehrer und Kurse
Lehrer_IDLehrer_NameKurs
Lehrer_001CarmenBiologie, Mathe
Lehrer_002VeronicaMathematik
Lehrer_003JorgeEnglisch

Das obige Design ist jedoch unflexibel und kann später zu Problemen beim Einfügen, Bearbeiten oder Löschen von Daten führen.

Es ist schwierig, nach Daten zu suchen. Dieser Entwurf verstößt gegen das erste Prinzip der Datenbank-Normalisierung, First Normal Form (1NF), das besagt, dass jede Tabellenzelle ein einzelnes, diskretes Datenelement enthalten sollte.

Eine andere Design-Alternative könnte darin bestehen, einfach einen zweiten Datensatz für Carmen hinzuzufügen:

Lehrer und Kurse
Lehrer_ICH WÜRDELehrer_NameKurs
Lehrer_001CarmenBiologie
Lehrer_001CarmenMathematik
Lehrer_002VeronicaMathematik
Lehrer_003JorgeEnglisch

Dies entspricht 1NF, ist aber immer noch ein schlechtes Datenbankdesign, da es Redundanz einführt und eine sehr große Datenbank unnötig aufblähen kann. Noch wichtiger ist, dass die Daten inkonsistent werden können. Was wäre zum Beispiel, wenn sich Carmens Name änderte? Jemand, der mit den Daten arbeitet, aktualisiert möglicherweise ihren Namen in einem Datensatz und kann diesen im zweiten Datensatz nicht aktualisieren. Dieser Entwurf verstößt gegen die zweite Normalform (2NF), die sich an 1NF hält und außerdem die Redundanzen mehrerer Datensätze vermeiden muss, indem Teilmengen von Daten in mehrere Tabellen aufgeteilt werden und eine Beziehung zwischen ihnen erstellt wird.

So erstellen Sie eine Datenbank mit Eins-zu-Viele-Beziehungen

Um eine Eins-zu-Viele-Beziehung in der Tabelle für Lehrer und Kurse zu implementieren, teilen wir die Tabellen in zwei Teile und verknüpfen sie mit einem Fremdschlüssel.

Hier haben wir die Spalte "Kurs" in der Tabelle "Lehrer" entfernt:

Lehrer
Lehrer_ICH WÜRDELehrer_Name
Lehrer_001Carmen
Lehrer_002Veronica
Lehrer_003Jorge

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

Kurse
Kurs-IDKursnameLehrer_ID
Kurs_001BiologieLehrer_001
Kurs_002MathematikLehrer_001
Kurs_003EnglischLehrer_003

Wir haben eine Beziehung zwischen den Lehrern und der Kurstabelle unter Verwendung eines Fremdschlüssels entwickelt.

Dies sagt uns, dass sowohl Biologie als auch Mathematik von Carmen unterrichtet werden und dass Jorge Englisch unterrichtet.

Wir können sehen, wie dieses Design mögliche Redundanzen vermeidet, dass einzelne Lehrer mehrere Kurse unterrichten können und eine Eins-zu-Viele-Beziehung eingehen.

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