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
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
- Siegfried Schmidt (24.05.2009 23:06)
- Michael Schuerig (25.05.2009 02:04)
- Anonymous Poster (25.05.2009 11:07)
- Tim Landscheidt (25.05.2009 13:01)
- Anonymous Poster (25.05.2009 14:13)
- Tim Landscheidt (25.05.2009 15:17)
- Anonymous Poster (25.05.2009 15:40)
- Florian Weimer (25.05.2009 23:04)
