Optimisation de la structure arborescente en PHP
Le stockage de données hiérarchiques dans une base de données nécessite une approche bien structurée pour une récupération efficace. Parmi diverses stratégies, le Modèle d'ensembles imbriqués se distingue comme une solution optimale pour les applications PHP/MySQL.
Le modèle d'ensembles imbriqués attribue à chaque nœud une plage unique de nombres représentant sa position relative dans le arbre. Ces nombres, appelés gauche et droite, permettent des requêtes efficaces pour sélectionner des sous-arbres complets ou des nœuds individuels.
Doctrine, un ORM populaire pour PHP, intègre des fonctionnalités d'ensembles imbriqués, ce qui facilite les opérations de base de données.
Pour comprendre le concept du Nested Set Model, considérons l'exemple de la documentation MySQL :
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 |
Visualiser les valeurs gauche et droite sous forme de numéros de ligne dans un Le document XML clarifie la structure hiérarchique :
`<televisions>` `<tube></tube>` `<lcd></lcd>` `<plasma></plasma>` `</televisions>` `<portable electronics>` `<mp3 players>` `<flash></flash>` `</mp3 players>` `<cd players></cd players>` `<2 way radios></2 way radios>` `</portable electronics>`
En utilisant ce modèle, les requêtes permettant de récupérer des sous-arbres entiers ou des nœuds individuels deviennent très efficace, réduisant le 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!