0Pricing
SQL Academy · Lektion

Ein Blog-Datenmodell: Benutzer, Beiträge, Kommentare

Zeichnen Sie ein ER-Diagramm, identifizieren Sie Entitäten und Beziehungen und übertragen Sie sie in ein normalisiertes SQL-Schema.

Ein Blog-Datenmodell: Benutzer, Beiträge, Kommentare ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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 Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Die Domäne

Ein einfacher Blog: Benutzer schreiben Beiträge, andere Benutzer kommentieren Beiträge. Überführen wir das in ein Schema.

Entitäten

Drei zentrale Begriffe:

  • Benutzer – ID, E-Mail-Adresse, Name
  • Beitrag – ID, Autor, Titel, Inhalt, Veröffentlichungszeitpunkt
  • Kommentar – ID, Autor, Beitrag, zu dem er gehört, Inhalt

Beziehungen

Kardinalitäten:

  • Benutzer 1 ── ∞ Beitrag (ein Benutzer schreibt viele Beiträge)
  • Benutzer 1 ── ∞ Kommentar
  • Beitrag 1 ── ∞ Kommentar

Benutzertabelle

Beginnen Sie mit den Benutzern – andere Tabellen verweisen auf diese Tabelle:

CREATE TABLE users (
  id BIGSERIAL PRIMARY KEY,
  email VARCHAR(255) NOT NULL UNIQUE,
  full_name VARCHAR(100) NOT NULL,
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

Beitragstabelle

Fremdschlüssel auf users:

CREATE TABLE posts (
  id BIGSERIAL PRIMARY KEY,
  author_id BIGINT NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
  title VARCHAR(200) NOT NULL,
  body  TEXT NOT NULL,
  published_at TIMESTAMPTZ,
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

Kommentartabelle

Zwei Fremdschlüssel:

CREATE TABLE comments (
  id BIGSERIAL PRIMARY KEY,
  post_id BIGINT NOT NULL REFERENCES posts(id) ON DELETE CASCADE,
  author_id BIGINT NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
  body TEXT NOT NULL,
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

Warum ON DELETE CASCADE für Kommentare?

Wenn ein Beitrag gelöscht wird, sind seine Kommentare bedeutungslos – lassen Sie die Datenbank sie automatisch bereinigen.

Warum ON DELETE RESTRICT für den Autor?

Löschen Sie Inhalte nicht stillschweigend, wenn ein Benutzer verschwindet. Zwingen Sie die Anwendung, den Benutzer zuerst als gelöscht zu markieren oder die Inhalte neu zuzuweisen.

Erweiterung um Tags (Viele-zu-viele)

Fügen Sie Tags über eine Verknüpfungstabelle hinzu:

CREATE TABLE tags (
  id BIGSERIAL PRIMARY KEY,
  name TEXT NOT NULL UNIQUE
);

CREATE TABLE post_tags (
  post_id BIGINT REFERENCES posts(id) ON DELETE CASCADE,
  tag_id  BIGINT REFERENCES tags(id)  ON DELETE CASCADE,
  PRIMARY KEY (post_id, tag_id)
);

Verschachtelte Kommentare

Selbstreferenzierende Kommentare für Antworten:

ALTER TABLE comments
  ADD COLUMN parent_id BIGINT REFERENCES comments(id) ON DELETE CASCADE;

Logisches Löschen vs. physisches Löschen

Für einen Blog ist das logische Löschen von Beiträgen oft schonender – defekte Links führen dann nicht zu Fehlern in der Benutzerhistorie. Fügen Sie deleted_at TIMESTAMPTZ hinzu und verwenden Sie in jeder Abfrage den Filter WHERE deleted_at IS NULL.

ER-Diagramm in Worten

users (1) -< (∞) posts (1) -< (∞) comments

Zusätzlich: users (1) -< (∞) comments, posts (∞) >-< (∞) tags.

Zusammenfassung

Der Entwurf eines Schemas beginnt mit Entitäten, Beziehungen und Kardinalitäten.

  • Ein Ersatzschlüssel als Primärschlüssel in jeder Tabelle
  • Fremdschlüssel deklarieren die Beziehungen
  • CASCADE oder RESTRICT richtet sich nach der fachlichen Absicht
  • Viele-zu-viele bedeutet eine Verknüpfungstabelle

Kurzer Test

Wo befindet sich der Fremdschlüssel in einer Eins-zu-viele-Beziehung zwischen Beiträgen und Kommentaren?

Häufig gestellte Fragen

Ist die Lektion „Ein Blog-Datenmodell: Benutzer, Beiträge, Kommentare“ kostenlos?

Ja — der vollständige Text von „Ein Blog-Datenmodell: Benutzer, Beiträge, Kommentare“ 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 Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Ein Blog-Datenmodell: Benutzer, Beiträge, Kommentare“?

Zeichnen Sie ein ER-Diagramm, identifizieren Sie Entitäten und Beziehungen und übertragen Sie sie in ein normalisiertes SQL-Schema. Du übst SQL Academy 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 Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy 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 1 von 4.

Wie lange dauert die Lektion „Ein Blog-Datenmodell: Benutzer, Beiträge, Kommentare“?

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 Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-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

  1. Ein Blog-Datenmodell: Benutzer, Beiträge, Kommentare
  2. Schlüssel und Datentypen auswählen
  3. Indizes für häufige Abfragen
  4. Die Datenbank mit Testdaten befüllen
← Zurück zu SQL Academy