Entwurf von Datenbanken

Der Aufbau einer Datenbank beginnt mit dem Entwurf eines Datenmodells, in dem der betrachtete Ausschnitt der realen Welt (die Miniwelt) möglichst exakt abgebildet wird.

Objekttypen

Beim Betrachten dieser Miniwelt erkennt man gewisse Objekte (so genannte Entitäten/Entities) mit gewissen Merkmalen (Attributen), z.B. Herrn Müller mit dem Vornamen Franz und einen roten VW Polo mit dem Kennzeichen HH - J 1276.

Im Datenmodell werden nun zunächst die Attribute gleichartiger Objekte, z.B. Nachname, Vorname, Geschlecht, Geburtsdatum von Personen, ermittelt und aufgeschrieben. Auf diese Weise wird der Objekttyp (Entitytyp) PERSON oder KFZ festgelegt, also z.B.

PERSON (NACHNAME, VORNAME, GESCHLECHT, GEBURTSTAG)

KFZ (KENNZEICHEN, MARKE, MODELL, FARBE)

Für die Objekte Müller und Polo könnten dann konkret die Merkmale

(Müller, Franz, m,12.07.1956)

(HH - J 1276, VW, Polo, rot)

eingetragen werden.

Die Attribute sollen ein bestimmtes Objekt nicht nur beschreiben (charakterisieren), sondern es auch von anderen Objekten unterscheiden (also identifizieren). Eine Identifikation ist anhand des Kfz-Kennzeichens sicher möglich. Der Nachname wird dagegen in den meisten Fällen nicht eindeutig sein. Vielleicht kommt aber die Attributkombination NACHNAME, VORNAME höchstens einmal vor. Ganz sicher ist nur die Vergabe einer Personennummer, wie wir es vom Personalausweis kennen.

PERSON (NUMMER, NACHNAME, VORNAME, GESCHLECHT, GEBURTSTAG)

Ein eindeutige Attribut heißt Primärschlüssel, eine eindeutige Attributkombination (etwa NACHNAME, VORNAME) heißt zusammengesetzter Primärschlüssel. Der Schlüssel wird im Objekttyp durch Unterstreichen gekennzeichnet.

Die Aufgabenstellung kann erfordern, dass Personen in unterschiedlichen Objekttypen dargestellt werden müssen. Zum Beispiel haben Lehrer und Schüler sicher gemeinsame Merkmale, aber eben auch unterschiedliche, und bei Kraftfahrzeugen kann eine Unterscheidung zwischen Pkw und Lkw sinnvoll sein.

Es gibt also keinen immer gültigen Ansatz. Jede neue Problemstellung erfordert eine erneute Analyse der realen Welt und die Festlegung einer Miniwelt, die dann durch Objekttypen beschrieben wird.

Begriffe

Einige Begriffe werden anhand eines Beispiels eingeführt:

Domäne (Wertebereich): Menge erlaubter Attributwerte; z.B. Wochentage Mo, Di, ..., Sa, So.

Beziehungstypen

Zwischen den Objekten kann eine Beziehung bestehen, die einen bestimmten Ablauf oder eine Abhängigkeit darstellt. Zum Beispiel unterrichtet ein Lehrer an einer Schule. Man könnte aber genauer sagen: Ein Lehrer unterrichtet an genau einer Schule. Oder ist es so: Ein Lehrer unterrichtet an mindestens einer Schule?. Umgekehrt wissen wir, eine Schule beschäftigt mindestens einen Lehrer.

Folgende Unterscheidungen sind sinnvoll (conditional, multiple):

Typ n Aussage
1 =1 Ein Lehrer unterrichtet an genau einer Schule.
c ≤1 Ein Lehrer unterrichtet an höchstens einer Schule (keiner oder genau einer).
m >0 Ein Lehrer unterrichtet bestimmt an einer Schule (an mindestes einer / einer oder mehreren).
mc ≥0 Ein Lehrer unterrichtet vielleicht an einer Schule (keiner, einer oder mehreren).

Auch in entgegengesetzter Richtung sind 4 Verbindungtypen möglich.

Typ n Aussage
1 =1 An einer Schule unterrichtet genau ein Lehrer.
c ≤1 An einer Schule unterrichtet höchstens ein Lehrer (keiner oder genau einer).
m >0 An einer Schule unterricht bestimmt ein Lehrer (mindestens ein, einer oder mehrere).
mc ≥0 An einer Schule unterrichtet vielleicht ein Lehrer (keiner, einer oder mehrere).

