ER-Modellierung und Kardinalität von Beziehungen
Anforderungen in Entitäten, Beziehungen und Junction-Tabellen übertragen.
ER-Modellierung und Kardinalität von Beziehungen ist eine kostenlose SQL Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Warum ER-Modellierung in Interviews vorkommt
Nach der Normalisierung prüfen Interviewer, ob Sie Anforderungen in ein Schema umsetzen können. Die Aufgabe ist normalerweise offen formuliert: "Entwerfen Sie eine Datenbank für eine Ride-Sharing-App" oder "Modellieren Sie ein Bibliothekssystem."
Dies ist eine Übung zur Entity-Relationship-Modellierung (ER-Modellierung). Die Interviewer beobachten, wie Sie Entitäten, Attribute und die Beziehungen zwischen ihnen identifizieren, einschließlich der Kardinalität.
Die Fähigkeit besteht darin, englische Substantive und Verben in Tabellen und Fremdschlüssel zu übersetzen.
Entitäten, Attribute und Beziehungen
Drei Grundbausteine bilden jedes ER-Modell:
- Entität: ein Objekt, über das Sie Daten speichern (Kunde, Bestellung, Produkt). Daraus wird normalerweise eine Tabelle.
- Attribut: eine Eigenschaft einer Entität (Name, Preis, created_at). Daraus wird normalerweise eine Spalte.
- Beziehung: die Verbindung zwischen Entitäten (ein Kunde gibt eine Bestellung auf). Sie wird mit Fremdschlüsseln oder Zwischentabellen umgesetzt.
Tipp zur Aufgabenstellung: Substantive werden zu Entitäten oder Attributen, Verben werden zu Beziehungen.
Kardinalität: Das zentrale Konzept
Kardinalität beschreibt, wie viele Instanzen einer Entität mit einer anderen in Beziehung stehen. Die drei grundlegenden Formen:
- Eins-zu-eins (1:1): Eine Zeile auf dieser Seite entspricht höchstens einer Zeile auf der anderen Seite.
- Eins-zu-viele (1:N): Eine Zeile auf dieser Seite entspricht vielen Zeilen auf der anderen Seite (die häufigste Form).
- Viele-zu-viele (M:N): Zeilen auf beiden Seiten entsprechen vielen Zeilen auf der jeweils anderen Seite.
Die korrekte Kardinalität bestimmt, wo Fremdschlüssel platziert werden und ob Sie eine Zwischentabelle benötigen.
Eins-zu-viele umsetzen
Eins-zu-viele wird umgesetzt, indem der Fremdschlüssel auf der „Viele“-Seite gespeichert wird. Ein Kunde hat viele Bestellungen, daher enthält jede Bestellzeile customer_id.
Sagen Sie im Interview immer ausdrücklich, in welche Richtung die Beziehung geht: „Ein Kunde zu vielen Bestellungen, daher liegt der FK in orders.“
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT NOT NULL,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);Viele-zu-viele umsetzen
Eine relationale Datenbank kann M:N nicht direkt abbilden. Die von Interviewern erwartete Lösung ist eine Zwischentabelle (auch Bridge-, Link- oder Associative Table genannt).
Studierende belegen viele Kurse, und Kurse haben viele Studierende. Erstellen Sie eine enrollments-Tabelle, deren Schlüssel beide Fremdschlüssel kombiniert. Dadurch wird M:N in zwei 1:N-Beziehungen aufgelöst.
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE courses (
course_id INT PRIMARY KEY,
title VARCHAR(100)
);
CREATE TABLE enrollments (
student_id INT,
course_id INT,
enrolled_at DATE,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);Die Zwischentabelle kann Daten enthalten
Eine häufige Rückfrage lautet: "Wo speichern Sie die Note, die ein Studierender in einem Kurs erhalten hat?"
Die Note gehört zur Beziehung, nicht ausschließlich zum Studierenden oder zum Kurs. Daher wird sie in der Zwischentabelle gespeichert. Genau dieses Verständnis prüfen Interviewer: Attribute einer M:N-Beziehung gehören in die Bridge-Tabelle.
Beispiele: Einschreibedatum, Note, Menge in einer Bestellposition, eine Rolle in einer Projektmitgliedschaft.
ALTER TABLE enrollments
ADD COLUMN grade CHAR(2);
-- grade describes THIS student in THIS course,
-- so it belongs on the junction tableEins-zu-eins umsetzen
1:1-Beziehungen sind seltener. Sie werden umgesetzt, indem die abhängige Tabelle einen Fremdschlüssel erhält, der zugleich ein eindeutiger Schlüssel ist (oft der Primärschlüssel selbst).
Beispiel: ein user und ein user_profile mit erweiterten, optionalen Angaben. Wenn Sie user_id zum Primärschlüssel der Profiltabelle machen, erzwingen Sie höchstens ein Profil pro Benutzer.
CREATE TABLE users (
user_id INT PRIMARY KEY,
email VARCHAR(255)
);
CREATE TABLE user_profiles (
user_id INT PRIMARY KEY, -- 1:1 enforced here
bio TEXT,
avatar_url VARCHAR(255),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);Optionalität und Partizipation
Die Kardinalität hat eine zweite Dimension, auf die Interviewer gerne eingehen: Optionalität (auch Partizipation genannt).
- Obligatorisch: Jede Bestellung muss einen Kunden haben, daher ist
customer_idNOT NULL. - Optional: Ein Benutzer kann ein Profil haben oder nicht, daher kann die Beziehung fehlen.
Eine obligatorische Teilnahme drücken Sie mit NOT NULL für den Fremdschlüssel aus. Wenn Sie die NULL-Zulässigkeit erwähnen, zeigen Sie, dass Sie über reale Einschränkungen und nicht nur über Strukturen nachdenken.
Selbstreferenzielle Beziehungen
Manche Beziehungen verweisen von einer Entität auf sich selbst. Ein Mitarbeiter hat eine Führungskraft, die ebenfalls Mitarbeiter ist; eine Kategorie hat eine übergeordnete Kategorie.
Sie modellieren dies mit einem Fremdschlüssel, der auf dieselbe Tabelle verweist. Interviewer erwarten dieses Muster bei Organigrammen und Baumstrukturen. Es passt außerdem gut zu Self-JOINs und rekursiven CTEs.
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100),
manager_id INT NULL,
FOREIGN KEY (manager_id) REFERENCES employees(employee_id)
);
-- manager_id NULL = top of the hierarchy (e.g. CEO)Ein kurzer Modellierungsdurchgang
Üben Sie die Methode, Verben in Beziehungen umzuwandeln. Aufgabe: "Kunden geben Bestellungen auf; jede Bestellung enthält viele Produkte; Produkte gehören zu Lieferanten."
- Kunde 1:N Bestellung (Fremdschlüssel customer_id in orders).
- Bestellung M:N Produkt -> Zwischentabelle
order_items(mit quantity). - Lieferant 1:N Produkt (Fremdschlüssel supplier_id in products).
Nennen Sie jede Kardinalität und geben Sie an, wo der Schlüssel liegt. Diese Erläuterung bringt Ihnen im Interview den entscheidenden Vorteil.
Klärungsfragen, die Sie stellen sollten
Interviewer belohnen Kandidaten, die vor dem Entwurf Fragen stellen. Gute Klärungsfragen sind:
- "Kann ein Produkt mehr als einem Lieferanten zugeordnet sein?" (entscheidet zwischen 1:N und M:N).
- "Muss jede Bestellung mindestens eine Position enthalten?" (Partizipation).
- "Benötigen wir eine Historie oder nur den aktuellen Zustand?" (führt zu zusätzlichen Tabellen).
Die Antworten ändern Kardinalität und Tabellenanzahl. Gehen Sie daher niemals von Annahmen aus. Fragen zu stellen, signalisiert Seniorität.
Kurzer Test
Sie modellieren Studierende und Kurse, wobei jeder Studierende viele Kurse belegen kann und jeder Kurs viele Studierende hat.
Zusammenfassung: ER-Modellierung und Kardinalität
Sie können nun eine offene Frage zum Schemaentwurf bearbeiten:
- Substantive in Entitäten/Attribute und Verben in Beziehungen umwandeln.
- 1:N: Fremdschlüssel auf der n-Seite.
- M:N: Verknüpfungstabelle mit beiden Fremdschlüsseln sowie allen Attributen der Beziehung.
- 1:1: ein gemeinsamer/eindeutiger Schlüssel in der abhängigen Tabelle.
- Verwenden Sie
NOT NULL, um eine verpflichtende Teilnahme auszudrücken, und selbstreferenzierende Fremdschlüssel für Hierarchien. - Stellen Sie klärende Fragen, bevor Sie sich auf eine Kardinalität festlegen.
Häufig gestellte Fragen
Ist die Lektion „ER-Modellierung und Kardinalität von Beziehungen“ kostenlos?
Ja — der vollständige Text von „ER-Modellierung und Kardinalität von Beziehungen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „ER-Modellierung und Kardinalität von Beziehungen“?
Anforderungen in Entitäten, Beziehungen und Junction-Tabellen übertragen. Du übst SQL Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. SQL Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „ER-Modellierung und Kardinalität von Beziehungen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede SQL Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Normalisierung bis zur 3NF
- ER-Modellierung und Kardinalität von Beziehungen
- Star-Schema und Data-Warehouse-Design
- Kompletter Satz von Probeinterview-Aufgaben