Heiraten ist eigentlich ganz einfach. Also, jetzt so aus Sicht des Datenbankverwalters, in dessen Datenbank die Hochzeiten gespeichert werden sollen. Ein Mann, eine Frau, Hochzeitsdatum, fertig. Oder?
Naja, ein wenig komplizierter ist es schon. Beispielsweise gibt es gleichgeschlechtliche Lebensgemeinschaften. Also gut, eine Person, noch eine Person, Hochzeitsdatum, fertig. Oder?
Naja, ein klein wenig komplizierter ist es doch nicht. Beispielsweise darf sich eine Person nicht selbst heiraten. Bei Mann und Frau war das automatisch ausgeschlossen. Jetzt wird das schwierig. Also gut, ein wenig Application-Logic, fertig.
Äh ja, aber die Software soll universell eingesetzt werden. Beispielsweise bei den Mormonen in Utah. Oder in Saudi-Arabien. Da gibt es unter Umständen mehrere die miteinander verheiratet sind (auch wenn meistens nur ein Mann dabei ist). Also gut, dann wird eben die Ehe als Verbindung zwischen einer Person a (männlich/weiblich) und n Personen (ebenfalls männlich oder weiblich) definiert. Dabei dürfen die n Personen nicht Person a enthalten.
Ja gut, aber was ist wenn sich eine Person in n scheiden lässt und jemand anderes heiratet? Und ist Person x (in n) die mit Person a verheiratet ist dann gleichzeitig mit Person y (in n) verheiratet? Oder kann Person x (in n) Person y (in n) heiraten und sich dann von Person a scheiden lassen?
Oder wie? Oder was? Gay marriage: the database engineering perspective. Rein technisch natürlich. Gegen heiraten bin ich geimpft.