Seite 1 von 1

Baumstruktur abfragen

Verfasst: Dienstag 28. Oktober 2008, 12:21
von zero-one
Hi ihr lieben leute,

ich habe eine Tabelle in welcher sich Daten in einer Baumstruktur befinden...
wobei jedes Node mit einem Feld parent_id an sein "Elternelement" gehaengt ist.

Nun meine Frage... kann man alle Kinder, Kindeskinder und so weiter einer speziellen Node irgendwie mit moeglichst einer SQL abfrage erhalten... so wie es sich fuer mich momentan darlegt muss man nen Haufen SQL statements raushauen um das hinzubekommen...

oder gibts da im Allgemeinen nen anderen weg wie man das ganze loesen kann/sollte ... evl. ne andere Datenbank engine?

Momentan Arbeite ich mit relationalen Datenbank engines wie MySQL, SQLite da es sich um eine Webanwendung handelt... allerdings stand ich bis jetzt noch nie vor so einem Problem...

Waehre nett wenn sich jemand dazu Aeussern koennte..

Grusse Zero-one

Verfasst: Dienstag 28. Oktober 2008, 13:11
von .robert
Speicher den Baum lieber als Nested Set.

Hab hier auch ein ganz netter Tutorial gefunden: http://www.klempert.de/nested_sets/

Verfasst: Dienstag 28. Oktober 2008, 15:26
von zero-one
ist es bei Nested Sets nicht so das dort jeder Node nur 2 Childs haben kann?
Ich braeuchte etwas wo jedes Node eine unbegrenzte Anzahl Childs enthalten kann...

Gruessle

Verfasst: Dienstag 28. Oktober 2008, 15:32
von mkesper
Klingt für nach einer hierarchischen Datenstruktur wie z.B. XML.

Verfasst: Dienstag 28. Oktober 2008, 15:42
von Leonidas
Siehe auch XML-Datenbanken in der Wikipedia.

Verfasst: Dienstag 28. Oktober 2008, 15:45
von zero-one
Naja dort ist bei Nachteilen Performance aufgefuehrt... hat schon mal jemand hier was damit gemacht?

Wie verhalten sich die XML-Datenbanken bei groesseren Datenmengen... XML produziert da ja schon bissle was an Overhead...

Verfasst: Dienstag 28. Oktober 2008, 16:48
von derdon
Hier noch ein toller Link von der MySQL-Doku: Managing Hierarchical Data in MySQL

Verfasst: Dienstag 28. Oktober 2008, 16:54
von .robert
zero-one hat geschrieben:ist es bei Nested Sets nicht so das dort jeder Node nur 2 Childs haben kann?
Nein, jeder Node kann beliebig viele Kinder haben

Verfasst: Mittwoch 29. Oktober 2008, 09:23
von sma
zero-one hat geschrieben:Naja dort ist bei Nachteilen Performance aufgefuehrt... hat schon mal jemand hier was damit gemacht?

Wie verhalten sich die XML-Datenbanken bei groesseren Datenmengen... XML produziert da ja schon bissle was an Overhead...
Du darfst nicht die textuelle Repräsentation mit dem logischen XML-InfoSet verwechseln. Niemand zwingt den Anbieter einer XML-Datenbank, die Daten in textueller Form zu verwalten. Will man jedoch XPath als Abfragesprache einsetzen (wie z.B. XQuery es macht), muss es einen DOM geben und diesen muss man traversieren können, was direkte Zugriffe über einen Index schwer oder unmöglich und damit langsamer macht.

Da aber letztlich das XML-Infoset auch nur aus Elementen mit Attributen und Text besteht, die man z.B. als Objekte in einer OO-Datenbank halten kann, könnte ich mir vorstellen, dass man da Dokumente im Terrabyte-Bereich ohne größere Probleme in einer OO-Datenbank wie Gemstone ablegen kann. Wahrscheinlich kann Oracle da aber auch mit seinem XML-Support mithalten... da kenne ich mich nicht so gut aus.

Stefan