【发布时间】:2015-07-22 01:10:55
【问题描述】:
想象一棵树。给定那棵树上的任何树枝,我想追溯到树的树干,树枝中的树枝数量是无限的。没有多对多连接。
我正在记录客户,并设置了一个表格来显示哪个现有客户向我们推荐了一个新客户,因此这已经扩展到某种“家谱”。
每次有新客户加入时,我都需要了解最初的客户,该客户位于启动一切的树的起源处。
这是我的表格的模型,显示 2 个“家庭”,其中 1 和 11 分别位于树的顶部。在此示例中,每个父母都有 2 个孩子,每个数字都是客户合同号的外键。
parents children
1 2
1 3
2 4
2 5
3 6
3 7
11 12
11 13
12 14
12 15
13 16
13 17
到目前为止,我一直在使用 MySQL 和 PHP 循环来选择父级,其中子级具有特定的合同号,然后查看该父级是否是同一张表中的子级。我一直保持这个循环,直到没有行返回并且我得到答案。
我的问题是,这是最有效的方法吗,还是有 PHP 之外的解决方案,或者通过重新设计表格?我可以看到很快就会有数百个“世代”,我不希望它开始变得太慢。
【问题讨论】:
标签: php mysql loops database-design hierarchical-data