1.2 Entwurf

In der Entwurfsphase wird festgelegt, welche Art von Datenbank zum Einsatz kommen soll. Anschließend wird das systemunabhängige konzeptionelle Datenmodell in ein auf die gewählte Datenbankart zugeschnittenes Datenmodell (logisches Datenmodell) überführt.

Wir verwenden eine relationale Datenbank und überführen das Entity-Relationship-Modell daher in ein relationales Datenmodell (Relationenmodell). Wird eine objektorientierte, hierarchische oder netzwerkartige Datenbank verwendet, muss das konzeptionelle Datenmodell stattdessen in ein hierzu passendes logisches Datenmodell übersetzt werden.

In einer relationalen Datenbank werden die Daten in Form von Tabellen gespeichert. Das Relationenmodell beschreibt nun, welche Tabellen angelegt werden müssen, wie diese aufgebaut sind und wie sie miteinander verbunden sind.

Merke: Relationenmodell

Beispielhaft werden wir im Folgenden das Entity-Relationship-Diagramm der Fahrradvermietung (vgl. Abbildung 1-4) in ein Relationenmodell überführen.

1. Schritt der Überführung eines ERM in ein Relationenmodell: Entitätstypen

Die Attributwerte einer Entität stellen die Daten dar, die über sie gespeichert werden sollen.

Beispiel

Nehmen wir zum Beispiel den Entitätstyp Kunde und notieren für jede vorhandene Entität deren Attributwerte:

1; Max; Maier },  { Fritz; Haug; 2 },  { 3; Maier; Eva }

Abb. 1-8: Attributwerte eines Kunden jeweils in Form einer ungeordneten Liste (= Menge) dargestellt

Eine ungeordnete Darstellung der Attributwerte jeder einzelnen Entität (vgl. Abb. 1-8) erschwert es die Bedeutung der einzelnen Daten zu verstehen. Aus diesem Grund ordnen wir zunächst die Attribute eines Entitätstyps in einer bestimmten Reihenfolge an. Für die Reihenfolge gibt es keine verbindlichen Regeln, es ist jedoch üblich mit dem Primärschlüssel zu beginnen. Einmal festgelegt, müssen die Attributwerte jeder Entität in genau dieser Reihenfolge geordnet werden.

Beispiel

Im Relationenmodell wird aus dem Entitätstyp Kunde die Relation Kunde. Das Relationenschema legt den Namen der Relation und deren Attribute fest.

Kunde(ID, Vorname, Nachname)

Abb. 1-9: Relationenschema der Relation Kunde

Die Attributwerte einer Entität werden als geordnete Liste, Tupel genannt, dargestellt. Die Reihenfolge wird durch das Relationenschema vorgegeben.

( 1; Max; Maier ),  ( 2; Fritz; Haug ),  ( 3; Eva; Maier ) }

Abb. 1-10: Menge aller Tupel der Relation Kunde

Bei der Überführung eines Entity-Relationship-Modells (ERM) in ein Relationenmodell wird für jeden Entitätstyp eine Relation erstellt. Der Name einer Relation gefolgt von einer Aufzählung ihrer Attribute wird Relationenschema genannt. Das Relationenschema legt die Reihenfolge fest, in der die Attributwerte einer Entität geordnet werden müssen. Für jede Entität entsteht auf diese Weise im Relationenmodell eine geordnete Liste ihrer Attributwerte. Eine geordnete Liste von n Werten wird n-Tupel genannt.

ER-Modell Relationenmodell
Entitätstyp Relation
Entität Tupel
Attribut Attribut
Attributwert Attributwert
Abb. 1-11: Begrifflichkeiten im ER-Modell und Relationenmodell
Merke: Relation, Relationenschema und Tupel
Beispiel
img/Abb_1_12_ERM_Fahrradvermietung_Variante_ET.svg
Abb. 1-12: Entity-Relationship-Diagramm Fahrradvermietung

Jeder Entitätstyp des ER-Diagramms wird im Relationenmodell in eine Relation überführt. Jede Relation übernimmt dabei den Namen und die Attribute des jeweiligen Entitätstyps.

  • Kunde(ID, Vorname, Nachname)
  • Mietvertrag(ID, Abschlussdatum, Mietbeginn, Mietdauer)
  • Fahrradtyp(ID, Bezeichnung)
  • Fahrrad(ID, Kennung)
Abb. 1-13: Relationenschemata nach der Überführung der Entitätstypen.

