prev up next

Definition von Beziehungen


Ausprägung einer 1:1-Beziehung

Eine 1 : 1-Beziehung wird symmetrisch in beiden beteiligten Objekt-Typen modelliert:


class Professoren {
  attribute long  PersNr;
  ...
  relationship Raeume residiertIn;
};

class Raeume {
  attribute long  RaumNr;
  attribute short Groesse;
  ...
  relationship Professoren beherbergt;
};

Abbildung 16.4 zeigt eine mögliche Ausprägung der Beziehungen residiertIn und beherbergt.

Allerdings wird durch die gegebene Klassenspezifikation weder die Symmetrie noch die 1:1-Einschränkung garantiert. Abbildung 16.5 zeigt einen inkonsistenten Zustand des Beziehungspaars residiertIn und beherbergt.


Inkonsistenter Zustand einer Beziehung

Um Inkonsistenzen dieser Art zu vermeiden, wurde im ODMG-Objektmodell das inverse-Konstrukt integriert:


class Professoren {
  attribute long  PersNr;
  ...
  relationship Raeume residiertIn inverse Raeume::beherbergt;
};

class Raeume {
  attribute long  RaumNr;
  attribute short Groesse;
  ...
  relationship Professoren beherbergt inverse Professoren::residiertIn;
};
Damit wird sichergestellt, daß immer gilt:

p = r.beherbergt    $\displaystyle \Leftrightarrow$    r = p.residiertIn

Binäre 1:N - Beziehungen werden modelliert mit Hilfe des Mengenkonstruktors set, der im nächsten Beispiel einem Professor eine Menge von Referenzen auf Vorlesungen-Objekte zuordnet:


class Professoren {
  ...
  relationship set (Vorlesungen) liest inverse Vorlesungen::gelesenVon;
};

class Vorlesungen {
  ...
  relationship Professoren gelesenVon inverse Professoren::liest;
};
Man beachte, daß im relationalen Modell die Einführung eines Attributs liest im Entity-Typ Professoren die Verletzung der 3. Normalform verursacht hätte.

Binäre N:M - Beziehungen werden unter Verwendung von zwei set-Konstruktoren modelliert:


class Studenten {
  ...
  relationship set (Vorlesungen) hoert inverse Vorlesungen::Hoerer;
};

class Vorlesungen {
  ...
  relationship set (Studenten) Hoerer inverse Studenten::hoert;
};

Durch die inverse-Spezifikation wird sichergestellt, daß gilt:

s $\displaystyle \in$ v.Hoerer    $\displaystyle \Leftrightarrow$    v $\displaystyle \in$ s.hoert

Analog lassen sich rekursive N : M - Beziehungen beschreiben:


class Vorlesungen {
  ...
  relationship set (Vorlesungen) Vorgaenger inverse Vorlesungen::Nachfolger;
  relationship set (Vorlesungen) Nachfolger inverse Vorlesungen::Vorgaenger;
};


Modellierungen von Beziehungen im Objektmodell

Ternäre oder n$ \ge$3 stellige Beziehungen benötigen einen eigenständigen Objekttyp, der die Beziehung repräsentiert. Zum Beispiel wird die ternäre Beziehung

pruefen : {[ MatrNr, VorlNr, PersNr, Note ]}
zwischen den Studenten, Vorlesungen und Professoren wie folgt modelliert:

class Pruefungen {
  attribute    float       Note;
  relationship Professoren Pruefer   inverse Professoren::hatgeprueft;
  relationship Studenten   Pruefling inverse Studenten::wurdegeprueft;
  relationship Vorlesungen Inhalt    inverse Vorlesungen::wurdeAbgeprueft;
};

class Professoren {
  attribute    long             PersNr;
  attribute    string           Name;
  attribute    string           Rang;
  relationship Raeume           residiertIn inverse Raeume::beherbergt; 
  relationship set(Vorlesungen) liest       inverse Vorlesungen::gelesenVon; 
  relationship set(Pruefungen)  hatgeprueft inverse Pruefungen::Pruefer;
};

class Vorlesungen {
  attribute    long             VorlNr;
  attribute    string           Titel;
  attribute    short            SWS; 
  relationship Professoren      gelesenVon inverse Professoren::liest; 
  relationship set(Studenten)   Hoerer     inverse Studenten::hoert;        
  relationship set(Vorlesungen) Nachfolger inverse Vorlesungen::Vorgaenger;
  relationship set(Vorlesungen) Vorgaenger inverse Vorlesungen::Nachfolger;
  relationship set(Pruefungen)  wurdeAbgeprueft inverse Pruefungen::Inhalt;
};

class Studenten {
  attribute    long             MatrNr;
  attribute    string           Name;
  attribute    short            Semester;
  relationship set(Pruefungen)  wurdeGeprueft inverse Pruefungen::Pruefling;
  relationship set(Vorlesungen) hoert         inverse Vorlesungen::Hoerer; 
};
Abbildung 16.6 visualisiert die bislang eingeführten Beziehungen. Die Anzahl der Pfeilspitzen gibt die Wertigkeit der Beziehung an:
$ \leftrightarrow$ bezeichnet eine 1 : 1-Beziehung $ \leftrightarrow$   $ \rightarrow$ bezeichnet eine 1 : N-Beziehung
$ \leftarrow$   $ \leftrightarrow$ bezeichnet eine N : 1-Beziehung $ \leftarrow$   $ \leftrightarrow$   $ \rightarrow$ bezeichnet eine N : M-Beziehung

prev up next