Seite 6 Relationales-Datenbankmodell-Trainer
Dieser interaktive Trainer gehört zur Theorie-Seite:
Relationales Datenbankmodell
Hier übst du, aus kurzen Aufgabenstellungen ein relationales Datenbankmodell abzuleiten.
Im Fokus stehen:
Tabellen
Primärschlüssel
Fremdschlüssel
1:n-Beziehungen
n:m-Beziehungen
Zwischentabellen
Was wird trainiert?
| Bereich | Bedeutung |
|---|---|
| Tabellen ableiten | Entitäten aus dem ERM werden Tabellen |
| Primärschlüssel bestimmen | Jede Tabelle braucht eine eindeutige ID |
| Fremdschlüssel platzieren | Bei 1:n steht der Fremdschlüssel auf der n-Seite |
| Beziehungen erkennen | 1:1, 1:n, n:1 oder n:m |
| Zwischentabelle erkennen | n:m-Beziehungen werden über eine Zwischentabelle gelöst |
| IHK-typische Aufgaben lösen | Fachliche Beschreibung in Tabellenstruktur umwandeln |
Interaktiver Relationales-Datenbankmodell-Trainer
Merksatz für den Trainer
Entität im ERM → Tabelle im relationalen Modell
Attribut im ERM → Spalte in der Tabelle
Primärschlüssel → eindeutige ID einer Tabelle
Fremdschlüssel → Verweis auf eine andere Tabelle
1:n-Beziehung → Fremdschlüssel auf der n-Seite
n:m-Beziehung → Zwischentabelle mit Fremdschlüsseln
Beispiel 1: 1:n-Beziehung
Aufgabenstellung:
Ein Kunde kann mehrere Bestellungen aufgeben.
Eine Bestellung gehört genau zu einem Kunden.
Relationales Modell:
Kunde(kunden_id PK, name, email)
Bestellung(bestellung_id PK, bestelldatum, kunden_id FK)
Warum?
Kunde 1:n Bestellung
Der Fremdschlüssel steht auf der n-Seite.
Also steht:
kunden_id
in der Tabelle:
Bestellung
Beispiel 2: n:m-Beziehung
Aufgabenstellung:
Ein Schüler kann mehrere Kurse belegen.
Ein Kurs kann von mehreren Schülern belegt werden.
Relationales Modell:
Schüler(schueler_id PK, vorname, nachname)
Kurs(kurs_id PK, kursname)
Belegung(schueler_id FK, kurs_id FK, anmeldedatum)
Warum?
Schüler n:m Kurs
Eine n:m-Beziehung braucht eine Zwischentabelle.
Hier heißt sie:
Belegung
Beispiel 3: Bestellung und Produkt
Aufgabenstellung:
Eine Bestellung kann mehrere Produkte enthalten.
Ein Produkt kann in mehreren Bestellungen vorkommen.
Relationales Modell:
Bestellung(bestellung_id PK, bestelldatum)
Produkt(produkt_id PK, bezeichnung, preis)
Bestellposition(bestellung_id FK, produkt_id FK, menge)
Warum?
Bestellung n:m Produkt
Die Zwischentabelle Bestellposition löst die n:m-Beziehung auf.
Zusätzlich kann dort gespeichert werden:
menge
einzelpreis
rabatt
Typische Fehler im Trainer
| Fehler | Warum falsch? |
|---|---|
| Fremdschlüssel auf der falschen Seite | Bei 1:n muss der FK auf die n-Seite |
| n:m ohne Zwischentabelle | n:m braucht im relationalen Modell eine eigene Tabelle |
| Primärschlüssel vergessen | Datensätze sind nicht eindeutig |
| Zwischentabelle ohne beide Fremdschlüssel | Verbindung ist nicht vollständig |
| Attribute doppelt speichern | führt zu Redundanz |
| Tabelle und Entität verwechseln | ERM ist fachlich, relationales Modell ist tabellarisch |
Mini-Testfragen
1. Was wird aus einer Entität im relationalen Modell?
Aus einer Entität wird meistens eine Tabelle.
Beispiel:
Entität Kunde
wird zu:
Tabelle Kunde
2. Was wird aus einem Attribut im relationalen Modell?
Aus einem Attribut wird meistens eine Spalte.
Beispiel:
Attribut name
wird zu:
Spalte name
3. Was ist ein Primärschlüssel?
Ein Primärschlüssel identifiziert jeden Datensatz eindeutig.
Beispiel:
kunden_id
produkt_id
bestellung_id
4. Was ist ein Fremdschlüssel?
Ein Fremdschlüssel verweist auf den Primärschlüssel einer anderen Tabelle.
Beispiel:
Bestellung.kunden_id verweist auf Kunde.kunden_id
5. Wo steht der Fremdschlüssel bei einer 1:n-Beziehung?
Der Fremdschlüssel steht auf der n-Seite.
Beispiel:
Kunde 1:n Bestellung
Dann steht:
kunden_id
in der Tabelle:
Bestellung
6. Was braucht man bei einer n:m-Beziehung?
Eine n:m-Beziehung braucht eine Zwischentabelle.
Beispiel:
Schüler n:m Kurs
wird zu:
Schüler 1:n Belegung n:1 Kurs
7. Welche Fremdschlüssel enthält die Zwischentabelle bei Schüler und Kurs?
Die Zwischentabelle enthält mindestens:
schueler_id FK
kurs_id FK
Beispiel:
Belegung(schueler_id FK, kurs_id FK, anmeldedatum)
8. Warum ist Bestellposition eine sinnvolle Zwischentabelle?
Weil eine Bestellung mehrere Produkte enthalten kann und ein Produkt in mehreren Bestellungen vorkommen kann.
Außerdem kann die Tabelle Bestellposition Zusatzinformationen speichern:
menge
einzelpreis
rabatt
9. Was ist ein zusammengesetzter Primärschlüssel?
Ein zusammengesetzter Primärschlüssel besteht aus mehreren Spalten.
Beispiel:
Belegung(schueler_id, kurs_id)
Zusammen können beide Werte einen Datensatz eindeutig machen.
10. Was ist der häufigste Fehler bei n:m-Beziehungen?
Der häufigste Fehler ist, keine Zwischentabelle zu erstellen.
Falsch:
Schüler n:m Kurs direkt speichern
Besser:
Schüler 1:n Belegung n:1 Kurs
Nächste Seite
Danach geht es weiter mit:
UML-Klassendiagramm