window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Rekursive Tabellen

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Ihr Kumpel, der Gemeinderat, kommt auf die geniale Idee, für alle Bewohner des Dorfes einen Stammbaum anzulegen, und betreut Sie als Programmierer mit der Aufgabe, diese in einer Datenbank anzulegen, um das anschließend zu Papier bringen zu können. Das kann kein so kompliziertes Unterfangen sein, denken Sie, und machen sich frohgemut an die Arbeit. Das Datenmodell ist der erste Schritt, der zu bewältigen ist…

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1509_RekursiveTabellen.accdb

Eltern, Kinder, Enkel im Datenmodell

Es scheint gar nicht schwer zu sein. Es muss einfach eine Tabelle für die Eltern her, die einen Primärschlüssel aufweist. Dann eine für die Kinder, in der die Datensätze über einen Fremdschlüssel ElterID auf die Datensätze der Eltern verweisen. Und schließlich gibt es noch Enkel, deren Tabelle ähnlich aufgebaut ist, wie die der Kinder. Im Ergebnis erhalten Sie das Beziehungslayout aus Bild 1. Die Tabellen sind über Referenzielle Integrität eindeutig miteinander verknüpft, jeweils Indizes auf das Feld ElterID gelegt, und die eigentlichen Einträge der Daten bestehen aus dem Feld Person für den Namen der Bürgers und dem Feld mw, welches sein Geschlecht wiedergeben soll. Flux die Daten aus der Excel-Grundlage in die Tabellen eingepflegt, und schon lässt sich dank der automatischen Unterdatenblätter von Access – ein Feature, welches hier wirklich einmal sinnvoll zum Einsatz kommt – ein Baum ausklappen, wie in Bild 2. Spätestens hier kommen Ihnen Bedenken wegen der etwaigen Urenkel oder gar noch weiterer Abkömmlinge. Sollten noch weitere Tabellen für diese angelegt werden Und wie sieht es später mit der Auswertung dieser Struktur aus Werden die dafür benötigten Abfragen da nicht recht umfangreich und unübersichtlich

Der erste Enwurf des Datenmodells für die Stammbaumdatenbank mit allen Tabellen und deren Beziehungen

Bild 1: Der erste Enwurf des Datenmodells für die Stammbaumdatenbank mit allen Tabellen und deren Beziehungen

Nach dem öffnen der Tabelle tblEltern lassen sich die automatisch generierten Unterdatenblätter mit den Kindern und Enkeln ausklappen

Bild 2: Nach dem öffnen der Tabelle tblEltern lassen sich die automatisch generierten Unterdatenblätter mit den Kindern und Enkeln ausklappen

Es geht natürlich auch anders! Sie kommen tatsächlich mit nur einer einzigen Tabelle aus, in der rekursiv eine Beziehung zwischen den Datensätzen für Eltern und Kinder hergestellt wird

Rekursive Tabellen

Das Grundprinzip ist ganz einfach. Eine rekursive Tabelle muss einen Primärschlüssel aufweisen, der jeden Datensatz eindeutig identifiziert. Und zusätzlich ein weiteres indiziertes Feld, welches als Fremdschlüsselverweis für den Primärschlüssel dient. Dazu kommen dann die eigentlichen Inhalte der Tabelle. In Bild 3 ist das für die Tabelle tblElternKind realisiert. Die ID ist als Primärschlüssel vom Typ Autowert. ParentID vom Typ Long enthält dann jeweils einen Wert, der auf einen anderen Datensatz mit dieser ID verweist. Person und mw sind die eigentlichen Inhalte der Tabelle. Ingbert in Datensatz 7 hat die ParentID 60, was besagt, dass sein Elter weiter unten im Datensatz mit eben dieser ID 60 zu finden ist. Das wäre dann, außerhalb des in Bild 3 sichtbaren Bereichs, Günter. Scrollen Sie zu Günter, so kann es sein, dass dieser ebenfalls eine ParentID enthält, mithin also etwa ein Kind von Klara wäre, und somit Ingbert ein Enkel von Klara. Tatsächlich ist aber das Feld ParentID von Günter leer, was besagt, dass in der Datenbank kein Elter von ihm verzeichnet ist. Günter wäre ein Root-Datensatz der rekursiven Tabelle.

Die Eltern-Kind-Tabelle in Datenblattansicht mit dem Verweisfeld ParentID

Bild 3: Die Eltern-Kind-Tabelle in Datenblattansicht mit dem Verweisfeld ParentID

Mehr gibt es dazu eigentlich nicht zu sagen. Immer dann, wenn Datensätze hierarchisch voneinander abhängen und die Zahl der Kindelemente, also der Unterebenen, nicht bekannt ist, kommt so eine rekursive Struktur infrage.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar