php设计方案,MooPHP无限分类设计方案

前言

无限分类其专业的命名就是存储树形结构,这是一个很常见的问题,但是有很多种解决方案。由于在PHP开发中涉及到关系型数据的存储,除非使用一种像XML的数据库,否则关系数据库中的表都不是层次结构的,他们只是一个平坦的列表。所以你必须找到一种把层次数据库转化的方法。

常用树形结构存储方案比较:

邻接列表模式

在SQL相关的教程文献中关于存储树形结构的示例,我们最常看到的就是邻接列表模式(Adjacency List Model)。

详细实现方式可自行搜索,这种也是在PHP开发中最常用到的方法。

优点:邻接列表模型很容易理解,代码也很简单。

缺点:嵌套查询SQL所耗费的时间,尤其是当分类的深度加深,查询的次数会以级数的速度增加。

优化:通过将整个树形结构缓存到文本来减轻数据库存储的压力。

改进前序遍历树

这种算法是目前应用较多的逻辑算法,他对分类深度和分类数据较多的属性分类有设计上的优势,在曾经做过的学生学分管理的项目中用过(学院分类、专业分类、班级分类、学生并且每个分类的数据都很多)。

优点:取出任意节点的树形结构都只需一次查询即可实现。

缺点:数据库存储的数据不透明,不利于调试

MooPHP设计方案

经过权衡采用第一种和路径优化的方式,具体实现不写了,等完成之后写详细的文档。

推荐资料

这篇文章和后面的摘要都不错,推荐下。

http://shiningray.cn/hierarchical-data-database.html

http://searchdatabase.techtarget.com/tip/1,289483,sid13_gci537290,00.html

http://www.evolt.org/article/Four_ways_to_work_with_hierarchical_data/17/4047/index.html

http://xml.apache.org/xindice/

http://www.ccvita.com/315.html

http://www.strath.ac.uk/IT/Docs/Ccourse/subsection3_9_5.html

[1] http://www.sitepoint.com/glossary.php?q=C#term_28

[2] http://www.sitepoint.com/glossary.php?q=X#term_3

[3] http://www.sitepoint.com/glossary.php?q=P#term_1

[4] http://www.sitepoint.com/glossary.php?q=P#term_50

[5] http://www.sitepoint.com/glossary.php?q=%23#term_72

[6] http://searchdatabase.techtarget.com/tip/1,289483,sid13_gci537290,00.html

[7] http://www.evolt.org/article/Four_ways_to_work_with_hierarchical_data/17/4047/index.html

[8] http://xml.apache.org/xindice/

[9] http://www.strath.ac.uk/IT/Docs/Ccourse/subsection3_9_5.html

版权声明:原创作品,欢迎转载,转载时请务必以超链接形式标明文章原始地址、作者信息和本声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值