Datenbanken — relationales Datenmodell
Status: GEPRÜFT. Regeln und beide Musterlösungen sind gegen die offiziellen Übungslösungen abgeglichen.
Begriffe
- DBMS (Datenbank-Management-System) = Zugriffssystem auf die Datenbank. Ziele: schneller Zugriff, flexible Auswertung, Vermeidung von Redundanz (Mehrfachspeicherung derselben Daten) und Inkonsistenz (derselbe Kunde einmal „Maier“, einmal „Mayer“).
- Entität = ein identifizierbares Objekt der Realität (Kunde „Maier“).
- Klasse = Zusammenfassung gleichartiger Objekte → Rechteck im ER-Diagramm.
- Attribut = Eigenschaft → wird zur Spalte der Tabelle.
- Primärschlüssel (PS) = eindeutiges Kennzeichen jedes Datensatzes, wird unterstrichen; ändert sich nie.
- Fremdschlüssel (FS) = der Primärschlüssel einer anderen Tabelle, hier eingetragen, markiert mit (FS).
Kardinalitäten immer aus beiden Richtungen lesen
| Formulierung | Kardinalität |
|---|---|
| „genau ein“ ↔︎ „genau ein“ | 1 : 1 |
| „mehrere … aber eindeutig einem“ | 1 : n |
| beide Richtungen „mehrere“ | n : m → auflösen! |
KundeID (FS) in der Auftrags-Tabelle. Faustregel: FS und n stehen immer auf derselben Seite.Das Kochrezept: vom Aufgabentext zum Modell
- Substantive markieren → das werden die Tabellen.
- Jede Tabelle bekommt einen PS
<Name>ID(unterstreichen) + die genannten Attribute. - Jeden Beziehungssatz beidseitig fragen: „ein A hat wie viele B?“ und „ein B hat wie viele A?“.
- 1:n auflösen: FS kommt in die n-Seite.
- n:m auflösen: neue Zuordnungstabelle mit beiden FS; die beiden zusammen sind der zusammengesetzte PS (beide unterstreichen).
- 1:1 auflösen: FS auf einer der beiden Seiten (freie Wahl). Ein optionales 1:1-Detail darf auch als eigene Tabelle oder als Attribut in der Haupttabelle modelliert werden.
Die Zahl steht am nahen Ende der Beziehungslinie. Bei „ein Kunde hat viele Adressen“ steht das n also bei Adresse und die 1 bei Kunde. Vertauschte Kardinalitäten sind der häufigste Punktverlust in dieser Aufgabe. FS und n stehen immer auf derselben Seite.
Bei „kann freiberuflich sein“ / „muss nicht“ bleibt der Fremdschlüssel einfach leer (NULL); schreib „kann leer sein“ dazu. Eine eigene Klasse mit 1:1-Beziehung ist ebenfalls richtig.
Musterlösung 1: Handwerker / Baustelle
Handwerker n:m Baustelle (auflösen) · Baustelle n:1 Bauleiter · Bauleiter n:1 Unternehmen.
Handwerker 1 ── n Einsatz n ── 1 Baustelle
Baustelle n ── 1 Bauleiter
Bauleiter n ── 1 Unternehmen
| Tabelle | Attribute |
|---|---|
| Handwerker | HandwerkerID · Name |
| Einsatz (n:m aufgelöst) | HandwerkerID (FS) · BaustellenID (FS) |
| Baustelle | BaustellenID · Bezeichnung · BauleiterID (FS) |
| Bauleiter | BauleiterID · Name · UnternehmenID (FS) |
| Unternehmen | UnternehmenID · Bezeichnung |
Freiberufler → UnternehmenID bleibt leer (bzw. eigene Klasse „Freiberuf“ mit BauleiterID und 1:1-Beziehung).
Musterlösung 2: Online-Shop
Kunde 1:n Adresse · Kunde 1:1 Warenkorb · Warenkorb n:m Artikel (auflösen).
Kunde 1 ── n Adresse
Kunde 1 ── 1 Warenkorb
Warenkorb 1 ── n Warenkorbposition n ── 1 Artikel
| Tabelle | Attribute |
|---|---|
| Kunde | KundeID · Name |
| Adresse | AdressID · Straße, Ort · KundeID (FS) |
| Warenkorb | WarenkorbID · KundeID (FS) |
| Warenkorbposition (n:m) | WarenkorbID (FS) · ArtikelNr (FS) · Menge |
| Artikel | ArtikelNr · Bezeichnung, Preis |
Bei der Zuordnungstabelle sind zwei Lösungen richtig: entweder ein eigener PS (z. B. ZuordnungsID) + 2 FS, oder (Musterlösung) beide FS zusammen als zusammengesetzter PS → beide unterstreichen.
- Kardinalität nur in eine Richtung angegeben.
- n:m stehen gelassen statt aufgelöst.
- FS auf der falschen Seite (er gehört immer zur n-Seite).
- PS nicht unterstrichen; bei der Zwischentabelle vergessen, beide Schlüssel zu unterstreichen.