🕸️ Datenmodellierung (ERM)

Inhalt

🏠 Hausaufgabe: Lies den Text, schau dir das Video an und bearbeite die Übung weiter unten — zuhause, vor der nächsten Stunde. Im Unterricht prüfen wir mit einer Kurzkontrolle (KK) in Moodle, ob der Stoff sitzt.

Bevor eine Datenbank überhaupt gebaut wird, wird sie erst geplant. Genau wie ein Architekt vor dem Hausbau einen Bauplan zeichnet, zeichnet man vor einer Datenbank ein Entity-Relationship-Modell, kurz ERM. In dieser Kachel lernst du, wie so ein Plan aufgebaut ist.

🚩 Bearbeite unbedingt die Übung weiter unten, bevor du die Kurzkontrolle in Moodle schreibst.

📦 Entität, Attribut, Beziehung

Ein ERM besteht aus drei Grundbausteinen:

Nutzer Post erstellt Attribut: Name Attribut: Datum

Zwei Entitäten (Nutzer, Post), eine Beziehung dazwischen (erstellt), und Attribute als Eigenschaften jeder Entität.

🔑 Primärschlüssel und Fremdschlüssel

Damit ein Computer Datensätze eindeutig unterscheiden kann, braucht jede Tabelle eine eindeutige ID: den Primärschlüssel. Zwei Nutzer können denselben Namen haben, aber niemals dieselbe ID.

Ein Fremdschlüssel ist ein Verweis auf den Primärschlüssel einer anderen Tabelle. Damit "weiß" ein Post, zu welchem Nutzer er gehört, ohne den ganzen Nutzer-Datensatz noch einmal zu speichern.

🔍 Primärschlüssel und Fremdschlüssel im Beispiel
Tabelle Nutzer
NutzerID (Primärschlüssel)1
NameLena
Tabelle Post
PostID (Primärschlüssel)101
Text"Schöner Tag heute!"
NutzerID (Fremdschlüssel)1 → zeigt auf Lena

🔗 Kardinalitäten: 1:1, 1:n, m:n

Eine Kardinalität beschreibt, wie viele Datensätze einer Entität mit wie vielen Datensätzen der anderen zusammenhängen können. Am Beispiel Instagram:

Nutzer Post 1 n 1:n — ein Nutzer hat viele Posts Post Nutzer m n m:n — Likes: viele Posts von vielen Nutzern geliked Nutzer Profil 1 1

1:1 (unten): ein Nutzer hat genau ein Profil, ein Profil gehört genau einem Nutzer.

Klick dich durch drei Beispiele, um die Kardinalität selbst zuzuordnen:

👆 Klick auf ein Beispiel.

🚀 Für Schnelle

Überlege für Discord: Wenn ein Server viele Kanäle hat, aber jeder Kanal nur zu genau einem Server gehört — welche Kardinalität ist das? Und wie sieht es bei Nachrichten in einem Kanal aus?

🔍 Warum überhaupt in mehrere Tabellen aufteilen?

Man könnte theoretisch alles in eine einzige riesige Tabelle packen: Nutzername, alle Posts, alle Kommentare, alle Likes, in einer Zeile. Das Problem: Sobald sich der Nutzername ändert, müsste man ihn an tausenden Stellen ändern, und vieles würde doppelt gespeichert. Die Aufteilung in mehrere verknüpfte Tabellen (mit Primär- und Fremdschlüsseln) vermeidet genau das.

🃏 Lernkarten

Zum Auswendiglernen: Karte antippen zum Umdrehen.

…
…
Karte 1 von 1

⭐ Üben

Fragen werden geladen …

🎮 Stundenaufgabe

Wähle eine Vertiefung, danach geht es an die praktische Übung:

📺

YouTube-Video ansehen

Suche nach "ERM Entity Relationship Model einfach erklärt"

📱

App-Datenmodell erraten

Welche Entitäten könnte eine App auf deinem Handy speichern?

🤖

Mit KI besprechen

Prompt kopieren und in eine KI einfügen

🤖 KI-Prompt zum Üben:
🦆 duck.ai öffnen
Rolle: Du bist ein geduldiger Lernpartner für Informatik.
Aufgabe: Frag mich nacheinander ab, was Entität, Attribut, Beziehung, Primärschlüssel und Fremdschlüssel jeweils bedeuten, und lass mich raten, bevor du die Antwort verrätst. Nenne danach ein Beispiel aus einer App wie Discord oder Spotify.
Kontext: Ich bin in Klasse 9 und lerne gerade, wie man ein ERM (Entity-Relationship-Modell) liest.
Stil: Einfache, kurze Sätze, keine Fachwörter ohne Erklärung.

✏️ Aufgabe 1 — Eigenes ERM zeichnen

🧭 dbdiagram.io oder draw.io zum ersten Mal öffnen — so geht's

dbdiagram.io (schreibbasiert, schnell für ERM):

  1. dbdiagram.io öffnen, kein Login nötig zum Ausprobieren.
  2. Auf "Go to App" bzw. "Create new Diagram" klicken.
  3. Links Tabellen als Text eintippen (z. B. Table Nutzer { id int name text }), rechts erscheint automatisch das Diagramm.

draw.io (frei zeichnen, per Maus):

  1. app.diagrams.net öffnen (das ist draw.io).
  2. "Diagramm ohne Speicherort erstellen" wählen, um sofort ohne Login loszulegen.
  3. Links in der Formensammlung ein Rechteck auf die Zeichenfläche ziehen — das ist eure erste Entität. Beschriften per Doppelklick.
  4. Linien zwischen zwei Rechtecken ziehen (Maus über den Rand eines Rechtecks halten, bis Pfeile erscheinen), um eine Beziehung darzustellen.

Wählt zu zweit eine App: Spotify, Discord oder YouTube. Zeichnet ein ERM mit 2–3 Entitäten, deren Attributen und den Beziehungen dazwischen. Beispiel Spotify: Nutzer, Playlist, Song.

🔗 Falls euch die Begriffe Text/Zahl/Datum wieder begegnen: Die genauen Regeln dazu stehen in der Kachel Datenbanken-Grundlagen — ein Blick zurück lohnt sich.

🔢 Aufgabe 2 — Kardinalitäten bestimmen

  1. Bestimmt für jede Beziehung in eurem ERM die passende Kardinalität (1:1, 1:n oder m:n).
  2. Schreibt zu jeder Kardinalität eine kurze Begründung in einem Satz auf, z. B. "Ein Nutzer hat viele Playlists, aber jede Playlist gehört nur einem Nutzer → 1:n".
  3. Prüft: Gibt es in eurem Beispiel auch eine m:n-Beziehung? Falls nicht, überlegt, ob eine fehlen könnte (z. B. "Song gehört zu mehreren Playlists, Playlist enthält mehrere Songs").

🔍 Aufgabe 3 — Peer-Check

Tauscht euer fertiges ERM mit einer anderen Zweiergruppe:

  1. Prüft beim ERM der anderen Gruppe: Sind alle Entitäten klar benannt? Hat jede Entität mindestens zwei sinnvolle Attribute?
  2. Prüft die Kardinalitäten: Stimmen sie logisch, oder würdet ihr etwas anders einschätzen? Diskutiert Unterschiede.
  3. Gebt der anderen Gruppe eine konkrete Rückmeldung: ein Lob und ein Verbesserungsvorschlag.
🚀 Bonus für Schnelle

Ergänzt euer ERM um eine vierte Entität (z. B. bei Spotify: "Kommentar" oder "Genre") inklusive passender Beziehung und Kardinalität zu einer bestehenden Entität.