gpt4 book ai didi

php - 使用 SQLite 创建列表树

转载 作者:IT王子 更新时间:2023-10-29 06:22:24 24 4
gpt4 key购买 nike

我正在尝试使用 PHP 和 SQLite 表设置来制作分层列表,如下所示:

    |   itemid  |   parentid    |   name    |
-----------------------------------------
| 1 | null | Item1 |
| 2 | null | Item2 |
| 3 | 1 | Item3 |
| 4 | 1 | Item4 |
| 5 | 2 | Item5 |
| 6 | 5 | Item6 |

列表将使用无序列表构建并允许这种类型的树结构:

Item1
|_Item3
|_Item4
Item2
|_Item5
|_Item6

我已经看到使用目录和平面数组完成此操作,但我似乎无法使其在没有深度限制的情况下正确使用此结构。

最佳答案

您正在使用教科书设计在 SQL 数据库中存储分层数据。这种设计称为邻接列表,即层次结构中的每个节点都有一个指向其直接父节点的parentid 外键。

使用这种设计,您无法像您描述的那样生成树,并且支持树的任意深度。你已经想通了。

大多数其他 SQL 数据库(PostgreSQL、Microsoft、Oracle、IBM DB2)都支持递归查询,从而解决了这个问题。但是 SQLite 和 MySQL 还不支持 SQL 的这个特性。

因此您需要另一种解决方案来存储层次结构。有几种解决方案。看我的介绍Models for Hierarchical Data with PHP and MySQL用于描述和示例。

我通常更喜欢我称之为 Closure Table 的设计,但每种设计都有优点和缺点。哪一个最适合你的项目取决于你需要什么样的查询来有效地处理你的数据。所以你应该去研究解决方案并为自己选择一个。

关于php - 使用 SQLite 创建列表树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3897952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com