Skip to main content

Seite 4. Relationales Datenbankmodell

Relationales Datenbankmodell

Diese Seite erklärt das relationale Datenbankmodell so, dass du es schnell für IHK-Aufgaben anwenden kannst.

Das relationale Datenbankmodell beschreibt, wie Daten in Tabellen gespeichert werden.

Dabei sind besonders wichtig:

Tabellen
Datensätze
Attribute / Spalten
Primärschlüssel
Fremdschlüssel
Beziehungen zwischen Tabellen

Grafik 1: Grundlagen des relationalen Datenbankmodells

Relationales Datenbankmodell – Grundlagen

Diese Grafik zeigt dir die wichtigsten Grundbegriffe:

  • Tabelle
  • Datensatz
  • Primärschlüssel
  • Fremdschlüssel
  • Zusammenhang zwischen Zeilen, Spalten und Schlüsseln

Wofür braucht man das relationale Datenbankmodell?

Das relationale Datenbankmodell wird benutzt, um ein fachliches Datenmodell technisch näher an eine echte Datenbank zu bringen.

Ein ERM zeigt zuerst fachlich:

Kunde gibt Bestellung auf

Das relationale Modell macht daraus Tabellen:

Kunde
Bestellung

Und legt fest:

Welche Spalten gibt es?
Was ist der Primärschlüssel?
Wo wird ein Fremdschlüssel benötigt?
Wie hängen die Tabellen zusammen?

Woran erkenne ich in einer Aufgabe, dass ein relationales Datenbankmodell gemeint ist?

Typische Signalwörter:

Signalwort / FormulierungHinweis
TabelleDaten sollen tabellarisch dargestellt werden
DatensatzEs geht um Zeilen in einer Tabelle
Attribut / SpalteEs geht um Felder einer Tabelle
PrimärschlüsselEindeutige Kennzeichnung eines Datensatzes
FremdschlüsselVerweis auf eine andere Tabelle
RelationTabelle oder Beziehung zwischen Tabellen
NormalisierungTabellen sollen sauber strukturiert werden
n:m auflösenZwischentabelle wird benötigt
ERM in Tabellen überführenRelationales Modell ist gemeint

Grundbegriffe

BegriffBedeutungBeispiel
TabelleSammlung gleichartiger DatensätzeKunde, Bestellung, Produkt
DatensatzEine Zeile in einer Tabelleein bestimmter Kunde
Attribut / SpalteEigenschaft eines Datensatzesname, email, preis
Primärschlüsseleindeutige ID einer Tabellekunden_id
FremdschlüsselVerweis auf Primärschlüssel einer anderen Tabellekunden_id in Bestellung
RelationTabelle oder Beziehung zwischen TabellenKunde 1:n Bestellung

Tabelle

Eine Tabelle speichert gleichartige Daten.

Beispiel Tabelle Kunde:

kunden_idnameemail
1Müller[email protected]
2Schmidt[email protected]

Die Tabelle hat:

  • Spalten
  • Zeilen
  • Datensätze
  • einen Primärschlüssel

Datensatz

Ein Datensatz ist eine einzelne Zeile in einer Tabelle.

Beispiel:

kunden_idnameemail
1Müller[email protected]

Dieser eine Kunde ist ein Datensatz.

Merksatz:

Datensatz = eine vollständige Zeile einer Tabelle


Attribut / Spalte

Ein Attribut ist im relationalen Modell eine Spalte.

Beispiel Tabelle Kunde:

kunden_id
name
email
telefon

Diese Spalten beschreiben den Kunden genauer.

Merksatz:

Attribut im ERM wird meistens zur Spalte in der Tabelle.


Primärschlüssel

Ein Primärschlüssel identifiziert jeden Datensatz eindeutig.

Beispiel:

kunden_id
produkt_id
bestellung_id

Warum ist das wichtig?

Namen sind nicht eindeutig.

Beispiel:

Müller

kann mehrfach vorkommen.

Aber:

kunden_id = 1

ist eindeutig.

Merksatz:

Jede Tabelle sollte einen Primärschlüssel haben.


Fremdschlüssel

