Fachkonzept - Selbstreferenz
Ein "Baum" von Flüssen
Der Verlauf von Flüssen lässt sich sehr gut in der Form eines "Baumes" aufzeichnen:
Eine solche Baumstruktur kommt recht häufig in der Informatik vor. Denke z.B. an die Struktur der Verzeichnisse auf deinem Computer.
Dabei verweist ein Objekt (ein Fluss) auf ein anderes Objekt der gleichen Art (einen anderen Fluss).
Selbstreferenz
Die einfachste Methode, solche Bezüge in der Datenbank zu speichern, ist ein Verweis der Tabelle auf sich selbst.
Gibt es Beziehungen von Objekten gleicher Art untereinander (also innerhalb einer Datenbanktabelle), so kann ein Fremdschlüssel genutzt werden, der sich auf den Primärschlüssel der eigenen Tabelle bezieht. Auf diese Art können alle Arten von Beziehungen gespeichert werden, bei denen ein Objekt auf maximal ein Eltern-Objekt verweist.
Die Struktur von oben kann damit mit folgender Erweiterung der fluss
-Tabelle erreicht werden:
ZielFNR
ist dabei ein Fremdschlüssel, der sich auf das Attribut FNR
in der gleichen
Tabelle bezieht.
Selbstreferenz als Beziehungstabelle
Ähnlich wie bei "normalen" Beziehungen ergeben sich Probleme, wenn einem Objekt nicht nur ein Eltern-Objekt zugeordnet werden kann. Eine Erweiterung aus unserer Geo-Datenbank kann als Beispiel dienen:
Ein Land hat in der Regel mehrere Nachbarländer. Soll diese Tatsache in der Datenbank gespeichert werden, reicht eine "einfache" Selbstreferenz nicht mehr aus (zur Erinnerung: Listen sind in atomaren Attributen nicht erlaubt):
Als Lösung bietet sich wieder eine zusätzliche Beziehungstabelle an, die nun zwei Fremdschlüssel besitzt, die beide auf die gleiche Tabelle verweisen - also quasi eine Beziehungstabelle für die Selbstreferenz:
Da die beiden Fremdschlüssel nicht gleich lauten können, wurden die Bezeichnungen LNR1
und LNR2
gewählt, die sich beide auf das Attribut land.LNR
beziehen.
Quellen
- [1]: Moselverlauf (Ausschnitt) - Urheber: TomGonzales - Lizenz: Creative Commons BY-SA 2.0