In einer relationalen Datenbank werden die Daten in Form von Tabellen gespeichert. Jede Relation definiert eine Datenbanktabelle. Die Attribute der Relation werden zu den Spaltenüberschriften der Datenbanktabelle. Die Tupel der Relation werden zu den Datensätzen (Zeilen) der entsprechenden Daten­bank­tabelle.

Beispiel

Jedes der vier Relationenschemata, die wir in Abb. 1-13 formuliert haben, legt den Namen, die Spaltenüberschriften sowie die Reihenfolge der Spalten einer Datenbanktabelle fest. Die zu einer Relation gehörenden Tupel werden dann als Datenzeilen in die entsprechende Datenbanktabelle eingetragen.

  • Tabelle Kunde

    ID Vorname Nachname
    1 Max Maier
    2 ... ...
  • Tabelle Mietvertrag

    ID Abschlussdatum Mietbeginn Mietdauer
    1 2015-08-11 2015-08-12 3
    2 ... ... ...
  • Tabelle Fahrradtyp

    ID Bezeichnung
    1 Mountainbike
    2 Trekkingrad
    3 ...
  • Tabelle Fahrrad

    ID Kennung
    1 Cross#7
    2 Mark#2
    3 ...
Abb. 1-14: Datenbanktabellen nach der Überführung der Entitätstypen.

Ein Relationenschema beschreibt den Aufbau einer Datenbanktabelle. Es legt den Namen, die Spalten­über­schriften sowie die Reihenfolge der Spalten fest.

  • Relationenschema: Name ( Primärschlüssel, Attribut2, Attribut3 )

  • Datenbanktabelle: Name

    Primärschlüssel Attribut2 Attribut3 ...
    ... ... ... ...
Abb. 1-15: Struktur einer Datenbanktabelle

Die Attributwerte der Tupel werden in der Datenbanktabelle innerhalb einer Zeile in die entsprechenden Spalten verteilt. Jede Zeile bildet somit einen Datensatz.

ER-Modell Relationenmodell Relationale Datenbank
Entitätstyp Relation Tabelle
Entität Tupel Zeile bzw. Datensatz
Attribut Attribut Spaltenüberschrift
Attributwert Attributwert Wert
Abb. 1-16: Begrifflichkeiten im ER-Modell, Relationenmodell und relationaler Datenbank
Merke: Eine Relationenschema definiert den Aufbau einer Datenbanktabelle

1. Schritt der Überführung eines ERM in ein Relationenmodell: Entitätstypen

Im Relationenmodell wird für jeden Entitätstyp eine Relation angelegt. Die Relation übernimmt dabei den Namen und die Attribute des jeweiligen Entitätstyps.

Merke: Überführung der Entitätstypen

2. Schritt der Überführung eines ERM in ein Relationenmodell: 1:n bzw. 1:1-Beziehungstypen

Beispiel

In einem zweiten Schritt wählen wir alle 1:n-Beziehungstypen sowie alle Varianten mit dem Buchstaben c (c:n, 1:nc, c:nc) aus:

img/Abb_1_17_ERM_Fahrradvermietung_Variante_1n.svg
Abb. 1-17: Entity-Relationship-Diagramm Fahrradvermietung

Von den beiden derart verbundenen Entitätstypen interessiert uns der Typ, dessen Entitäten jeweils mit höchstens einer Entität des gegenüberliegenden Typs in Beziehung stehen können:

  • In unserem Beispiel steht ein Mietvertrag mit genau einem Kunden in Beziehung. Um im Relationenmodell zeigen zu können, mit welchem Kunden ein bestimmter Mietvertrag in Beziehung steht, ordnen wir diesem den Primärschlüssel des betreffenden Kunden zu. Dazu erweitern wir die Relation Mietvertrag um das Attribut Kunde_ID. Der nach oben zeigende Pfeil vor dem Attributsnamen macht deutlich, dass das Attribut den Primärschlüssel einer fremden Relation aufnimmt. Das Attribut wird daher als Fremdschlüssel bezeichnet.
  • In gleicher Weise steht ein Fahrrad mit genau einem Fahrradtyp in Beziehung. Analog ordnen wir jedem Fahrrad den Primärschlüssel seines jeweiligen Fahrradtyps zu. Dazu erweitern wir die Relation Fahrrad um das Attribut Fahrradtyp_ID.
  • Kunde(ID, Vorname, Nachname)
  • Mietvertrag(ID, Abschlussdatum, Mietbeginn, Mietdauer, ↑Kunde_ID)
  • Fahrradtyp(ID, Bezeichnung)
  • Fahrrad(ID, Kennung, ↑Fahrradtyp_ID)