Ein Fremdschlüssel verweist auf den Primärschlüssel einer anderen Tabelle.

Beispiel:

Tabelle Kunde:

kunden_idname
1Müller
2Schmidt

Tabelle Bestellung:

bestellung_idbestelldatumkunden_id
10101.02.20261
10203.02.20261

Hier ist:

kunden_id

in der Tabelle Bestellung ein Fremdschlüssel.

Warum?

Weil er auf die Tabelle Kunde verweist.

Bestellung.kunden_id → Kunde.kunden_id

Grafik 2: Vom ERM zum relationalen Modell

Vom ERM zum relationalen Modell

Diese Grafik zeigt:

  • Aus der Entität Kunde wird die Tabelle Kunde
  • Aus der Entität Bestellung wird die Tabelle Bestellung
  • Die 1:n-Beziehung wird durch einen Fremdschlüssel auf der n-Seite abgebildet
  • In der Tabelle Bestellung steht deshalb kunden_id als Fremdschlüssel

ERM vs. relationales Datenbankmodell

ERMRelationales Datenbankmodell
fachliches Modelltabellarisches Modell
zeigt Entitätenzeigt Tabellen
zeigt Attributezeigt Spalten
zeigt Beziehungenzeigt Fremdschlüssel
zeigt Kardinalitätenzeigt Schlüsselbeziehungen
eher Planungnäher an Datenbank / SQL

Merksatz:

ERM = Was gibt es fachlich?
Relationales Modell = Wie wird es tabellarisch gespeichert?

Aus Entitäten werden Tabellen

Im ERM hast du zum Beispiel:

Kunde
Bestellung
Produkt

Im relationalen Modell werden daraus Tabellen:

Tabelle Kunde
Tabelle Bestellung
Tabelle Produkt

Beispiel:

Entität Kunde

wird zu:

Kunde(kunden_id, name, email)

Aus Attributen werden Spalten

ERM:

Kunde
- kunden_id
- name
- email

Relationales Modell:

kunden_idnameemail

Merksatz:

Attribute werden im relationalen Modell zu Spalten.


1:1-Beziehung im relationalen Modell

Beispiel:

Person 1 --- 1 Personalausweis

Mögliche Tabellen:

Person(person_id, name)
Personalausweis(ausweis_id, ausweisnummer, person_id)

Hier kann person_id in Personalausweis als Fremdschlüssel gespeichert werden.

Wichtig:

Bei 1:1 ist fachlich zu prüfen, ob man beide Tabellen wirklich getrennt braucht.


1:n-Beziehung im relationalen Modell

Beispiel:

Kunde 1 --- n Bestellung

Das bedeutet:

Ein Kunde kann mehrere Bestellungen haben.
Eine Bestellung gehört genau zu einem Kunden.

Tabellen:

Kunde(kunden_id, name, email)

Bestellung(bestellung_id, bestelldatum, kunden_id)

Wichtig:

Der Fremdschlüssel kommt auf die n-Seite.

Also:

kunden_id

steht in:

Bestellung

Merksatz:

Bei 1:n steht der Fremdschlüssel auf der n-Seite.


n:m-Beziehung im relationalen Modell

Beispiel:

Bestellung n --- m Produkt

Das bedeutet:

Eine Bestellung kann mehrere Produkte enthalten.
Ein Produkt kann in mehreren Bestellungen vorkommen.

Eine n:m-Beziehung kann man nicht sauber direkt mit nur einem Fremdschlüssel abbilden.

Deshalb braucht man eine Zwischentabelle.

Aus:

Bestellung n:m Produkt

wird:

Bestellung 1:n Bestellposition n:1 Produkt

Tabellen:

Bestellung(bestellung_id, bestelldatum)

Produkt(produkt_id, bezeichnung, preis)

Bestellposition(bestellung_id, produkt_id, menge)

Die Tabelle Bestellposition enthält mindestens:

SpalteBedeutung
bestellung_idFremdschlüssel auf Bestellung
produkt_idFremdschlüssel auf Produkt
mengeZusatzinformation zur Beziehung

Warum braucht man bei n:m eine Zwischentabelle?

Beispiel:

