Informatik · Klasse 8–13 · aktualisiert
Datenbankmodellierung: ER-Modell und Tabellen
Du bestimmst Entitäten, Attribute und Schlüssel, überführst Beziehungen in Tabellen und vermeidest doppelte Daten durch Normalisierung.
0 von 12 Aufgaben gelöst
Kurz gesagt
Du bestimmst Entitäten, Attribute und Primärschlüssel und die Beziehungen (1:n oder n:m). Im relationalen Schema wird jeder Entitätstyp eine Tabelle, eine Beziehung ein Fremdschlüssel; n:m braucht eine zusätzliche Tabelle. Normalisierung verringert Redundanzen.
Stell dir vor, du baust eine App für deine Schule und musst entscheiden, welche Daten in welche Tabelle kommen. Machst du das schlecht, steht dieselbe Adresse an vielen Stellen, und nach einer Änderung stimmen sie nicht mehr überein. Mit Datenbankmodellierung planst du das vorher sauber.
Deine Lernziele
Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.
4 Abschnitte
Eine Datenbank bildet einen Ausschnitt der Wirklichkeit ab. Eine Entität ist ein einzelnes Objekt, das man eindeutig erkennen kann, zum Beispiel der Angestellte Müller oder das Projekt 3232. Gleichartige Entitäten fasst man zu einem Entitätstyp zusammen, etwa Angestellter, Projekt, Buch oder Autor. In einem ER-Diagramm (ER steht für Entity-Relationship, also „Dinge und ihre Beziehungen“) zeichnet man Entitätstypen meistens als Rechteck.
Attribute beschreiben einen Entitätstyp näher. Beim Entitätstyp Angestellter sind das zum Beispiel Nachname, Vorname und Eintrittsdatum. Nicht jedes Attribut muss man speichern: Das Alter eines Mitarbeiters kann man aus dem Geburtsdatum und dem Tagesdatum berechnen. Deshalb besteht keine zwingende Notwendigkeit, es direkt in der Datenbank zu speichern.
Jede Zeile einer Tabelle muss eindeutig erkennbar sein. Dafür dient ein Schlüssel: eine einzelne Spalte oder eine Gruppe von Spalten, deren Werte in jeder Zeile eine einmalige Kombination ergeben. Oft gibt es mehrere mögliche Schlüssel, die Schlüsselkandidaten. Einer davon wird als Primärschlüssel ausgewählt.
Ein Primärschlüssel wird üblicherweise möglichst klein gewählt, hat also möglichst wenige Attribute oder einen möglichst einfachen Datentyp. Er sollte zeitlich stabil sein, sich also nicht ändern. Außerdem muss er die Objekte wirklich eindeutig unterscheiden. Wählst du Name und Geburtstag zusammen, legst du fest, dass es keine zwei gleichnamigen Personen mit demselben Geburtstag geben darf. Ein künstlicher Schlüssel (Surrogatschlüssel), zum Beispiel eine fortlaufende Nummer, vermeidet dieses Problem in jedem Fall. Eine Kundennummer ist ein solcher Schlüssel.
Definition
Primärschlüssel
Der Primärschlüssel ist der Schlüsselkandidat, der für die Tabelle tatsächlich verwendet wird. Er kennzeichnet jede Zeile der Tabelle eindeutig.
Beispiel: Bücher-Tabelle
- 1Die ISBN (eine Nummer, die jedes Buch trägt) eignet sich als Schlüssel, denn keine zwei Bücher haben dieselbe ISBN.
- 2Der Titel eignet sich nicht: Bücher können den gleichen Titel haben.
- 3Der Autor eignet sich auch nicht: Bücher können vom selben Autor stammen.
Merke: Ein Primärschlüssel kennzeichnet jede Zeile eindeutig und sollte sich während des gesamten Lebens der Tabelle nicht ändern.
Teste dich
Eine Beziehung verknüpft zwei oder mehr Entitäten. Gleichartige Beziehungen fasst man zu einem Beziehungstyp zusammen. Im ER-Diagramm sind das Verbindungslinien zwischen den Rechtecken. Wichtig ist, wie viele Entitäten auf jeder Seite beteiligt sein können oder müssen.
Bei einer 1:n-Beziehung steht jede Entität auf der einen Seite mit beliebig vielen Entitäten der anderen Seite in Beziehung. In der Gegenrichtung steht jede Entität mit einer Entität in Beziehung. Beispiel: Ein Kind hat genau eine leibliche Mutter, eine Mutter kann mehrere Kinder haben.
Bei einer n:m-Beziehung können auf beiden Seiten beliebig viele Entitäten in Beziehung stehen. Schreibe nicht „n:n“: Das würde andeuten, dass auf beiden Seiten gleich viele Entitäten vorhanden sind.
So überführst du eine 1:n-Beziehung in Tabellen: Die Tabelle auf der n-Seite (die Detail-Tabelle) bekommt eine zusätzliche Spalte. Diese Spalte nimmt als Fremdschlüssel den Primärschlüssel der anderen Tabelle (der Haupttabelle) auf. Ein Fremdschlüssel ist also eine Spalte, die auf eine Zeile einer anderen Tabelle zeigt.
n:m-Beziehungen können in den meisten relationalen Datenbanken nicht direkt umgesetzt werden. Man erstellt eine zusätzliche Tabelle, die Hilfstabelle. Sie enthält die Primärschlüssel beider Tabellen als Fremdschlüssel. So entstehen zwei 1:n-Beziehungen.
Gehören zu einer n:m-Beziehung weitere Attribute, bildet man häufig schon im ER-Modell einen eigenen Entitätstyp. Beispiel: Ein Hotel ist reserviert für eine Person. Es entsteht der neue Entitätstyp „Reservierung“ mit n:1-Beziehungen zu Person und Hotel. Er bekommt weitere Attribute wie Reservierungszeitraum und Reservierungsstatus.
| Beziehung | Beispiel | Umsetzung in Tabellen |
|---|---|---|
| 1:n | Mutter 1:n Kind | Die Tabelle auf der n-Seite bekommt eine Spalte mit dem Fremdschlüssel |
| n:m | Kunde n:m Produkt | Eine Hilfstabelle enthält die Primärschlüssel beider Tabellen |
Beispiel: Zwei Beziehungen im Vergleich
- 1Mutter 1:n Kind: Die Tabelle Kind bekommt eine Spalte mit dem Primärschlüssel der Mutter als Fremdschlüssel.
- 2Kunde n:m Produkt: Ein Kunde kann verschiedene Produkte kaufen, ein Produkt kann von mehreren Kunden gekauft werden.
- 3Dafür braucht man eine Hilfstabelle mit je einer Spalte für den Schlüssel des Kunden und des Produkts.
Merke: 1:n braucht nur eine zusätzliche Spalte mit Fremdschlüssel. n:m braucht eine zusätzliche Tabelle.
Teste dich
In einer relationalen Datenbank liegen alle Daten in Tabellen. Eine Tabelle heißt dort auch Relation. Jede Zeile ist ein Datensatz, die Spalten sind die Attribute, also die Eigenschaften. Das Relationenschema legt die Anzahl und den Typ der Attribute einer Tabelle fest. Im ER-Modell bedeutet „Relation“ dagegen die Beziehung zwischen Entitäten.
Das Schema der ganzen Datenbank legt fest, welche Daten gespeichert werden und wie sie in Beziehung zueinander stehen. Es zu erstellen, nennt man Datenmodellierung.
Jede Tabelle hat einen Primärschlüssel. Will eine andere Tabelle auf einen Datensatz zeigen, verwendet sie dessen Primärschlüssel als Fremdschlüssel. Ein Fremdschlüssel verweist auf einen Primärschlüssel einer anderen oder der gleichen Tabelle. Er zeigt an, welche Zeilen inhaltlich zusammengehören.
Beim Übertragen eines ER-Modells in Tabellen gilt: Ein Entitätstyp wird eine Tabelle. Ein Beziehungstyp wird ein Fremdschlüssel. Nur bei n:m kommt eine zusätzliche Tabelle dazu. Ein Attribut bleibt ein Attribut.
Auch ein Schlüssel kann aus mehreren Spalten bestehen. In der Hilfstabelle einer n:m-Beziehung sind beide Fremdschlüssel zusammen der Primärschlüssel. Ändert sich ein Primärschlüsselwert, müssten auch die zugehörigen Fremdschlüsselwerte geändert werden. Das ist oft aufwendig. Darum soll ein Primärschlüssel stabil bleiben.
Definition
Fremdschlüssel
Ein Fremdschlüssel ist ein Attribut (oder mehrere Attribute) einer Tabelle, das auf einen Primärschlüssel einer anderen oder der gleichen Tabelle verweist.
Beispiel: Bibliothek mit Entliehen-Tabelle
- 1Tabelle Nutzer: (10, Hans, Vielleser), (11, Jens, Mittelleser), (12, Erich, Wenigleser)
- 2Tabelle Entliehen: (10, 300), (10, 200), (10, 500), (11, 100), (12, 400)
- 3Der Eintrag (10, 300) heißt: Nutzer 10 („Hans Vielleser“) hat das Buch 300 („Mein Leben mit Asterix“) entliehen.
- 4Als Schlüssel von Entliehen dient (Nutzer-ID, Buch-ID) zusammen. Einzeln verweisen beide Spalten auf die Tabellen Nutzer und Buch.
Merke: Der Primärschlüssel kennzeichnet die Zeilen der eigenen Tabelle. Der Fremdschlüssel verweist auf den Primärschlüssel einer anderen oder der gleichen Tabelle.
Teste dich
Beim Planen von Tabellen passiert leicht ein Fehler: Dieselbe Information steht an mehreren Stellen. Das nennt man Redundanz, also mehrfaches Festhalten des gleichen Sachverhalts. Normalisierung ist ein Entwurfsansatz für relationale Datenbanken. Sie strukturiert die Daten anhand einer Folge von Regeln, den Normalformen, die aufeinander aufbauen.
Ihr Zweck: Redundanzen verringern und dadurch Anomalien verhindern. Eine Anomalie ist zum Beispiel, dass eine Änderung nicht an allen Stellen gemacht wird. Dann sind die Daten nicht mehr konsistent: Sie widersprechen sich, und man weiß nicht, welche stimmen. Mit Normalisierung ändert man lediglich an einer Stelle.
Beispiel: Eine Tabelle enthält für jedes Lied einer CD auch Albumtitel, Interpret, Gründungsjahr und Erscheinungsjahr. Bei einer CD mit drei Liedern stehen diese vier Angaben dreimal da. Ändert jemand den Albumtitel nur in einer Zeile, passen die Daten nicht mehr zusammen. Das nennt man Update-Anomalie.
Die Lösung: Man teilt die Tabelle. Die Angaben zur CD stehen nur noch einmal pro CD in einer eigenen Tabelle CD. In der Tabelle Lied bleibt die CD_ID als Fremdschlüssel, der auf den Primärschlüssel der Tabelle CD verweist. CD_ID und Track bilden zusammen den Primärschlüssel von Lied.
Auch das Gründungsjahr lässt sich auslagern. Es hängt vom Interpreten ab, und der Interpret hängt von der CD_ID ab. Kommt eine neue CD mit einem schon vorhandenen Interpreten dazu, würde das Gründungsjahr noch einmal gespeichert. Deshalb lagert man die beiden voneinander abhängigen Angaben in eine eigene Tabelle aus. Der Schlüssel der neuen Tabelle bleibt als Fremdschlüssel in der alten Tabelle. Das gilt nur, wenn der Interpret weltweit eindeutig ist. Sonst braucht die Künstler-Tabelle eine synthetische (künstliche) ID.
Eine weitere Regel: Jedes Attribut soll nur einen einfachen, unteilbaren Wert enthalten. Die Adresse zerlegt man daher, sofern es der zugrunde liegende Prozess erfordert und erlaubt, in PLZ (Postleitzahl), Ort, Straße und Hausnummer. Zum Schluss ein Hinweis: In speziellen Anwendungsfällen steht Redundanzfreiheit in Konkurrenz zur Verarbeitungsgeschwindigkeit oder zu anderen Zielen. Dann kann es sinnvoll sein, auf Normalisierung zu verzichten.
Definition
Redundanz
Redundanz ist das mehrfache Festhalten des gleichen Sachverhalts in einer Datenbank.
Beispiel: CD-Tabelle aufteilen
- 1Vorher: eine Tabelle mit CD_ID, Albumtitel, Interpret, Gründungsjahr, Erscheinungsjahr, Track, Titel.
- 2Die CD 4711 „Not That Kind“ hat drei Zeilen. Album, Interpret Anastacia, 1999 und 2000 stehen dreimal da.
- 3Ändert man den Albumtitel nur in einer Zeile, passen die Daten nicht mehr zusammen.
- 4Nachher: Tabelle CD (CD_ID, Albumtitel, Interpret, Gründungsjahr, Erscheinungsjahr) mit einer Zeile pro CD.
- 5Tabelle Lied: CD_ID ist Fremdschlüssel, CD_ID und Track sind zusammen der Primärschlüssel.
Merke: Normalisierung verringert Redundanzen. So ist eine Änderung nur an einer Stelle nötig, und die Daten bleiben konsistent.
Teste dich
Alles auf einen Blick
Datenbankmodellierung
Entität und Attribut
Eine Entität ist ein eindeutig erkennbares Objekt, Attribute beschreiben ihren Entitätstyp näher.
Primärschlüssel
Er kennzeichnet jede Zeile eindeutig und sollte zeitlich stabil sein.
Beziehung eins zu n
Die Tabelle auf der n-Seite bekommt eine Spalte mit dem Fremdschlüssel.
Beziehung n zu m
Man braucht eine zusätzliche Tabelle mit den Primärschlüsseln beider Tabellen als Fremdschlüssel.
Fremdschlüssel
Er verweist auf den Primärschlüssel einer anderen oder der gleichen Tabelle.
Normalisierung
Sie verringert Redundanzen und verhindert dadurch Anomalien. In speziellen Anwendungsfällen kann man darauf verzichten.
Musteraufgabe · Schritt für Schritt
Läufer und Wettkämpfe in Tabellen überführen (ausgedachtes Beispiel)
- 1Ausgedachte Lage: Ein Läufer startet bei mehreren Wettkämpfen, bei einem Wettkampf starten mehrere Läufer.
- 2Schritt 1: Entitätstypen sind Läufer (Läufer-Nr, Name) und Wettkampf (Wettkampf-Nr, Ort). Die Nummern sind künstliche Schlüssel und dienen als Primärschlüssel.
- 3Schritt 2: Auf beiden Seiten sind beliebig viele Entitäten möglich, also Läufer n:m Wettkampf.
- 4Schritt 3: Für n:m braucht man eine Hilfstabelle Start mit den Spalten Läufer-Nr und Wettkampf-Nr. Beide sind Fremdschlüssel.
- 5Schritt 4: Beide Spalten zusammen bilden den Primärschlüssel von Start.
- 6Probe: Der Eintrag (7, 2) heißt: Läufer 7 startet bei Wettkampf 2. Der Eintrag (7, 3) ist erlaubt, (7, 2) darf nicht doppelt stehen.
Fehler finden
Prüfe die Aussagen zu Hotels und Reservierungen In einer Zeile steckt ein Fehler. Tippe sie an.
Fehler in Zeile 4Der Fremdschlüssel gehört in die Tabelle auf der n-Seite. Richtig: Die Tabelle Reservierung bekommt je eine Spalte mit dem Primärschlüssel von Person und von Hotel als Fremdschlüssel.
Lückentext
Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.
Ein Kind hat genau eine leibliche Mutter, eine Mutter kann mehrere Kinder haben. Bei dieser 1:n-Beziehung steht der Fremdschlüssel in der Tabelle . Eine n:m-Beziehung braucht eine zusätzliche Tabelle mit den Primärschlüsseln von Tabellen als Fremdschlüssel. Wird derselbe Sachverhalt mehrfach festgehalten, heißt das .
Karteikasten
Erst selbst überlegen, dann umdrehen.
Übung mit Feedback