Abb. 1-18: Relationenschemata nach der Überführung der 1:n-Beziehungstypen.

Die Datenbanktabellen werden entsprechend angepasst:

  • Tabelle Kunde

    ID Vorname Nachname
    1 Max Maier
    2 ... ...
  • Tabelle Mietvertrag

    ID Abschlussdatum Mietbeginn Mietdauer ↑Kunde_ID
    1 2015-08-11 2015-08-12 3 1
    2 ... ... ... ...
  • Tabelle Fahrradtyp

    ID Bezeichnung
    1 Mountainbike
    2 Trekkingrad
    3 ...
  • Tabelle Fahrrad

    ID Kennung ↑Fahrradtyp_ID
    1 Cross#7 1
    2 Mark#2 2
    3 ... ...
Abb. 1-19: Datenbanktabellen nach der Überführung der 1:n-Beziehungstypen.

Besteht zwischen zwei Entitätstypen ein 1:n-Beziehungstyp beziehungsweise eine Variante mit dem Buchstaben c (c:n, 1:nc, c:nc), wird in der Relation des Entitätstyps, der eine Beziehung zu höchstens einer Entität des gegenüberliegenden Typs vorsieht, ein zusätzliches Attribut hinzugefügt. Dieses kann nun den Primärschlüsselwert eines Tupels der aus dem gegenüberliegenden Entitätstyp abgeleiteten Relation aufnehmen und so einen Verweis zu diesem Tupel herstellen. Da das Attribut Werte aufnimmt, die in einer fremden Relation den Primärschlüssel bilden, wird es als Fremdschlüssel bezeichnet.

Ein Fremdschlüssel ist ein Attribut einer Relation, das auf einen Primärschlüssel einer anderen oder der gleichen Relation verweist.

Relationenname(Primärschlüssel, Attribut2, Attribut3, ..., ↑Fremdschlüssel)
Abb. 1-20: Beschreibung einer Relation inklusive Fremdschlüssel
Merke: Überführung der 1:n-Beziehungstypen bzw. einer Variante mit dem Buchstaben c (c:n, 1:nc, c:nc)

2. Schritt der Überführung eines ERM in ein Relationenmodell: 1:n bzw. 1:1-Beziehungstypen

Bei 1:1-Beziehungstypen beziehungsweise Varianten mit dem Buchstaben c (1:c, c:c) wird eine der aus den beiden betroffenen Entitätstypen hervorgegangen Relationen um ein Attribut erweitert. Dieses dient als Fremdschlüssel und kann Werte aufnehmen, die in der anderen Relation als Primärschlüssel dienen. Auf diese Weise kann dem Tupel mit dem Fremdschlüssel ein Tupel der anderen Relation zugeordnet werden.

Wird bei einem 1:c-Beziehungstyp die Relation um einen Fremdschlüssel erweitert, deren Tupel stets mit genau einem Tupel der anderen Relation verbunden sind, gibt es in der Relation mit dem Fremdschlüssel keine Tupel ohne Fremdschlüsselwert.
Würde stattdessen die Relation um einen Fremdschlüssel erweitert, deren Tupel mit keinem oder einem Tupel der anderen Relation verbunden sind, würden deren Tupel, die mit keinem Tupel der anderen Relation in Verbindung stehen, im Fremdschlüsselattribut keinen Wert besitzen.

Merke: Überführung der 1:1-Beziehungstypen bzw. einer Variante mit dem Buchstaben c (1:c, c:c)

Referenzielle Integrität liegt vor, wenn für jeden Fremdschlüsselwert, in der Relation (Datenbanktabelle), auf die verwiesen wird, ein Tupel (Datensatz) existiert, das diesen Wert als Primärschlüssel besitzt.

Merke: Referenzielle Integrität

3. Schritt der Überführung eines ERM in ein Relationenmodell: n:m-Beziehungstypen

Beispiel

Abschließend wählen wir alle n:m-Beziehungstypen sowie alle Varianten mit dem Buchstaben c (nc:m, n:mc, nc:mc) aus:

img/Abb_1_21_ERM_Fahrradvermietung_Variante_nm.svg
Abb. 1-21: Entity-Relationship-Diagramm Fahrradvermietung

In unserem Beispiel steht ein Mietvertrag mit einem oder mehreren Fahrrädern in Beziehung. Ungekehrt kann ein Fahrrad mit keinem, einem oder mehreren Mietverträgen in Beziehung stehen. Um diesen Beziehungstyp im Relationenmodell abbilden zu können, nehmen wir die Primärschlüsssel der betroffenen Fahrräder und ordnen diesen jeweils den Primärschlüssel des Mietvertrags zu.

Auf diese Weise entsteht eine neue Relation mit zwei Attributen. Ein Attribut kann Primärschlüssel des Entitätstyps Mietvertrag aufnehmen und das zweite Primärschlüssel des Entitätstyps Fahrrad. Beide Attribute haben die Funktion eines Fremdschlüssels. Gleichzeitig bilden sie zusammen den Primärschlüssel der neuen Relation.

  • Kunde(ID, Vorname, Nachname)
  • Mietvertrag(ID, Abschlussdatum, Mietbeginn, Mietdauer, ↑Kunde_ID)
  • Fahrradtyp(ID, Bezeichnung)
  • Fahrrad(ID, Kennung, ↑Fahrradtyp_ID)
  • Mietvertrag_vermietet_Fahrrad(Mietvertrag_ID, Fahrrad_ID)
Abb. 1-22: Relationen nach der Überführung der n:m-Beziehungstypen.

Die neue Relation definiert eine weitere Datenbanktabelle:

  • Tabelle Kunde

    ID Vorname Nachname
    1 Max Maier
    2 ... ...
  • Tabelle Mietvertrag

    ID Abschlussdatum Mietbeginn Mietdauer ↑Kunde_ID
    1 2015-08-11 2015-08-12 3 1
    2 ... ... ... ...
  • Tabelle Fahrradtyp

    ID Bezeichnung
    1 Mountainbike
    2 Trekkingrad
    3 ...
  • Tabelle Fahrrad

    ID Kennung ↑Fahrradtyp_ID
    1 Cross#7 1
    2 Mark#2 2
    3 ... ...
  • Tabelle Mietvertrag_vermietet_Fahrrad

    Mietvertrag_ID Fahrrad_ID
    1 1
    1 2
    2 ...
Abb. 1-23: Datenbanktabellen nach der Überführung der n:m-Beziehungstypen.

3. Schritt der Überführung eines ERM in ein Relationenmodell: n:m-Beziehungstypen

Besteht zwischen zwei Entitätstypen ein n:m-Beziehungstyp beziehungsweise eine Variante mit dem Buchstaben c (nc:m, n:mc, nc:mc), wird eine neue Relation angelegt. Diese besteht aus zwei Attributen – den Primärschlüsseln der aus den beiden verbundenen Entitätstypen hervorgegangenen Relationen. Beide Attribute bilden zusammen den Primärschlüssel der neuen Relation. Gleichzeitig fungiert jedes der beiden Attribute als Fremdschlüssel.

Entitätstyp1_Beziehungstyp_Entitätstyp2(↑Primärschlüssel_Entitätstyp1, ↑Primärschlüssel_Entitätstyp2)
Abb. 1-24: Abbildung eines n:m-Beziehungstyps im Relationenmodell.
Merke: Überführung der n:m-Beziehungstypen beziehungsweise einer Variante mit dem Buchstaben c (nc:m, n:mc, nc:mc)
Aufgabe

Aufgabe 1-2: Fuhrpark

Überführen Sie das folgende Entity-Relationship-Diagramm in ein relationales Datenmodell:

img/Abb_1_25_ERM_Fuhrpark_v2.svg
Abb. 1-25: Entity-Relationship-Diagramm Fuhrpark
Lösung
Lösung
  • Fahrzeugmodell(ID, Bezeichnung, Hersteller, Kraftstoff, Verbrauch)
  • Fahrzeug(ID, Kennzeichen, Anschaffungsdatum, Anschaffungskosten, ↑Fahrzeugmodell_ID)
  • Mitarbeiter(ID, PersNr, Vorname, Nachname)
  • Reservierung(ID, Zweck, Beginn, Ende, ↑Mitarbeiter_ID, ↑Fahrzeug_ID)
  • Mitarbeiter_faehrt_mit_Reservierung(↑Mitarbeiter_ID, ↑Reservierung_ID)
  • Instandhaltung(ID, Datum, KmStand, Kosten, Beschreibung, ↑Fahrzeug_ID)
  • Versicherungsgesellschaft(ID, Firma, Telefon, Strasse, HNr, Plz, Ort)
  • Versicherungsvertrag(ID, VersNr, Kasko, Beitrag, ↑Fahrzeug_ID, ↑Versicherungsgesellschaft_ID)
Abb. 1-26: Relationales Datenmodell Fuhrpark.