Structure arborescente optimale pour un stockage MySQL et une récupération PHP efficaces
Dans le domaine des structures de données, sélection de la structure arborescente optimale pour stocker des données hiérarchiques est crucial. Pour un arbre contenant environ 300 nœuds avec des profondeurs variables et un nombre illimité de nœuds enfants, la priorité clé est la récupération rapide d'arbres ou de sous-arbres complets. De plus, la possibilité d'ajouter ou de déplacer des nœuds est parfois nécessaire.
Le modèle d'ensemble imbriqué (NSM) apparaît comme l'approche la plus appropriée pour ce scénario en raison de ses capacités de requête efficaces. Selon la documentation fournie dans « Gestion des données hiérarchiques dans MySQL », NSM propose une solution efficace.
Implémentation de NSM
Pour implémenter NSM, chaque nœud de l'arborescence nécessite deux colonnes supplémentaires : lft (représentant la limite gauche) et rgt (représentant la limite droite). Ces colonnes définissent la position d'un nœud dans la hiérarchie.
Par exemple, considérons l'exemple fourni dans la documentation MySQL liée :
+-------------+----------------------+-----+-----+ | category_id | name | lft | rgt | +-------------+----------------------+-----+-----+ | 1 | ELECTRONICS | 1 | 20 | | 2 | TELEVISIONS | 2 | 9 | | 3 | TUBE | 3 | 4 | | 4 | LCD | 5 | 6 | | 5 | PLASMA | 7 | 8 | | 6 | PORTABLE ELECTRONICS | 10 | 19 | | 7 | MP3 PLAYERS | 11 | 14 | | 8 | FLASH | 12 | 13 | | 9 | CD PLAYERS | 15 | 16 | | 10 | 2 WAY RADIOS | 17 | 18 | +-------------+----------------------+-----+-----+
Dans NSM, les champs lft et rgt correspondent à les numéros de ligne des balises d'ouverture et de fermeture dans un document XML, comme suit :
1. <electronics> 2. <televisions> 3. <tube> 4. </tube> 5. <lcd> 6. </lcd> 7. <plasma> 8. </plasma> 9. </televisions> 10. <portable electronics> 11. <mp3 players> 12. <flash> 13. </flash> 14. </mp3 players> 15. <cd players> 16. </cd players> 17. <2 way radios> 18. </2 way radios> 19. </portable electronics> 20. </electronics>
Cette visualisation simplifie la compréhension de la hiérarchie imbriquée, permettant sélection efficace de nœuds entiers sans avoir besoin de plusieurs requêtes ou jointures.
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!