关于奇矩互动奇矩互动招贤纳士奇矩互动优质虚拟主机Discuz!商业用户享有本站VIP服务LAMP环境配置手册(CentOS5.1)
发新话题
打印

MooPHP无限分类设计方案

MooPHP无限分类设计方案

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

常用树形结构存储方案比较:
邻接列表模式
在SQL相关的教程文献中关于存储树形结构的示例,我们最常看到的就是邻接列表模式(Adjacency List Model)。
详细实现方式可自行搜索,这种也是在PHP开发中最常用到的方法。

优点:邻接列表模型很容易理解,代码也很简单。
缺点:嵌套查询SQL所耗费的时间,尤其是当分类的深度加深,查询的次数会以级数的速度增加。
优化:通过将整个树形结构缓存到文本来减轻数据库存储的压力。

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

优点:取出任意节点的树形结构都只需一次查询即可实现。
缺点:数据库存储的数据不透明,不利于调试

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

推荐资料
这篇文章和后面的摘要都不错,推荐下。
http://shiningray.cn/hierarchical-data-database.html
http://searchdatabase.techtarget ... 3_gci537290,00.html
http://www.evolt.org/article/Fou ... /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 ... 3_gci537290,00.html
[7] http://www.evolt.org/article/Fou ... /17/4047/index.html
[8] http://xml.apache.org/xindice/
[9] http://www.strath.ac.uk/IT/Docs/Ccourse/subsection3_9_5.html
真正的尊敬,既不属于那些批评别人头头是道的人,也不是属于给强人指出过错、指点别人哪里做的不好的人。真正的尊敬,是属于那些勇于亲身投入战场,脸上沾满了尘土、汗水和鲜血的奋斗者们。他们坚持不懈的努力,尽管曾经犯下错误,并一再失败,但他们满怀激情,执著不懈,将生命奉献于崇高的事业。他们为经过艰辛努力最终取得的伟大成就而自豪,如果失败,他们也败得荣耀。因此,那些既没赢得过胜利,也没懂得什么叫做失败的,冷漠、胆怯的灵魂,是永远也无法与这些真正值得尊敬的人相提并论的。
http://www.cnedwin.com

TOP

地址都保存成链接了,不错

TOP

不错,不过对于我们这些菜鸟来说,我们还不很清楚这个东西
现在我最需要的是一个好的cms主页系统,这个可以吗?

TOP

这两种方法各有优劣,具体情况具体应用。

TOP

难道lz就是平凡世界的博主?

TOP

发新话题