Comment structurer un modèle pour représenter correctement et efficacement les données arborescente sur les bases de données relationnelles?
-
15-10-2019 - |
Question
Je suppose que le SGBDR n'a pas des caractéristiques particulières de manipulation que d'autres que régulières SQL ANSI ou communes caractéristiques disponibles.
En cas de doute, je suis toujours intéressé sur MySQL et PostgreSQL et éventuellement SQLite.
La solution
Je crois qu'il va quelque chose comme un arbre binaire. Je voudrais juste inclure trois clés qui sont liés à l'identifiant unique de la même table, un pour la gauche, un pour l'enfant, le droit et l'autre pour le parent.
i.e.- (pseudocode beaucoup)
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
Autres conseils
Si chaque nœud est vraiment la même entité de données, le paradigme serait encore une table signifie par entité, et une colonne de liaison pour l'arbre traversal où chaque noeud est lié uniquement une fois.
Pour les entités qui sont liées à des points multiples dans l'arborescence, une table de liaison séparée ou une colonne multiple de valeur distincte serait utilisée.