Kurs
In diesem Tutorial erkläre ich dir, was eine Eins-zu-Viele-Beziehung ist, wie du sie in der Datenbankgestaltung umsetzt und welche bewährten Verfahren du anwenden solltest, um deine Datenbanken skalierbar und effizient zu halten.
Wenn du als Datenbankingenieur anfängst, empfehle ich dir, unseren Kurs Einführung in relationale Datenbanken in SQL und Datenbankdesign zu machen, um zu lernen, wie du beim Definieren deines Datenbankschemas Beziehungen erstellst.
Was ist eine Eins-zu-Viele-Beziehung?
Eine Eins-zu-Viele-Beziehung (1:N) ist, wenn ein Eintrag in einer Tabelle mit mehreren Einträgen in einer anderen Tabelle verbunden werden kann. Einfach gesagt heißt das, dass etwas nur einmal da ist, aber mit vielen anderen Sachen verbunden sein kann.
Zum Beispiel kann ein einzelner Kunde mehrere Bestellungen aufgeben, aber jede Bestellung gehört nur zu einem Kunden.
Oft wirst du sehen, dass 1:n-Beziehungen mit diesen Begriffen beschrieben werden:
- Übergeordnete Tabelle: Eine Tabelle, die den Datensatz „one“ hat
- Kindertabelle: Eine Tabelle, die die „vielen“ Datensätze hat
In unserem Beispiel ist der Kundendatensatz in der übergeordneten Tabelle und die Bestellungen in der untergeordneten Tabelle.
Kardinalität in Eins-zu-Viele-Beziehungen verstehen
Die Kardinalität sagt dir, wie viele Datensätze zwischen zwei Tabellen verbunden werden können. Es beantwortet Fragen wie:
- Wie viele Bestellungen kann ein Kunde machen?
- Kann ein Kunde ohne Bestellungen existieren?
Eins-zu-Viele-Beziehungen sind asymmetrisch, was bedeutet, dass die Regeln für jede Tabelle unterschiedlich sind. In der übergeordneten Tabelle kann ein einzelner Datensatz mit vielen anderen Datensätzen verbunden sein, während in der untergeordneten Tabelle jeder Datensatz nur mit einem einzigen Datensatz verbunden sein kann.
Die Kardinalität hat auch minimale und maximale Grenzen, wobei:
- Mindestkardinalität: Die geringste Anzahl erlaubter verwandter Datensätze.
- Maximale Kardinalität: Die meisten passenden Datensätze erlaubt.
Ein Kunde kann zum Beispiel null oder viele Bestellungen haben, aber eine Bestellung muss genau zu einem Kunden gehören.
Diese Regeln beeinflussen das Design der Tabellen, indem sie festlegen, ob bestimmte Felder leer sein dürfen und wie streng die Datenbank Beziehungen durchsetzt.
Visualisierung von Eins-zu-Viele-Beziehungen mit ER-Diagrammen
Beim Datenbankdesign ist ein Entity-Relationship-Diagramm (ER-Diagramm) eine visuelle Methode, um Tabellen (Entitäten), ihre Verbindungen (Beziehungen) und die Anzahl der verknüpfbaren Datensätze (Kardinalität) darzustellen.
ER-Diagramm-Notation
Die meisten ER-Diagramme benutzen bestimmte Symbole an den Enden der Linien, die deine Tabellen verbinden, um dir genau zu zeigen, wie die Beziehung aussieht. Hier sind die gängigen visuellen Ideen für:
- Entitäten: Als Rechtecke gezeichnet, um Tabellen wie
CustomersoderOrdersdarzustellen. - Beziehungen: Als Linien dargestellt, die Entitäten verbinden, um zu zeigen, wie Entitäten miteinander in Beziehung stehen
- Kardinalitätssymbole: Die Zahl
1oder eine einzelne Linie steht für die eine Beziehung, während∞,*oder ein Krähenfuß die vielen Beziehungen zeigen.
Einfaches Beispiel für ein ER-Diagramm
Das folgende Beispiel zeigt die Beziehung zwischen der Tabelle „ Customers “ und der Tabelle „ Orders “. Die Eins-zu-Viele-Beziehung zeigt, dass ein Kunde mehrere Bestellungen haben kann, aber jede Bestellung gehört zu einem Kunden. Die Tabelle „ CustomerID ” ist in der Tabelle „ Orders ” verlinkt, um sie mit der Tabelle „ Customers ” zu verbinden.

