Wie kann ein Modell so strukturiert werden, dass baumartige Daten in relationalen Datenbanken richtig und effizient dargestellt werden?
-
15-10-2019 - |
Frage
Bezogen auf Durch das Durchqueren von baumartigen Daten in einer relationalen Datenbank mit SQL Frage, ich würde gerne wissen, wie die Art und Weise, wie regelmäßig baumartige Daten zu relationalen Datenbanken unter Berücksichtigung physikalischer Implikationen verwendet wurden.
Ich gehe davon aus, dass das RDBMS keine besonderen Funktionen für die Handhabung als normale SQL ANSI oder gemeinsame verfügbare Funktionen hat.
Im Zweifelsfall interessiere ich mich immer für MySQL und Postgresql und schließlich SQLite.
Lösung
Ich glaube, er macht sich für etwas wie einen binären Baum. Ich würde nur drei Schlüssel einbeziehen, die an die eindeutige ID derselben Tabelle gebunden sind, eines für die linke, eines für das rechte Kind und einen für den Elternteil.
dh- (sehr viel pseudocode)
TABLE tree
int id autoinc
varchar(16) data_you_care_about
int parent_id
int left_child_id
int right_child_id
FOREIGN KEY parent_id = tree.id
FOREIGN KEY left_child_id = tree.id
FOREIGN KEY right_child_id = tree.id
Andere Tipps
Wenn jeder Knoten wirklich dieselbe Dateneinheit ist, würde das Paradigma immer noch eine Tabelle pro Entität und eine Verknüpfungsspalte für den Baumtraversal bedeuten, bei dem jeder Knoten nur einmal verknüpft ist.
Für Entitäten, die an mehreren Punkten im Baum verknüpft sind, würde eine separate Verknüpfungstabelle oder eine mehrfache Wertspalte verwendet.