Eine Bestellung enthält mehrere Produkte.

Ein Produkt kann in mehreren Bestellungen vorkommen.

Zusätzlich muss man speichern:

Wie oft wurde ein Produkt bestellt?
Welcher Preis galt zum Bestellzeitpunkt?
Gab es Rabatt?

Diese Informationen gehören nicht nur zur Bestellung und nicht nur zum Produkt.

Sie gehören zur Verbindung zwischen Bestellung und Produkt.

Deshalb braucht man:

Bestellposition

Typische Umwandlung von ERM zu relationalem Modell

ERMRelationales Modell
EntitätTabelle
AttributSpalte
PrimärschlüsselPrimärschlüssel
1:n-BeziehungFremdschlüssel auf n-Seite
n:m-BeziehungZwischentabelle
KardinalitätSchlüsselbeziehung

Beispiel: Kunde und Bestellung

Fachliche Beschreibung:

Ein Kunde kann mehrere Bestellungen aufgeben.
Eine Bestellung gehört genau zu einem Kunden.

ERM:

Kunde 1 --- n Bestellung

Relationales Modell:

Kunde(kunden_id, name, email)

Bestellung(bestellung_id, bestelldatum, kunden_id)

Erklärung:

kunden_id ist Primärschlüssel in Kunde.
kunden_id ist Fremdschlüssel in Bestellung.

Beispiel: Schüler und Kurs

Fachliche Beschreibung:

Ein Schüler kann mehrere Kurse belegen.
Ein Kurs kann von mehreren Schülern belegt werden.

ERM:

Schüler n --- m Kurs

Relationales Modell:

Schüler(schueler_id, vorname, nachname)

Kurs(kurs_id, kursname)

Belegung(schueler_id, kurs_id, anmeldedatum)

Erklärung:

Belegung ist die Zwischentabelle.
schueler_id ist Fremdschlüssel auf Schüler.
kurs_id ist Fremdschlüssel auf Kurs.

Primärschlüssel und Fremdschlüssel markieren

In der Prüfung kannst du Schlüssel zum Beispiel so kennzeichnen:

PK = Primary Key = Primärschlüssel
FK = Foreign Key = Fremdschlüssel

Beispiel:

Kunde(
  kunden_id PK,
  name,
  email
)

Bestellung(
  bestellung_id PK,
  bestelldatum,
  kunden_id FK
)

Oder kompakt:

Kunde(kunden_id PK, name, email)

Bestellung(bestellung_id PK, bestelldatum, kunden_id FK)

Zusammengesetzter Primärschlüssel

Bei Zwischentabellen kann der Primärschlüssel aus mehreren Spalten bestehen.

Beispiel:

Belegung(schueler_id, kurs_id, anmeldedatum)

Hier könnten zusammen den Datensatz eindeutig machen:

schueler_id + kurs_id

Das nennt man einen zusammengesetzten Primärschlüssel.

Alternative:

Man kann auch eine eigene ID verwenden:

belegung_id

Dann sieht die Tabelle so aus:

Belegung(belegung_id PK, schueler_id FK, kurs_id FK, anmeldedatum)

Beides kann je nach Aufgabenstellung sinnvoll sein.


Normalisierung kurz erklärt

Normalisierung bedeutet:

Daten so strukturieren, dass Wiederholungen und Fehler vermieden werden.

Einfach gesagt:

Gleiche Informationen sollen nicht unnötig mehrfach gespeichert werden.

Schlechtes Beispiel:

bestellung_idkundennamekundenemailprodukt
1Müller[email protected]Monitor
2Müller[email protected]Tastatur

Problem:

Kundendaten werden mehrfach gespeichert.

Besser:

Kunde(kunden_id, name, email)

Bestellung(bestellung_id, kunden_id)

Dann stehen die Kundendaten nur einmal in der Tabelle Kunde.


Vorgehensweise in der Prüfung

Wenn du ein relationales Datenbankmodell erstellen sollst, gehe so vor:

