prev up next

Verfeinerung des relationalen Schemas

Das im Initialentwurf erzeugte relationale Schema läßt sich verfeinern, indem einige der 1 : 1-, 1 : N- oder N : 1-Beziehungen eliminiert werden. Dabei dürfen nur Relationen mit gleichem Schlüssel zusammengefaßt werden.

Nach dieser Regel können von den drei Relationen

Vorlesungen : {[ VorlNr : integer, Titel : string, SWS : integer] }
Professoren : {[ PersNr : integer, Name : string, Rang : string, Raum : integer] }
lesen : {[ PersNr : integer, VorlNr : integer] }

die Relationen Vorlesungen und lesen zusammengefaßt werden. Somit verbleiben im Schema

Vorlesungen : {[ VorlNr : integer, Titel : string, SWS : integer, gelesenVon : integer] }
Professoren : {[ PersNr : integer, Name : string, Rang : string, Raum : integer] }

Das Zusammenlegen von Relationen mit unterschiedlichen Schlüsseln erzeugt eine Redundanz von Teilen der gespeicherten Information. Beispielsweise speichert die (unsinnige) Relation

Professoren' : {[ PersNr, liestVorl, Name, Rang, Raum ] }

zu jeder von einem Professor gehaltenen Vorlesung seinen Namen, seinen Rang und sein Dienstzimmer:

\begin{figure}
\begin{center}
\begin{tabular}{\vert r\vert r\vert l\vert r\vert ...
...125 & 4052 & Sokrates & C4 & 226\\
\hline
\end{tabular}\end{center}\end{figure}

Bei 1 : 1-Beziehungen gibt es zwei Möglichkeiten, die ursprünglich entworfene Relation mit den beteiligten Entity-Typen zusammenzufassen.


Beispiel einer 1:1-Beziehung

Abbildung 6.2 zeigt eine mögliche Modellierung für die Unterbringung von Professoren in Räumen als 1 : 1-Beziehung. Die hierzu gehörenden Relationen heißen

Professoren : {[ PersNr, Name, Rang ] }
Räume : {[ RaumNr, Größe, Lage ] }
Dienstzimmer : {[ PersNr, RaumNr ] }

Da Professoren und Dienstzimmer denselben Schlüssel haben, kann zusammengefaßt werden zu

Professoren : {[ PersNr, Name, Rang, Raum] }
Räume : {[ RaumNr, Größe, Lage ] }

Da das Attribut RaumNr innerhalb der Relation Dienstzimmer ebenfalls einen Schlüssel bildet, könnten als Alternative auch die Relationen Dienstzimmer und Räume zusammengefaßt werden:

Professoren : {[ PersNr, Name, Rang] }
Räume : {[ RaumNr, Größe, Lage, ProfPersNr ] }

Diese Modellierung hat allerdings den Nachteil, daß viele Tupel einen sogenannten Nullwert für das Attribut ProfPersNr haben, da nur wenige Räume als Dienstzimmer von Professoren genutzt werden.

Die in Abbildung 6.1 gezeigte Generalisierung von Assistenten und Professoren zu Angestellte könnte wie folgt durch drei Relationen dargestellt werden:

Angestellte : {[ PersNr, Name] }
Professoren : {[ PersNr, Rang, Raum] }
Assistenten : {[ PersNr, Fachgebiet] }

Hierdurch wird allerdings die Information zu einem Professor, wie z.B.

[2125, Sokrates, C4, 226]

auf zwei Tupel aufgeteilt:

[2125, Sokrates] und [2125, C4, 226]

Um die vollständige Information zu erhalten, müssen diese beiden Relationen verbunden werden (Join).

Abbildung 6.3 zeigt eine Beispiel-Ausprägung der Universitäts-Datenbasis. Das zugrundeliegende Schema enthält folgende Relationen:

Studenten : {[ MatrNr : integer, Name : string, Semester : integer] }
Vorlesungen : {[ VorlNr : integer, Titel : string, SWS : integer, gelesenVon : integer] }
Professoren : {[ PersNr : integer, Name : string, Rang : string, Raum : integer] }
Assistenten : {[ PersNr : integer, Name : string, Fachgebiet : string, Boss : integer] }
hören : {[ MatNr : integer, VorlNr : integer] }
voraussetzen : {[ Vorgänger : integer, Nachfolger : integer] }
prüfen : {[ MatrNr : integer, VorlNr : integer, PersNr : integer, Note :decimal] }


Beispielausprägung der Universitäts-Datenbank


Schwacher Entity-Typ

Zur Modellierung von schwachen Entity-Typen betrachten wir Abbildung 6.4, in der mittels der Relation liegt_in der schwache Entitity-Typ Räume dem Entity-Typ Gebäude untergeordnet wurde.

Wegen der 1 : N-Beziehung zwischen Gebäude und Räume kann die Beziehung liegt_in verlagert werden in die Relation Räume:

Räume : {[ GebNr, RaumNr, Größe] }

Ein Beziehung bewohnt zwischen Professoren und Räume benötigt als Fremdschlüssel zum einen die Personalnummer des Professors und zum anderen die Kombination von Gebäude-Nummer und Raum-Nummer:

bewohnt : {[ PersNr, GebNr, RaumNr] }

Da bewohnt eine 1 : 1-Beziehung darstellt, kann sie durch einen Fremdschlüssel beim Professor realisiert werden. Ist die beim Gebäude hinterlegte Information eher gering, käme auch, wie im Universitätsschema in Abbildung 6.1 gezeigt, ein Attribut Raum bei den Professoren infrage.


prev up next