Mysql
 sql >> база данни >  >> RDS >> Mysql

php / Mysql най-добрата дървовидна структура

Можете да използвате модел на вложен набор тъй като дава много ефективни заявки. Вижте Управление на йерархични данни в MySQL и прочетете раздела, наречен Модел на вложен набор .

Ако използвате ORM като Doctrine, това включва възможности за вложен набор .

За някои може да е трудно да схванат концепциите за вложени набори от ляво и надясно Открих, че използвайки тези числа като аналогия за номерата на редовете на маркерите за отваряне/затваряне в XML документ, хората намират по-лесно за разбиране.

Например, вземете примера с данни от връзката на 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 |
+-------------+----------------------+-----+-----+

Ако вземете ляф , rgt полета и да ги използвате като номера на редове за XML документ, получавате:

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>

Виждането по този начин може да направи много по-лесно за някои да визуализират получената йерархия на вложени набори. Освен това става по-ясно защо този подход подобрява ефективността, тъй като дава възможност да се избират цели възли без необходимост от множество заявки или обединения.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да видите индекси за база данни или таблица в MySQL?

  2. Как да създадете таблица в MySQL Workbench с помощта на GUI

  3. Как да промените паролата за root на mysql

  4. Защо използването на подготвен изявление на mysql е по-сигурно от използването на обикновените escape функции?

  5. Ruby on Rails 3 не може да се свърже с локален MySQL сървър чрез сокет '/tmp/mysql.sock' на OSX