Häufige Beispiele für Eins-zu-Viele-Beziehungen
Hier sind ein paar Beispiele für Eins-zu-Viele-Beziehungen, die dir vielleicht begegnen werden:
- Autor → Bücher: Ein Autor kann mehrere Bücher schreiben, aber jedes Buch hat nur einen Autor (in einem einfachen Design).
- Abteilung → Mitarbeiter: Eine Abteilung kann viele Leute haben, aber jeder gehört nur zu einer Abteilung.
- Kategorie → Produkte: Eine Kategorie kann viele Produkte haben, aber jedes Produkt gehört nur zu einer Kategorie.
Implementierung einer Eins-zu-Viele-Beziehung in einer relationalen Datenbank
Eins-zu-viele-Beziehungen werden mit Primärschlüsseln und Fremdschlüsseln gemacht. In diesem Abschnitt zeige ich dir, wie diese Einschränkungen dazu beitragen, die Datenintegrität in Datenbanken sicherzustellen.
Primär- und Fremdschlüssel
Der Primärschlüssel ist eine Spalte, die jede Zeile in einer Tabelle eindeutig identifiziert, während der Fremdschlüssel ein Feld oder eine Gruppe von Feldern in einer Tabelle ist, die auf den Primärschlüssel in einer anderen Tabelle verweist.
In einer Eins-zu-Viele-Beziehung hat die „Eins“-Seite einen Primärschlüssel, und die „Viele“-Tabelle speichert diesen Schlüssel als Fremdschlüssel. Der Fremdschlüssel verbindet dann die beiden Tabellen und stellt sicher, dass jeder Datensatz auf der „vielen“ Seite auf einen gültigen Datensatz auf der „einen“ Seite zeigt.
Einfaches SQL-Beispiel
Schauen wir uns anhand des folgenden Beispiels an, wie du in SQL eine Eins-zu-Viele-Beziehung aufbaust.
Du wirst die Tabelle „ Customers “ erstellen, in der „ CustomerID “ jeden Kunden eindeutig identifiziert. Das ist die übergeordnete Tabelle.
-- Create Customers table with CustomerID as primary key
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
CustomerName VARCHAR(100)
);
Jetzt erstelle die Tabelle „ Orders “, in der „ CustomerID “ ein Fremdschlüssel ist. In dieser Tabelle bezieht sich jede Bestellung auf genau einen Kunden und ist die untergeordnete Tabelle.
-- Create Orders table with CustomerID as a foreign key
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderDate DATE,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
Eins-zu-Viele vs. Viele-zu-Viele-Beziehungen
Für ein gutes Datenbankdesign ist es wichtig, den Unterschied zwischen Eins-zu-Viele-und Viele-zu-Viele-Beziehungen zu verstehen. Die Tabelle unten zeigt die Unterschiede:
|
Aspekt |
Eins-zu-Viele-Beziehung |
Viele-zu-Viele-Beziehung |
|
Definition |
Ein Eintrag in Tabelle A kann mit mehreren Einträgen in Tabelle B zusammenhängen. |
Die Datensätze in Tabelle A können mit vielen Datensätzen in Tabelle B zusammenhängen und umgekehrt. |
|
Beziehungsrichtung |
Eins → Viele (einseitig) |
Viele ↔ Viele (in beide Richtungen) |
|
Regel auf Tabelle B |
Jeder Eintrag in Tabelle B passt zu genau einem Eintrag in Tabelle A. |
Jeder Eintrag in Tabelle B kann mit mehreren Einträgen in Tabelle A zusammenhängen. |
|
Häufige Beispiele |
Kunde → Bestellabteilung → Mitarbeiter |
Studierende ↔ KurseProdukte ↔ Bestellungen |
|
Bedeutung in der Praxis |
Ein Kunde kann mehrere Bestellungen machen, aber jede Bestellung gehört zu einem Kunden. |
Ein Student kann sich für viele Kurse anmelden, und jeder Kurs kann viele Studenten haben. |
|
Umsetzung |
Einzelner Fremdschlüssel auf der vielen Seite |
Braucht eine Verknüpfungstabelle |
|
Fremdschlüssel-Speicherort |
Gespeichert in der Tabelle „many“ |
In der Verknüpfungstabelle gespeichert (zwei Fremdschlüssel) |
Es ist wichtig zu wissen, dass relationale Datenbanken viele-zu-viele-Beziehungen nicht direkt mit einem einzigen Fremdschlüssel speichern können. Stattdessen benutzen sie eine Verknüpfungstabelle (auch als Verbindungstabelle oder Brückentabelle bezeichnet).
Du kannst zum Beispiel Datensätze in der Tabelle „ Students “ sicher mit denen in der Tabelle „ Courses “ verbinden, indem du die Tabelle „ Enrollments “ als Verbindungstabelle benutzt. Die Verknüpfungstabelle teilt die Viele-zu-Viele-Beziehung in zwei Eins-zu-Viele-Beziehungen auf und speichert daher Fremdschlüssel für beide Tabellen. Dieses Design hilft bei der Datenbanknormalisierung. Normalisierungund hält alles effizient.
Ich empfehle dir, unseren Kurs „Joining Data in SQL” zu machen, um die verschiedenen Arten von Verknüpfungen in SQL kennenzulernen und zu lernen, wie man mit verschiedenen verwandten Tabellen in der Datenbank arbeitet.
Häufige Fehler bei Eins-zu-Viele-Beziehungen
Hier sind ein paar der häufigsten Probleme, die bei Eins-zu-Viele-Beziehungen auftreten können, und wie du sie lösen kannst:
- Den Fremdschlüssel in die falsche Tabelle setzen: Wenn du den Fremdschlüssel in der „One“-Tabelle statt in der „Many“-Tabelle speicherst, speicherst du am Ende mehrere Werte in einer Spalte oder wiederholst Spalten, was die Normalisierung beeinträchtigt und die Abfrage erschwert. Um das Problem zu lösen, solltest du den Fremdschlüssel immer auf der „many“-Seite der Beziehung platzieren.
- Verwechslung von „Eins-zu-Viele“ mit „Viele-zu-Viele“: Wenn du eine Beziehung als „Eins-zu-Viele“ modellierst, obwohl beide Seiten eigentlich mehrere zugehörige Datensätze haben können, kann das zu fehlenden Daten, doppelten Zeilen oder starren Designs führen, die nicht mit den Anforderungen mitwachsen können. Um das Problem zu lösen, solltest du immer checken, ob ein untergeordneter Datensatz mehrere Datensätze haben kann. Wenn ja, dann nimm eine Verknüpfungstabelle.
- Unbeabsichtigt verwaiste Datensätze zulassen: Wenn man Kinddatensätze ohne einen gültigen übergeordneten Datensatz zulässt, kann das zu inkonsistenten Daten führen, wie zum Beispiel Bestellungen ohne Kunden oder Mitarbeiter ohne Abteilung. Um das zu lösen, kannst du Fremdschlüsselbeschränkungen wie „ “ verwenden. ON DELETE CASCADE, damit die Datenbank automatisch gültige Beziehungen durchsetzt.
Tipps für die Gestaltung von Eins-zu-Viele-Beziehungen
Ich empfehle die folgenden bewährten Methoden als Leitfaden, um dir bei der Gestaltung effizienter und skalierbarer Eins-zu-Viele-Beziehungen zu helfen:
-
Benutze klare und einheitliche Namen: Gib Primärschlüsseln vorhersehbare Namen, wie zum Beispiel „
CustomerID“ und „OrderID“. Eine klare Benennung macht Beziehungen auch ohne Diagramme klar und ist super, wenn man Fremdschlüsselnamen mit dem referenzierten Primärschlüssel abgleicht. -
Fremdschlüsselbeschränkungen durchsetzen: Benutze Fremdschlüssel, damit die Datenbank die Datenintegrität schützt und ungültige oder verwaiste Datensätze verhindert, vor allem wenn deine Datenmenge wächst.
-
Denk frühzeitig über das Löschverhalten nach: Du kannst festlegen, was mit untergeordneten Datensätzen passieren soll, wenn ein übergeordneter Datensatz gelöscht wird, um versehentlichen Datenverlust oder fehlerhafte Verweise zu vermeiden. Zum Beispiel stellt „
CASCADE“ sicher, dass alle untergeordneten Datensätze gelöscht werden, wenn der übergeordnete Datensatz gelöscht wird. -
Halte die Designs einfach: Vermeide immer unnötige Tabellen oder komplizierte Beziehungen und halte dich bei deinem Design an das Modell, das du jetzt brauchst, nicht an hypothetische zukünftige Fälle. Denk dran, dass einfache Designs einfacher zu pflegen, zu erklären und zu erweitern sind.
Fazit
Eine Eins-zu-Viele-Beziehung zeigt, wie ein einzelner Datensatz in einer Tabelle mit mehreren Datensätzen in einer anderen Tabelle verbunden sein kann, wobei jeder dieser verbundenen Datensätze nur zu einem übergeordneten Datensatz gehört. Dieses Muster ist echt wichtig beim Entwerfen relationaler Datenbanken, weil es die Daten ordentlich organisiert und unnötige Duplikate vermeidet.
Ich empfehle unseren Associate Data Engineer in SQL, um einen Lernpfad zu durchlaufen, um zu lernen, wie man Datenbanken in SQL entwirft, um Daten effizient zu verarbeiten, zu speichern und zu organisieren. Wenn du deine Datenbankmanagement-Kenntnisse für Big Data verbessern möchtest, ist unser Einführung in die Datenmodellierung in Snowflake hilft dir bei der dimensionalen Modellierung.
Häufig gestellte Fragen
Was ist der Unterschied zwischen einer Eins-zu-Viele-Beziehung und einer Viele-zu-Viele-Beziehung?
Bei einer Eins-zu-Viele-Beziehung kann nur eine Seite mehrere zugehörige Datensätze haben; bei einer Viele-zu-Viele-Beziehung können das beide Seiten, was eine Verknüpfungstabelle braucht.
Welche Tabelle hat den Fremdschlüssel in einer Eins-zu-Viele-Beziehung?
Der Fremdschlüssel wird in der Tabelle auf der „vielen“ Seite der Beziehung gespeichert.
Kann eine Eins-zu-Viele-Beziehung ohne Fremdschlüssel funktionieren?
Theoretisch schon, aber in der Praxis sind Fremdschlüssel echt wichtig, um die Datenintegrität zu sichern und ungültige Datensätze zu vermeiden.
Wie finde ich raus, ob mein Datenmodell eins-zu-viele oder viele-zu-viele sein sollte?
Frag mal, ob beide Seiten mehrere zugehörige Datensätze haben können. Wenn ja, ist es eine Viele-zu-Viele-Beziehung; wenn nicht, ist es eine Eins-zu-Viele-Beziehung.
Was ist Kardinalität in Beziehungen?
Die Kardinalität zeigt, wie viele Elemente in den beiden Tabellen es gibt. In einer 1:N-Beziehung ist die Kardinalität auf der übergeordneten Seite eins und auf der untergeordneten Seite viele.


