Mysql
 sql >> Base de données >  >> RDS >> Mysql

php / Mysql meilleure arborescence

Vous pouvez utiliser un modèle d'ensemble imbriqué car il produit des requêtes très efficaces. Découvrez Gestion des données hiérarchiques dans MySQL et lisez la section intitulée Modèle d'ensemble imbriqué .

Si vous utilisez un ORM comme Doctrine, il inclut des fonctionnalités d'ensembles imbriqués .

Il peut être difficile pour certains de saisir les concepts d'ensembles imbriqués de gauche et bien. J'ai constaté qu'en utilisant ces nombres comme analogie avec les numéros de ligne des balises d'ouverture/fermeture dans un document XML, les gens trouvent cela plus facile à comprendre.

Par exemple, prenez l'exemple de données du lien MySQL ci-dessus :

+-------------+----------------------+-----+-----+
| 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 |
+-------------+----------------------+-----+-----+

Si vous prenez le lft , rgt champs et les utiliser comme numéros de ligne pour un document XML, vous obtenez :

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>

Le voir de cette façon peut permettre à certains de visualiser beaucoup plus facilement la hiérarchie d'ensembles imbriqués résultante. Cela permet également de mieux comprendre pourquoi cette approche améliore l'efficacité car elle permet de sélectionner des nœuds entiers sans avoir besoin de plusieurs requêtes ou jointures.