Baumstrukturen in einem RDBMS
Geizhals » Forum » Programmierung » Baumstrukturen in einem RDBMS (8 Beiträge, 134 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Baumstrukturen in einem RDBMS
21.08.2003, 21:08:38
Hallo,

Altbekanntes Problem: Man moechte eine Baumstruktur (Kategorien und Unterkategorien, ein Diskussionsforum, einen Verzeichnisbaum - was auch immer) moeglichst praktisch in einem RDBMS abbilden. Einiges habe auch schon gegoogled und gelesen, trotzdem noch fragen.

Im grossen und ganzen scheint es zwei Ansaetze zu geben:
  • Speichern mit parentID: D.h. jeder Eintrag hat eine eindeutige ID und weiters ein Attribut parentID, das auf die ID des uebergeordnetes Eintrages verweist. Eine Abfrage, in die richtige Reihenfolge wird das ganze dann mit der verwendeten Programmiersprache gebracht (Alternative dazu waere Rekursion, d.h. fuer jeden Eintrag eine eigene Abfrage => langsam). Beispiel: Threadbasiertes Forum mit PHP und MySQL.
    Vorteile:
    • Einfache, auch fuer Nicht-Informatiker zu ueberblickende DB-Struktur.
    • Einfuegen von neuen Eintraegen schnell und einfach mit einer Anfrage.
    Nachteile:
    • Braucht angeblich (lt. Google) relativ viel Speicher in der Programmiersprache.
    • Einwand von mir: Wieso sollte ich als Programmierer die ganze Sortierarbeit machen, die doch die RDBMS-Entwickler sicher viel besser koenn(t)en?
  • Nested Sets: Dabei wird fuer jeden Eintrag left und right gespeichert. (Informatiker und aehnliche werden diese Baeume wohl gut kennen und verstehen, ich tu's nicht.). Beispiel: Das 'Nested Sets' Modell - Bäume mit SQL.
    Vorteil:
    • Eine einfache Abfrage und das RDBMS liefert einem gleich das, was man haben will.
    Nachteile:
    • Fuer Laien doch schwieriger zu verstehen (d.h. es koennen auch leichter Fehler passieren..)
    • Einfuegen von neuen Eintraegen relativ aufwendig und nicht wirklich performant.


So weit so gut. Jetzt frage ich mich aber, ob man es mit einer ggf. bisschen erweiterten Methode 1 nicht auch schaffen koennte, die Daten mehr oder weniger so vom RDBMS zu bekommen, wie man sie haben will: Zusaetzlich zu ID und parentID wird ein Attribut level eingefuehrt. Da drin steht einfach, "wie tief eingerueckt" der Eintrag ist. (Da sehe ich das erste Problem: Redundanz. Oder war es Nicht-Normalisierung?)
Das zweite Problem: Ich weiss dann schon nicht weiter... - aber ich frage mich halt, ob das nicht irgendwie moeglich waere ?-)

Danke sehr fuer's Lesen...!
Gruss,
Psycho, der dafuer ist, dass der ?-) Smiley (auch) mit :-? funktioniert. Waere doch passender. Wieso denn ein froehlich dreinschauender Mund, wenn man verzweifelt-ratlos ist?
Psycho@Home
--
The only antidote to mental suffering is physical pain.  -- Karl Marx
Antworten PM Alle Chronologisch
 
Melden nicht möglich
.  Re: Baumstrukturen in einem RDBMS  (Fly am 22.08.2003, 03:47:28)
..  Re(2): Baumstrukturen in einem RDBMS  (Psychopath am 22.08.2003, 20:43:16)
.  Re: Baumstrukturen in einem RDBMS  (mIstA am 23.08.2003, 08:04:12)
.  Re: Baumstrukturen in einem RDBMS  (Psychopath am 23.08.2003, 14:31:51)
..  Re(2): Baumstrukturen in einem RDBMS  (Psychopath am 24.08.2003, 01:07:54)
...  Re(3): Baumstrukturen in einem RDBMS  (Psychopath am 24.08.2003, 01:48:14)
....  Re(4): Baumstrukturen in einem RDBMS  (mIstA am 24.08.2003, 20:13:17)
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung