Hierarchien in SQL speichern und durchlaufen
Das Modellieren und Abrufen hierarchischer Informationen in Datenbanken ist für viele Anwendungen von entscheidender Bedeutung. Eine beliebte Methode ist der Modified Preorder Traversal Algorithm (MPTT).
MPTT-Algorithmus
MPTT organisiert hierarchische Daten in einer einzigen Tabelle mit drei Spalten pro Knoten:
-
ID: Die eindeutige Kennung des Knotens.
-
Links: Index des Knotens ganz links im Knotenteilbaum.
-
Rechts: Der Index des Knotens ganz rechts im Knotenteilbaum.
In Baum einfügen
Um einen neuen untergeordneten Knoten in den Baum einzufügen, benötigen wir:
- Finden Sie den richtigen Wert des übergeordneten Knotens.
- Setzt den Right-Wert des untergeordneten Knotens auf den Right-Wert 1 des übergeordneten Knotens.
- Setzt den Right-Wert des übergeordneten Knotens auf Right 2 des übergeordneten Knotens.
- Setzt den linken Wert des untergeordneten Knotens auf den rechten Wert des übergeordneten Knotens – 1.
Überquere den Baum
MPTT ermöglicht eine einfache Baumdurchquerung mithilfe expliziter SQL-Abfragen:
-
Alle untergeordneten Knoten eines Knotens abrufen: SELECT * FROM table WHERE Left BETWEEN parent.Left AND parent.Right
-
Alle Nachkommen eines Knotens abrufen: SELECT * FROM table WHERE Left > parent.Left AND Right < parent.Right
- Alle Vorfahren eines Knotens abrufen: SELECT * FROM table WHERE Left < node.Left AND Right >
Andere Modellierungsmethoden
Neben MPTT gibt es weitere Methoden zum Speichern von Hierarchien:
- Adjazenzlistenmodell: Verwenden Sie zwei Tabellen zur Darstellung der Hierarchie, eine Tabelle mit Eltern-Kind-Beziehungen und die andere Tabelle mit zusätzlichen Knotendaten.
- Abbildung: Modelliert Hierarchien als durch Kanten verbundene Knoten und bietet so komplexe Verknüpfungs- und Abfrageflexibilität.
Klassenbibliothek
Verschiedene Bibliotheken vereinfachen die Arbeit mit MPTT und anderen hierarchischen Datenstrukturen in Programmiersprachen wie PHP und Java:
BIRNE::Baum-
Doktrin ORM-
Ruhezustand-
Das obige ist der detaillierte Inhalt vonWie kann der MPTT-Algorithmus hierarchische Daten in SQL effizient speichern und navigieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!