Mysql
 sql >> Baza danych >  >> RDS >> Mysql

najlepsza struktura drzewa php / Mysql

Możesz użyć modelu zestawu zagnieżdżonego ponieważ daje bardzo wydajne zapytania. Zobacz Zarządzanie danymi hierarchicznymi w MySQL i przeczytaj sekcję o nazwie Model zestawu zagnieżdżonego .

Jeśli używasz ORM takiego jak Doctrine, zawiera zagnieżdżone możliwości zestawu .

Niektórym może być trudno zrozumieć zagnieżdżone koncepcje zestawu left i w prawo. Odkryłem, że używając tych liczb jako analogii do numerów wierszy znaczników otwierania/zamykania w dokumencie XML, ludzie uważają, że jest to łatwiejsze do zrozumienia.

Weźmy na przykład przykład danych z powyższego linku 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 |
+-------------+----------------------+-----+-----+

Jeśli weźmiesz lft , rgt pola i użyj ich jako numerów linii w dokumencie XML, otrzymasz:

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>

Spojrzenie na to w ten sposób może znacznie ułatwić niektórym wizualizację wynikowej hierarchii zestawów zagnieżdżonych. Wyjaśnia również, dlaczego to podejście poprawia wydajność, ponieważ umożliwia wybieranie całych węzłów bez potrzeby wielu zapytań lub złączeń.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wolny czas startu MySQL w trybie GTID? Problemem może być rozmiar pliku dziennika binarnego

  2. Jak uzyskać pierwszy rekord w każdej grupie w MySQL?

  3. readyStatement błąd składni

  4. Jak znaleźć liczbę dni między dwiema datami w MySQL?

  5. Wyniki MySQL jako lista oddzielona przecinkami