SchrittFrage
1Welche Entitäten gibt es?
2Welche Tabellen entstehen daraus?
3Welche Attribute werden zu Spalten?
4Was ist der Primärschlüssel jeder Tabelle?
5Gibt es eine 1:n-Beziehung?
6Wo muss der Fremdschlüssel stehen?
7Gibt es eine n:m-Beziehung?
8Welche Zwischentabelle wird benötigt?
9Welche Zusatzattribute gehören in die Zwischentabelle?

Typische IHK-Fehler

FehlerWarum problematisch?
Primärschlüssel vergessenDatensätze sind nicht eindeutig erkennbar
Fremdschlüssel auf falscher SeiteBeziehung wird falsch abgebildet
n:m ohne ZwischentabelleRelational unsauber
Attribute doppelt speichernführt zu Redundanz
Entität und Attribut verwechselnfalsche Tabellenstruktur
Zwischentabelle ohne FremdschlüsselVerbindung zwischen Tabellen fehlt
Kardinalität nicht beachtetfalsche Modellierung

Prüfungs-Merksätze

Tabelle = Sammlung gleichartiger Datensätze
Datensatz = eine Tabellenzeile
Attribut = Spalte
Primärschlüssel = eindeutige ID
Fremdschlüssel = Verweis auf andere Tabelle
1:n = Fremdschlüssel auf der n-Seite
n:m = Zwischentabelle nötig
ERM = fachliche Sicht
Relationales Modell = Tabellen- und Schlüssel-Sicht

Mini-Beispiel 1

Aufgabe:

Ein Kunde kann mehrere Bestellungen haben.
Eine Bestellung gehört genau zu einem Kunden.

Lösung:

Kunde(kunden_id PK, name, email)

Bestellung(bestellung_id PK, bestelldatum, kunden_id FK)

Begründung:

1:n-Beziehung.
Der Fremdschlüssel kunden_id steht auf der n-Seite, also in Bestellung.

Mini-Beispiel 2

Aufgabe:

Ein Schüler kann mehrere Kurse belegen.
Ein Kurs kann von mehreren Schülern belegt werden.

Lösung:

Schüler(schueler_id PK, vorname, nachname)

Kurs(kurs_id PK, kursname)

Belegung(schueler_id FK, kurs_id FK, anmeldedatum)

Begründung:

n:m-Beziehung.
Deshalb braucht man eine Zwischentabelle.

Mini-Beispiel 3

Aufgabe:

Eine Bestellung kann mehrere Produkte enthalten.
Ein Produkt kann in mehreren Bestellungen vorkommen.

Lösung:

Bestellung(bestellung_id PK, bestelldatum)

Produkt(produkt_id PK, bezeichnung, preis)

Bestellposition(bestellung_id FK, produkt_id FK, menge)

Begründung:

n:m-Beziehung.
Bestellposition löst die Beziehung auf und speichert zusätzlich die Menge.

Mini-Testfragen

1. Was ist eine Tabelle?

Eine Tabelle speichert gleichartige Datensätze.

Beispiel:

Kunde
Produkt
Bestellung
2. Was ist ein Datensatz?

Ein Datensatz ist eine einzelne Zeile in einer Tabelle.

Beispiel:

kunden_id = 1, name = Müller, email = [email protected]
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. Warum ist eine Zwischentabelle bei Bestellung und Produkt sinnvoll?

Weil eine Bestellung mehrere Produkte enthalten kann und ein Produkt in mehreren Bestellungen vorkommen kann.

Außerdem können Zusatzinformationen gespeichert werden:

menge
einzelpreis
rabatt

Diese gehören zur Verbindung zwischen Bestellung und Produkt.

8. Was bedeutet Normalisierung ganz einfach?

Normalisierung bedeutet, Daten so zu strukturieren, dass unnötige Wiederholungen und Fehler vermieden werden.

Merksatz:

Informationen möglichst nur einmal speichern.

Nächste Seite

Danach kommt die eigene Trainer-Seite:

Relationales-Datenbankmodell-Trainer

Dort bauen wir den interaktiven Trainer mit Aufgaben zu:

Tabellen ableiten
Primärschlüssel bestimmen
Fremdschlüssel richtig platzieren
1:n-Beziehungen umsetzen
n:m-Beziehungen mit Zwischentabelle auflösen