Transformer des données plates en un arbre hiérarchique
Convertir efficacement un tableau plat représentant une hiérarchie arborescente en une structure arborescente imbriquée est un défi de programmation courant. Un algorithme récursif offre une solution élégante et efficace.
Voici un exemple Python illustrant cette approche :
<code class="language-python"># Initialize the tree as a dictionary tree = {} # Process each row from the flat table for row in table: # Add the node to the tree tree[row['Id']] = { 'name': row['Name'], 'parent_id': row['ParentId'] if row['ParentId'] else None, 'children': [] # Initialize an empty list for children } # Populate the children for each node for node_id, node in tree.items(): if node['parent_id']: tree[node['parent_id']]['children'].append(node_id)</code>
Ce code crée un dictionnaire imbriqué. Chaque entrée du dictionnaire représente un nœud avec « nom », « parent_id » et une liste d'ID « enfants ». Cette structure facilite la traversée facile des arbres.
Optimisation du stockage des arbres dans les bases de données relationnelles
Bien que les ensembles imbriqués et l'énumération de chemins soient des options viables, la méthode Closure Table présente plusieurs avantages pour stocker des données hiérarchiques dans un SGBDR :
En résumé, l'approche Closure Table fournit une méthode robuste et efficace pour gérer et interroger les structures arborescentes au sein de bases de données relationnelles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!