Bạn có thể sử dụng Mô hình tập hợp lồng nhau vì nó mang lại các truy vấn rất hiệu quả. Xem Quản lý dữ liệu phân cấp trong MySQL và đọc phần có tên Mô hình tập hợp lồng nhau .
Nếu bạn đang sử dụng ORM như Doctrine, thì nó bao gồm các khả năng được thiết lập lồng nhau .
Một số người có thể khó nắm được các khái niệm tập hợp lồng nhau của left và đúng. Tôi nhận thấy rằng việc sử dụng những con số đó như một phép tương tự cho số dòng của thẻ mở / đóng trong tài liệu XML, mọi người sẽ thấy dễ dàng hơn để nắm bắt.
Ví dụ:lấy ví dụ dữ liệu từ liên kết MySQL ở trên:
+-------------+----------------------+-----+-----+
| 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 |
+-------------+----------------------+-----+-----+
Nếu bạn đi theo lft , rgt và sử dụng chúng làm số dòng cho một tài liệu XML, bạn sẽ nhận được:
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>
Nhìn thấy nó theo cách này có thể giúp một số người dễ dàng hình dung cấu trúc phân cấp tập hợp lồng nhau kết quả. Nó cũng làm rõ hơn lý do tại sao phương pháp này cải thiện hiệu quả vì nó giúp bạn có thể chọn toàn bộ các nút mà không cần nhiều truy vấn hoặc liên kết.