Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

php / Mysql struktur pohon terbaik

Anda dapat menggunakan Model Kumpulan Bersarang karena menghasilkan kueri yang sangat efisien. Lihat Mengelola Data Hirarki di MySQL dan baca bagian yang disebut Model Kumpulan Bersarang .

Jika Anda menggunakan ORM seperti Doctrine, itu termasuk kemampuan kumpulan bersarang .

Mungkin sulit bagi sebagian orang untuk memahami konsep kumpulan bersarang kiri dan benar. Saya telah menemukan bahwa menggunakan angka-angka itu sebagai analogi untuk nomor baris tag buka/tutup dalam dokumen XML, orang-orang akan lebih mudah memahaminya.

Misalnya, ambil contoh data dari tautan MySQL di atas:

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

Jika Anda mengambil lft , rgt bidang dan menggunakannya sebagai nomor baris untuk dokumen XML, Anda mendapatkan:

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>

Melihatnya dengan cara ini dapat mempermudah beberapa orang untuk memvisualisasikan hierarki kumpulan bersarang yang dihasilkan. Hal ini juga memperjelas mengapa pendekatan ini meningkatkan efisiensi karena memungkinkan untuk memilih seluruh node tanpa perlu banyak kueri atau bergabung.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Akses ditolak untuk pengguna 'root'@'localhost' (menggunakan kata sandi:YA) (Mysql::Error)

  2. UNIX_TIMESTAMP() Contoh – MySQL

  3. Doctrine 2 fungsi mysql FIELD diurutkan berdasarkan

  4. Izinkan semua koneksi jarak jauh, MySQL

  5. SQL:Ulangi baris hasil beberapa kali, dan beri nomor baris