Nähe Liste Modell vs Nested-Set-Modell für MySQL hierarchische Daten?
Gibt es zwei Möglichkeiten, um die Arbeit mit der Hierarchie-Daten in MySQL:
- Angrenzens Liste Modell
- Nested Set Modell
Einem großen problem der Angrenzens Liste Modell ist, dass wir brauchen, um ausführen einer Abfrage für jeden Knoten, um den Pfad der Hierarchie.
In der Nested Set Modell dieses problem nicht vorhanden, aber für jeden hinzugefügten Knoten notwendig ist, um ein MySQL-UPDATE auf alle anderen Links und Recht Wert.
Meiner hierarchischen Daten nicht statische Daten, wie Produkt-Kategorien von e-commerce. Sind ständige Registrierung der Nutzer in der hierarchischen Reihenfolge.
In meiner Anwendung, während es gibt viele Konstanten, Benutzer-Registrierung, die ich auch brauchen, um den hierarchischen Pfad bis zum erreichen des ersten Knotens in der Hierarchie.
Analyse meiner situation, welche der beiden alternativen wäre am besten für meine Anwendung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Nested Set Model ist heutzutage nicht allgemein in Datenbanken, da es komplexer ist, als die Adiacency Liste Modell, angesichts der Tatsache, dass es erfordert die Verwaltung von zwei "Zeiger" statt eines einzigen. Eigentlich ist die Nested-Set-Modell wurde eingeführt in Datenbanken, wenn es Komplex oder unmöglich zu tun, rekursive Abfragen, die durch eine Hierarchie.
1999, SQL-standard gehören die so genannten Rekursiven Common Table Expressions, oder Rekursive CTE, das macht das einfacher (und standardisierten!) Abfragen, die Durchlaufen rekursive Pfad innerhalb einer Hierarchie mit alle Anzahl von Ebenen.
Alle gängigen DBMS-Systeme haben nun enthalten diese Funktion, mit einem insbesondere Ausnahme: MySQL. Aber in MySQL können Sie überwinden dieses problem mit der Verwendung von gespeicherten Prozeduren. Siehe, zum Beispiel, dieser Beitrag auf StackOverflow, oder in diesem Beitrag dba.stackexchange.
So, in Zusammenfassung, das sind meine Ratschläge:
UPDATE
Diese situation ändert sich mit dem MySQL-8, die derzeit in der Entwicklung und die integrieren Rekursive Allgemeine Tabellenausdrücke, so dass von dieser version der Adiacency Set Modell wird mehr einfach zu bedienen.