Wie werden Beziehungen und Kardinalitäten in Datenbanken klassifiziert?
Kardinalitäten: Geschäftsregeln im Datenmodell
In der Datenmodellierung definieren Kardinalitäten die genauen Mengenangaben einer Beziehung zwischen zwei Entitäten. Sie übersetzen reale Geschäftsregeln in ein logisches Datenbankdesign. Wenn du ein Entity-Relationship-Diagramm (ERD) betrachtest, wie in der zugehörigen Grafik dargestellt, visualisieren diese Kardinalitäten, wie viele Datensätze einer Tabelle mit Datensätzen einer anderen Tabelle verknüpft sein dürfen.
In der Praxis begegnen dir meist zwei Notationen:
- Min-Max-Notation: Gibt die exakte Mindest- und Maximalbeteiligung an. Ein
(1, N)an der Entität "Bestellung" bedeutet: Eine Kundschaft muss mindestens eine und kann maximal N (viele) Bestellungen aufgeben. - Krähenfuß-Notation (Crow's Foot): Visualisiert die Beziehung durch Linienenden. Ein einfacher Strich steht für "Eins", ein aufgefächerter Krähenfuß für "Viele". Ein Kreis (O) symbolisiert eine optionale Beteiligung ("Null").
Die 1:1-Beziehung (Eins-zu-Eins)
Bei einer 1:1-Beziehung ist ein Datensatz aus Tabelle A mit exakt einem Datensatz aus Tabelle B verknüpft – und umgekehrt. Diese Beziehungsart wird in der Praxis oft genutzt, um sehr breite Tabellen aufzuteilen oder sensible Daten (wie Gehaltsinformationen) von allgemeinen Personaldaten zu trennen.
- Beispiel: Die Beziehung zwischen
MitarbeitendeundFirmenwagen(sofern ein Auto exklusiv einer Person gehört und jede Person maximal ein Auto hat). - Strukturelle Umsetzung: Du platzierst den Primärschlüssel der einen Tabelle als Fremdschlüssel in der anderen. Um die strikte 1:1-Bedingung zu erzwingen, musst du diesen Fremdschlüssel zwingend mit einem UNIQUE-Constraint versehen. So verhinderst du auf Datenbankebene, dass derselbe Firmenwagen zwei verschiedenen Mitarbeitenden zugewiesen wird.
Die 1:N-Beziehung (Eins-zu-Viele)
Die 1:N-Beziehung ist der absolute Standardfall in relationalen Datenbanken. Ein Datensatz auf der "Eins"-Seite kann mit beliebig vielen Datensätzen auf der "Viele"-Seite verknüpft sein. Ein Datensatz der "Viele"-Seite gehört aber immer zu exakt einem Datensatz der "Eins"-Seite.
- Beispiel:
AbteilungenundMitarbeitende. Eine Abteilung hat viele Mitarbeitende, aber eine mitarbeitende Person gehört zu genau einer Abteilung. - Strukturelle Umsetzung: Der Fremdschlüssel wird immer auf der "Viele"-Seite platziert. Die Tabelle
Mitarbeitendeerhält also eine SpalteAbteilungs_IDals Fremdschlüssel, die auf den Primärschlüssel der TabelleAbteilungenverweist. Ein UNIQUE-Constraint wäre hier falsch, da sich dieAbteilungs_IDbei den Mitarbeitenden wiederholen muss.
Die N:M-Beziehung (Viele-zu-Viele)
Bei einer N:M-Beziehung können viele Datensätze aus Tabelle A mit vielen Datensätzen aus Tabelle B in Verbindung stehen.
- Beispiel:
StudierendeundKurse. Eine studierende Person belegt mehrere Kurse, und ein Kurs wird von mehreren Studierenden besucht. - Strukturelle Umsetzung: Diese Beziehungsart lässt sich nicht direkt durch einen einfachen Fremdschlüssel in einer der beiden Tabellen abbilden. Würdest du die
Kurs_IDals Spalte bei den Studierenden eintragen, könnte jede Person nur einen einzigen Kurs belegen. Für die Umsetzung in einer relationalen Datenbank ist daher ein struktureller Zwischenschritt zwingend erforderlich.
Wie werden komplexe N:M-Beziehungen in der Praxis aufgelöst?
Die Notwendigkeit der Verknüpfungstabelle
Da relationale Datenbanken N:M-Beziehungen nicht nativ über einfache Fremdschlüssel in den Ursprungstabellen abbilden können, musst du diese Beziehung strukturell auflösen. Das geschieht durch die Einführung einer dritten Tabelle: der Verknüpfungstabelle (auch Assoziationstabelle oder Zwischentabelle genannt).
Diese Tabelle fungiert als Brücke, wie in der Grafik zur N:M-Auflösung visualisiert. Sie löst die komplexe N:M-Beziehung auf, indem sie diese in zwei separate 1:N-Beziehungen umwandelt. Die Ursprungstabellen stehen nun nicht mehr direkt miteinander in Verbindung, sondern jeweils in einer 1:N-Beziehung zur neuen Verknüpfungstabelle.
Aufbau und Implementierung der Verknüpfungstabelle
Um die Verknüpfungstabelle für das Beispiel Studierende und Kurse (nennen wir sie Einschreibungen) aufzubauen, nutzt du dein Wissen über referentielle Integrität:
- Fremdschlüssel importieren: Die Tabelle
Einschreibungenerhält zwei Fremdschlüssel-Spalten. Eine verweist auf den Primärschlüssel vonStudierende(z. B.Studierenden_ID), die andere auf den Primärschlüssel vonKurse(z. B.Kurs_ID). - Primärschlüssel definieren: Oft bilden diese beiden Fremdschlüssel zusammen einen zusammengesetzten Primärschlüssel für die Verknüpfungstabelle. Das stellt sicher, dass sich eine Person nicht doppelt für exakt denselben Kurs einschreiben kann.
- Beziehungsspezifische Attribute: Die Verknüpfungstabelle ist der perfekte Ort für Daten, die weder nur zur Person noch nur zum Kurs gehören, sondern nur für diese spezifische Kombination gültig sind. Typische Beispiele hierfür sind das
EinschreibeDatumoder die erreichteNote.
Teste dein Wissen
Du entwirfst als Datenbankentwickler:in ein neues ER-Modell für einen Onlineshop. Welchen primären Zweck erfüllen die Kardinalitäten in deinem Diagramm?