nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Symmetrische Assoziationen: "verheiratet mit"

Von: Michael Schuerig (michael@schuerig.de) [Profil]
Datum: 24.05.2009 01:15
Message-ID: <gva022$ne6$1@newsreader2.netcologne.de>
Followup-to: de.comp.datenbanken.misc
Newsgroup: de.comp.datenbanken.misc
Ich brauche eine symmetrische Assoziation zwischen zwei Objekten. Das
klassische Beispiel dafür ist anscheinend die "verheiratet mit"-
Beziehung. Nun fällt mir dazu nicht eine Möglichkeit ein,
sondern gleich
mehrere.

CREATE TABLE verheiratet (
person1 pk NOT NULL,
person2 pk NOT NULL,
CHECK (person1 <> person2)
);
CREATE UNIQUE INDEX index_verheiratet1
ON verheiratet (person1, person2);

Die prozedurale Variante: Vor einem Insert wird mit einem Trigger
geprüft, ob es die "gespiegelte" Zeile in verheiratet schon gibt
und in
diesem Fall ein Fehler signalisiert. Für Queries gibt es einen View, der
alle Zeilen in normaler und gespiegelter Richtung enthält.

Die redundante Variante: Insert, Delete, Update auf verheiratet werden
durch Trigger/Regeln so umgeschrieben, dass sie zusätzlich eine
gespiegelte Zeile einfügen/löschen/ändern.

Die Ordnungsvariante: verheiratet ist ein aktualisierbarer View, normal
+ gespiegelt, über einer Tabelle, in die Zeilen immer so
eingefügt
werden, dass person1 < person2.

Mir gefällt die letzte Variante am besten, ich habe aber mit keiner
davon praktische Erfahrung. Gibt es noch weitere Varianten? Wie kann man
sie bewerten?

Michael

--
Michael Schuerig
mailto:michael@schuerig.de
http://www.schuerig.de/michael/


[ Auf dieses Posting antworten ]

Antworten