Php 闭包表-这些数据是否足以显示树状图?

Php 闭包表-这些数据是否足以显示树状图?,php,mysql,tree,directed-acyclic-graphs,transitive-closure-table,Php,Mysql,Tree,Directed Acyclic Graphs,Transitive Closure Table,下面是我通过测试闭包表方法创建的表 | id | parentId | childId | hops | | | | | 270 | 6 | 6 | 0 | 271 | 7 | 7 | 0 | 272 | 8

下面是我通过测试闭包表方法创建的表

|    id    |    parentId    |    childId    |    hops
|          |                |               |
|    270   |       6        |       6       |      0
|    271   |       7        |       7       |      0
|    272   |       8        |       8       |      0
|    273   |       9        |       9       |      0
|    276   |       10       |       10      |      0
|    281   |       9        |       10      |      1
|    282   |       7        |       9       |      1
|    283   |       7        |       10      |      2
|    285   |       7        |       8       |      1
|    286   |       6        |       7       |      1
|    287   |       6        |       9       |      2
|    288   |       6        |       10      |      3
|    289   |       6        |       8       |      2
|    293   |       6        |       9       |      1
|    294   |       6        |       10      |      2
我正在尝试使用PHP创建一个简单的树。似乎没有足够的数据来创建表。例如,当我只看parentId=6时:

-Part 6 
 -Part 7
  - ?
   - ?
 -Part 9 
   - ?
    - ?
我们知道第8部分和第10部分存在于第7部分或第9部分之下,但不是第7部分或第9部分。我们知道第10部分存在于3和4个节点的深处,但在哪里

如果我查看表中的其他数据,可以看出它应该是:

- Part 6 
 - Part 7
  - Part 9
   - Part 10
 - Part 9
  - Part 10
我认为闭包表的好处之一是不需要递归查询? 你能解释一下我做错了什么吗

编辑:为了澄清,这是一个映射表。还有另一个名为parts的表,它有一个名为part_id的列,该列与闭包表中的parentId和childId列都相关。上表中的id列仅用于维护主键。其实没有必要。我用于创建此闭包表的方法将在以下文章中介绍:

EDIT2:它可以有两跳和三跳。我将通过为项目指定名称来更容易地解释

Part 6 = Bicycle
Part 7 = Gears
Part 8 = Chain
Part 9 = Bolt
Part 10 = Nut
螺母是螺栓的一部分。螺栓和螺母组合直接存在于自行车和齿轮中,齿轮是自行车的一部分


关于使用什么方法,我已经研究了邻接、边、枚举路径、闭包、DAGSnetworks和嵌套集模型。我仍在试图弄清楚什么是什么,但这是一个极其复杂的组件数据库,其中有多个父级,对子树的任何修改都必须通过其他树进行传播。更重要的是,我希望在一般使用过程中避免递归的插入、删除和树视图,即使以数据库空间和输入期间的查询时间为代价。

6->10怎么可能有2跳和3跳?我个人认为我会使用枚举路径而不是闭包表来构建一个简单的树,因为更容易排序。我已经更新了与您的评论相关的问题。谢谢:我同意杰克说的话。您的数据已损坏。您应该对父\u id和子\u id具有唯一的约束。此外,在采用其他方法之前,请认识到枚举路径要求数据库中提供良好的字符串索引支持,嵌套集要求在插入新节点时更新表的大部分内容。