小编典典
您可以使用 嵌套集模型,
因为它可以产生非常有效的查询。检出在MySQL中管理分层数据,并阅读称为 嵌套集模型 的部分。
如果您使用的是Doctrine之类的ORM,则它包含嵌套集功能。
它可以是很难对一些把握的嵌套组的概念 左 和 右。 我发现使用这些数字作为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 |
+-------------+----------------------+-----+-----+
如果使用 lft , rgt 字段并将其用作XML文档的行号,则会得到:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17. <2 way radios>
18. 2 way radios>
19.
20.
以这种方式查看它可以使某些人更容易可视化嵌套集的层次结构。它还使这种方法提高效率的原因更加明确,因为它可以选择整个节点而无需多个查询或联接。
2020-05-17