Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Grundlagen der Programmierung: Datenbanken

Viele-zu-viele-Beziehung

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Eine neue Tabelle muss für die Erstellung einer Viele-zu-viele-Beziehung angelegt werden. Diese beinhaltet ausschließlich die Felder, welche für die benötigten Querverweise erforderlich sind.

Transkript

Es lohnt sich, das weiter vorn gezeigte Bespiel einer Viele-zu-viele-Beziehung noch einmal durchzugehen, insbesondere wenn Sie Einsteiger im Datenbankdesign sind. Ich hatte ja das Beispiel mit Autoren und Büchern verwendet, wobei ein Autor mehrere Bücher schreiben kann, aber auch ein Buch von mehreren Autoren verfasst sein kann. Das ist also eine Viele-zu-viele-Beziehung. In beschreibe nun ein anderes Geschäftsproblem, in diesem Fall eine Datenbank für Trainingscenter. Nehmen wir fürs Erste zwei Tabellen an: "Class" für die Klassen und Kurse und "Student" für die Trainingsteilnehmenden. Class umfasst die Angaben wie Titel eines Trainingskurses, an welchem Datum er stattfindet, in welchem Schulungsraum usw. Und bei Student gibt es genau die Informationen, die man sich vorstellt, nämlich Vorname, Nachname, E-Mail-Adresse und dergleichen mehr. Was ich beschreiben möchte, ist eine Beziehung zwischen ihnen; dass eine Klasse, also ein Kurs, von mehreren Studenten besucht werden kann, das ist klar, dass aber auch umgekehrt ein Student, ein Kursteilnehmer, mehrere Klassen oder Kurse belegen kann. Es ist also eine Viele-zu-viele-Beziehung. Und ich kann nicht eine Spalte zu der einen Tabelle hinzufügen, die erfolgreich alle möglichen Kombinationen darstellen kann. Denn wenn ich eine "StudentID"-Spalte in die Class-Tabelle einfüge, dann kann ich nur einen einzigen Studenten in jeder Klasse unterbringen. Mit einer ClassID-Spalte in der Student-Tabelle kann ich sagen, dass jeder Student nur eine Klasse belegen kann. Auch das möchte ich eigentlich nicht. Somit haben wir wieder den Fall, dass man in einer relationalen Datenbank keine Viele-zu-viele-Beziehung darstellen kann. Man muss eine neue Tabelle anlegen, um die beiden anderen miteinander zu verknüpfen. Per Konvention setzt sich der Name dieser Tabelle aus den Namen der beiden Tabellen zusammen, für die die Querverweise erforderlich sind. In diesem Fall würde man also "ClassStudent" oder "StudentClass" wählen, beides geht, wie Sie möchten. Und es gibt eine Eins-zu-viele-Beziehung von Class zur ClassStudent-Tabelle und eine andere Eins-zu-viele-Beziehung von der Student-Tabelle zur ClassStudent-Tabelle. Diese Verknüpfungstabelle enthält keine anderen Daten als nur zwei Spalten. Eine dieser Spalten ist ein Fremdschlüssel zur Class-Tabelle mit der ClassID, die andere ist ein Fremdschlüssel zu Student mit StudentID. Die andere ist ein Fremdschlüssel zu Student mit StudentID. Und das ist die Art und Weise, wie wir eine Viele-zu-viele-Beziehung darstellen. Wenn ich also für StudentID 102, Viola in diesem Fall, sagen möchte, dass Sie an mehreren Klassen teilnimmt, dann brauche ich mehrere Zeilen in dieser Verknüpfungstabelle, die alle auf die StudentID 102, aber auch auf verschiedene ClassIDs verweisen; in dem Beispiel die 441 und die 442. Ein Student mit mehreren Klassen. Sie fragen sich jetzt vielleicht, warum man das so macht, das ist ja ziemlich umständlich, wenn man lediglich eine einzige Eins-zu-viele-Beziehung hat. Das ist richtig, aber es ist der einzige Weg, wie wir diese Art von Kardinalitäten darstellen können. Nun stellt sich die Frage, was ist der Primärschlüssel für die ClassStudent-Verknüpfungstabelle? Müssen wir eine neue Spalte hinzufügen? Das könnten wir zwar machen, einen Primärschlüssel mit automatischer Inkrementierung einbauen, doch es ist ziemlich unwahrscheinlich, dass wir ihn jemals brauchen können. Also können wir es auch bleiben lassen. Es sollte immer nur eine einzige Zeile mit einer bestimmten ClassID und einer bestimmten StudentID geben. Die ClassID kann sich wiederholen, die StudentID kann sich wiederholen, doch beide zusammen, das geht eben nicht, die können sich nicht gemeinsam wiederholen. Das genügt eigentlich schon, um jede Zeile eindeutig zu kennzeichnen. Nun gibt es noch etwas. Zuerst möchte ich daran erinnern, dass man recht oft von einer typischen Eins-zu-viele-Beziehung ausgeht und erst später erkennt, dass es sich ja eigentlich um eine verkappte Viele-zu-viele-Beziehung handelt. Ein Grund hierfür ist, dass die Beziehung in einer Viele-zu-viele-Version nicht immer gleichmäßig gewichtet ist. Nehmen wir an, dass in unserer Organisation eine Abteilung über mehrere Mitarbeiter verfügt, die jeweils nur für eine einzige Abteilung arbeiten. Das wäre eine Eins-zu-viele-Beziehung. Dies lässt sich leicht zeigen und auch leicht darstellen, klar. Man lässt jede Mitarbeiterzeile irgendwie auf eine Department-ID verweisen und ist fertig. Doch wenn es den einen einzigen Mitarbeiter gibt, der für mehrere Abteilungen zuständig ist und Sie dies in Ihrem System irgendwie darstellen müssen, dann funktioniert das Ganze einfach nicht mehr. Das ist jetzt eine Viele-zu-viele-Beziehung, obwohl es nur um einen einzigen Mitarbeiter geht und Sie brauchen, um das darstellen zu können, eine neue Verknüpfungstabelle in Ihrer Datenbank.

Grundlagen der Programmierung: Datenbanken

Fangen Sie ganz von vorne an und erfahren Sie alles über die Grundlagen zu Datenbanken und deren Einsatzzwecke, um danach eigene Lösungen und Anwendungen zu entwickeln.

3 Std. 6 min (39 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!