Nicht gesagt ist, ob eine dieser Beziehungen überhaupt existiert.

Betrachtet man die Beziehung zwischen zwei Objekte, ergeben sich theoretisch 4·4 = 16 Möglichkeiten:

1:m kann zum Beispiel beschreiben, dass jeder Mathematiklehrer mehrere Schüler unterrichtet, umgekehrt aber jeder Schüler genau einen Mathematiklehrer hat.


In den folgenden Beispielen betrachten wir die Lehrer und Schüler einer Schule und die Autos auf dem Schulparkplatz und führen folgende Objekttypen ein:

LEHRER (KUERZEL, NAME)
SCHUELER (NUMMER, NAME)
AUTO (KENNZ, FABRIKAT, MARKE)

1:1 - Beziehung

Jeder Entity des ersten Entitytyps hat genau ein Gegenüber im zweiten Entitytyp und umgekehrt.

Beispiel: Nur Lehrer parken auf dem Schulparkplatz.

Elementaraussagen:

Ein LEHRER parkt genau ein AUTO.
Ein AUTO wird von genau einem LEHRER geparkt.

Miniwelt

Datenschema

Tabelle

Die Tabellen LEHRER und AUTO werden zusammengefasst, wobei der Primärschlüssel einer Tabelle beibehalten wird. Der Primärschlüssel der anderen Tabelle ist ein zweiter Schlüsselkandidat.

LEHRERAUTO (KUERZEL, NAME, KENNZ, FABRIKAT, MARKE)

1:c - Beziehung

Jeder Entity des ersten Entitytyps hat höchstens ein Gegenüber im zweiten Entitytyp, aber jedes Entity des zweiten Entitytyps hat genau ein Gegenüber im ersten.

Beispiel: Nur einige Lehrer parken auf dem Schulparkplatz.

Elementaraussagen:

Ein LEHRER parkt vielleicht ein AUTO (höchstens ein / kein oder genau ein).
Ein AUTO wird von genau einem LEHRER geparkt.

Miniwelt

Datenschema

Tabellen

In der Tabelle AUTO wird der Primärschlüssel aus der Tabelle LEHRER festgehalten, der eine eindeutige Zuordnung des parkenden Lehrers liefert. Die Tabelle LEHRER bleibt unverändert.

LEHRER (KUERZEL, NAME)
AUTO (KENNZ, FABRIKAT, MARKE, KUERZEL)

Eine c:1 - Beziehung besitzt - spiegelbildlich - dieselbe Struktur.

c:c - Beziehung

Jeder Entity des ersten Entitytyps hat höchstens ein Gegenüber im zweiten Entitytyp, umgekehrt genauso.

Beispiel: Einige Lehrer und auch andere Leute parken auf dem Schulparkplatz.

Elementaraussagen:

Ein LEHRER parkt vielleicht ein AUTO (höchstens ein / kein oder genau ein).
Ein AUTO wurde vielleicht von einem Lehrer geparkt (keinem oder genau einem / höchstens einem).

Miniwelt

Datenschema

Diese Beziehung wird in zwei eindeutige Beziehungen aufgespalten:

Tabellen

Es wird eine zusätzliche Tabelle eingeführt, die die Primärschlüssel der beobachteten Objekt-Paare erfasst. Die vorhandenen Tabellen bleiben unverändert.

LEHRER (KUERZEL, NAME)
AUTO (KENNZ, FABRIKAT, MARKE)
LEHRERAUTO (KUERZEL, KENNZ)

1:m - Beziehung

Jeder Entity des ersten Entitytyps hat mindestens ein Gegenüber im zweiten Entitytyp, und jedes Entity des zweiten Entitytyps hat genau ein Gegenüber im ersten.

Beispiel: Jeder Lehrer betreut Schüler. Jeder Schüler wird von genau einem Lehrer betreut.

Elementaraussagen:

Ein LEHRER betreut bestimmt SCHUELER (mindestens einen).
Ein SCHUELER wird von genau einem LEHRER betreut.

Miniwelt

Datenschema

Tabellen

In der Tabelle SCHUELER wird der Primärschlüssel der Tabelle LEHRER festgehalten, der eine eindeutige Zuordnung ermöglicht. Die Tabelle LEHRER bleibt unverändert.

