🕸️ Datenmodellierung (ERM)
Inhalt
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.
📦 Entität, Attribut, Beziehung
Ein ERM besteht aus drei Grundbausteinen:
- Entität — ein "Ding", das gespeichert wird, z. B. ein Nutzer, ein Post, eine Playlist. Wird später zu einer Tabelle.
- Attribut — eine Eigenschaft dieser Entität, z. B. Nutzername, Veröffentlichungsdatum. Wird später zu einem Datenfeld (einer Spalte).
- Beziehung — wie zwei Entitäten zusammenhängen, z. B. "Nutzer erstellt Post".
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 |
| Name | Lena |
| 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:
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.
Ü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.
⭐ Ü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
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):
- dbdiagram.io öffnen, kein Login nötig zum Ausprobieren.
- Auf "Go to App" bzw. "Create new Diagram" klicken.
- Links Tabellen als Text eintippen (z. B.
Table Nutzer { id int name text }), rechts erscheint automatisch das Diagramm.
draw.io (frei zeichnen, per Maus):
- app.diagrams.net öffnen (das ist draw.io).
- "Diagramm ohne Speicherort erstellen" wählen, um sofort ohne Login loszulegen.
- Links in der Formensammlung ein Rechteck auf die Zeichenfläche ziehen — das ist eure erste Entität. Beschriften per Doppelklick.
- 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.
🔢 Aufgabe 2 — Kardinalitäten bestimmen
- Bestimmt für jede Beziehung in eurem ERM die passende Kardinalität (1:1, 1:n oder m:n).
- 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".
- 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:
- Prüft beim ERM der anderen Gruppe: Sind alle Entitäten klar benannt? Hat jede Entität mindestens zwei sinnvolle Attribute?
- Prüft die Kardinalitäten: Stimmen sie logisch, oder würdet ihr etwas anders einschätzen? Diskutiert Unterschiede.
- Gebt der anderen Gruppe eine konkrete Rückmeldung: ein Lob und ein Verbesserungsvorschlag.
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.