Baumstruktur auf MaxDB abbilden

Hallo,

ich habe eine Baumstruktur aus ca. 10 verschiedenen Klassen (teilweise mit zusätzlich erbenden Klassen), in der Java-GUI mit einem Swing JTree abgebildet.
Die Hierarchie ist höchstens 4-5 Ebenen tief.
Die Reihenfolge der Elemente im Baum ist wichtig.

Diesen Baum möchte ich nun in einer relationalen DB abbilden.
Dazu habe ich bisher 2 Ansätze, die mich aber beide bisher nicht überzeugen und vielleicht habt ihr andere Ideen oder vielleicht wisst ihr, wie ich den ein oder anderen Ansatz verbessern könnte.

  1. Ansatz: Ich habe eine Tabelle „Node“, die mir die Hierarchie-Struktur abbildet und eine Tabelle „Attribute“, die die Attribute der jeweiligen Knoten-Objekte beinhalten. Die Attribute-Tabelle hat dann einen Fremdschlüssel auf Tabelle „Node“. Ein Java-Objekt wird dann aus einem Node-Eintrag und den zugehörigen Attribute-Einträgen zusammengesetzt.

Vorteil: Schlanke DB-Struktur.

Nachteil: In der „Attribute“-Tabelle lassen sich nur Attribute vom Typ int, boolean, String o.ä. ablegen. Meine Baumobjekte haben jedoch als Attribute teilweise selbst wieder Objekte. Diese Attribut-Objekte sind teilweise wieder Knoten aus dem Baum oder vom Baum unabhängige Objekte. Diese Attribut-Objekte lassen sich nicht in der Attribute-Tabelle abbilden.
Des weiteren müsste Java die Hauptarbeit übernehmen, indem jeder Attribute-Eintrag auch dem richtigen Objekt-Attribut zugewiesen wird. Das hieße, ich bräuchte in meiner Geschäftslogik eine Art Mapping-Layer, der mir aus den Einträgen der beiden Tabellen jeweils immer das korrekte Objekt mit den korrekt initialisierten Attributen genriert. Wie das Ganze umgekehrt funktionieren soll, dass heißt, wie ich bei Ändern des Objekt-Zustands über die GUI die entsprechenden DB-Einträge identifizieren und updaten soll, weiß ich bisher auch nicht.

  1. Ansatz: Straight forward: Für jeden Knotentyp bilde ich eine eigene Tabelle und verknüpfe diese mit ihren entsprechenden Eltern-Knoten über einen Fremdschlüssel.

Vorteil: Ein gutes Objekt-Datenbank Mapping und intuitiver als Ansatz 1.

Nachteil: Viele Tabellen (mit einigen Zusatztabellen mind. 17).

Wie würdet ihr dieses Problem lösen und einen JTree auf die DB abbilden?
Danke im Voraus für die Hilfe,
Victor

Auch hallo.

Irgendwie kommt das bekannt vor: Nested Joins oder Graphentheorie.
Siehe auch die Debatte unter xing.com in der Gruppe „Datenbanken“ unter https://www.xing.com/app/forum?op=showarticles&id=33…
Aber ob Swing wirklich die performanteste Lösung zur Darstellung ist …?

HTH
mfg M.L.

Irgendwie kommt das bekannt vor: Nested Joins oder
Graphentheorie.
Siehe auch die Debatte unter xing.com in der Gruppe
„Datenbanken“ unter
https://www.xing.com/app/forum?op=showarticles&id=33…

Die dort beschriebenen Probleme, vor allem das Nested Set-Modell, beziehen sich auf Baumstrukturen, die nur oder fast ausschließlich gelesen werden. Mein Baum unterzieht sich jedoch teils größeren Veränderungen. Die beschriebene DB-Struktur muss zudem nicht einen Baum, sondern beliebige viele Bäume mit gleichen Elementen, nur in unterschiedlicher Zusammensetzung verwalten.

Hatte ich beides leider vergessen zu erwähnen.
Danke jedoch für den Hinweis und den Link. Werd mich da jetz nochmal weiter einlesen.

Gruß,
Victor