LEHRER (KUERZEL, NAME)
SCHUELER (NUMMER, NAME, KUERZEL)

Entsprechend spiegelbildlich wird eine m:1 - Beziehung gestaltet.

1:mc - Beziehung

Entities des ersten Entitytyps (aber nicht unbedingt alle) haben ein oder mehrere Gegenüber im zweiten Entitytyp, und jedes Entity des zweiten Entitytyps hat genau ein Gegenüber im ersten.

Beispiel: Nicht alle Lehrer betreuen Schüler. Jeder Schüler wird vom einemn Lehrer betreut. Es gibt vielleicht Lehrer, die keinen Schüler betreuen.

Elementaraussagen:

Ein LEHRER betreut vielleicht SCHUELER (keinen, einen oder mehrere).
Ein SCHUELER wird von genau einem LEHRER betreut.

Miniwelt

Datenschema

Tabellen

Eine 1:mc - Beziehung besitzt dieselbe Struktur wie eine 1:m - Beziehung, nur kann es sein, dass in der Tabelle SCHUELER einige der Tabelle LEHRER nicht aufgeführt werden.

LEHRER (KUERZEL, NAME)
SCHUELER (NUMMER, NAME, KUERZEL)

Entsprechend spiegelbildlich wird eine mc:1- Beziehung gestaltet.

c:m - Beziehung

Jeder Entity des ersten Entitytyps hat mindestens ein Gegenüber im zweiten Entitytyp, umgekehrt hat jedes Entity des zweiten Entitytyps höchstens ein Gegenüber im ersten.

Beispiel: Alle Lehrer betreuen Schüler. Es gibt aber vielleicht Schüler, die keinen Betreuer haben.

Elementaraussagen:

Ein LEHRER betreut bestimmt SCHUELER (mindestens einen).
Ein SCHUELER wird von höchstens einem einem LEHRER betreut.

Miniwelt

Datenschema

Diese Beziehung wird in zwei eindeutige Beziehungen aufgespalten:

Tabellen

Es wird also eine zusätzliche Tabelle eingeführt, die die Primärschlüssel der beobachteten Paare erfasst. Die vorhandenen Tabellen bleiben unverändert.

LEHRER (KUERZEL, NAME)
SCHUELER (NUMMER, NAME)
LEHRERSCHUELER (KUERZEL, NUMMER)

Entsprechend spiegelbildlich wird eine m:c - Beziehung gestaltet.

c:mc - Beziehung

Beispiel: Lehrer betreuen Schüler. Nicht unbedingt alle Lehrer, nicht unbedingt alle Schüler.

Elementaraussagen:

Ein LEHRER betreut vielleicht einen SCHUELER.
Ein SCHUELER wird von höchstens einem einem LEHRER betreut.

Eine c:mc - Beziehung besitzt dieselbe Struktur wie eine c:m - Beziehung, nur kann es dann sein, dass in der Tabelle SCHUELER einige Lehrer nicht aufgeführt werden.

m:m - Beziehung

Jeder Entity des ersten Entitytyps hat mindestens ein Gegenüber im zweiten Entitytyp, umgekehrt hat jedes Entity des zweiten Entitytyps mindestens ein Gegenüber im ersten.

Beispiel: Jeder Lehrer betreut Schüler, jeder Schüler wird von einem Lehrer betreut.

Elementaraussagen:

Ein LEHRER betreut bestimmt SCHUELER (mindestens einen).
Ein SCHUELER wird bestimmt von einem LEHRER betreut (mindestens einem).

Miniwelt

Datenschema

Diese Beziehung wird in zwei eindeutige Beziehungen aufgespalten:

Tabellen

Es wird eine zusätzliche Tabelle eingeführt, die die Primärschlüssel der beobachteten Paare erfasst. Die vorhandenen Tabellen bleiben unverändert.

LEHRER (KUERZEL, NAME)
SCHUELER (NUMMER, NAME)
LEHRERSCHUELER (KUERZEL, KUERZEL)

Entsprechend spiegelbildlich werden eine mc:m - Beziehung und eine mc:mc- Beziehung gestaltet.

m:mc - Beziehung

Eine m:mc - Beziehung besitzt dieselbe Struktur wie eine m:m - Beziehung, nur kann es dann sein, dass in der Tabelle SCHUELER einige Lehrer nicht aufgeführt werden.