Ich muss einen Baum erstellen, der etwa 300 Knoten enthält. Der Baum hat keine Tiefenbegrenzung. Es kann also 3 oder 15 Ebenen haben. Jeder Knoten kann eine unbegrenzte Anzahl von Kindern haben.
Die Priorität ist es, so schnell wie möglich einen vollständigen Baum / Teilbaum zu erhalten, aber ich muss manchmal auch Knoten hinzufügen oder Knoten verschieben, aber nicht so oft.
Ich möchte wissen, wie man den Baum am besten in der Datenbank speichert und wie man die Daten, wenn möglich, in PHP am besten abruft.
Sie können eine verwenden Nested-Set-Modell da es sehr effiziente Abfragen liefert. Kasse Verwalten hierarchischer Daten in MySQL und lesen Sie den genannten Abschnitt Nested-Set-Modell.
Für einige kann es schwierig sein, die verschachtelten Mengenkonzepte von zu verstehen links und rechts. Ich habe festgestellt, dass die Verwendung dieser Zahlen als Analogie für die Zeilennummern von Open/Close-Tags in einem XML-Dokument einfacher zu verstehen ist.
Nehmen Sie zum Beispiel das Datenbeispiel aus dem obigen MySQL-Link:
Wenn Sie es so sehen, kann es für einige viel einfacher sein, sich die resultierende verschachtelte Mengenhierarchie vorzustellen. Es wird auch klarer, warum dieser Ansatz die Effizienz verbessert, da er es ermöglicht, ganze Knoten auszuwählen, ohne dass mehrere Abfragen oder Verknüpfungen erforderlich sind.
Ich konnte mich nie zurechtfinden sparen hierarchische Daten, bis Sie es so einfach ausdrücken.
– Dunhamzzz
14. August 2012 um 23:13 Uhr
Up-Voting für die Zeilennummern-Analogie. Das ist erstaunlich und ich „verstehe“ es jetzt sofort!
Folgendes empfiehlt MySQL: dev.mysql.com/tech-resources/articles/hierarchical-data.html
– OMG Ponys
6. Mai 2011 um 20:09 Uhr
@OMGPonys: Dieser Link ist defekt 🙁
– hakre
7. Februar 2012 um 23:36 Uhr
@hakre: Diese Site ist eine Kopie/Einfügung von dem, was auf der MySQL-Site war: mikehillyer.com/articles/managing-hierarchical-data-in-mysql
– Marm
8. Februar 2012 um 15:48 Uhr