📚 LernsiteFach wählenKOLEFINAQUBAETFÜDIMAINFEINKMAEL ↗

🗃️ Datenbanken — relationales Datenmodell (PS · FS · Kardinalitäten)

INF — Informatik (Python & Datenbanken) · Prof. Dr. Mehler · ~10 Aufgaben · Python + relationale Datenmodelle

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!
Kunde KundeID · Name Auftrag AuftragID · KundeID (FS) 1 n
Bei 1 : n wandert der Fremdschlüssel in die n-Seite. Ein Kunde hat viele Aufträge, aber jeder Auftrag gehört genau einem Kunden. Deshalb steht KundeID (FS) in der Auftrags-Tabelle. Faustregel: FS und n stehen immer auf derselben Seite.

Das Kochrezept: vom Aufgabentext zum Modell

  1. Substantive markieren → das werden die Tabellen.
  2. Jede Tabelle bekommt einen PS <Name>ID (unterstreichen) + die genannten Attribute.
  3. Jeden Beziehungssatz beidseitig fragen: „ein A hat wie viele B?“ und „ein B hat wie viele A?“.
  4. 1:n auflösen: FS kommt in die n-Seite.
  5. n:m auflösen: neue Zuordnungstabelle mit beiden FS; die beiden zusammen sind der zusammengesetzte PS (beide unterstreichen).
  6. 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.
💡 Wo steht die 1, wo das n?

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.

⚠️ Punktekiller
  • 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.