+ -
当前位置:首页 → 问答吧 → 基于左右值的无限分类思想

基于左右值的无限分类思想

时间:2007-12-11

来源:互联网

平常我们分类的是这样的
id(自然增长ID)
pid(父分类ID)

先查询出所有的分类,然后递归,计算层数,这种方法的缺点就是分类多的时侯,递归比较慢

另外一种在MYSQL官方网站上有推荐的一种方法就是基于左右值的

每增加一个分类,都有一个左值,一个右值
比如添加一个分类program
那么他的左值 右值就分别设定为 1 program 2
再在下面添加两个分类php,HTML就是
1 program 6
2 php 3     4 HTML 5

这里有详细的说明(虽然文字我们看不懂,但是代码和图示还是能看的 ^_^)
http://weblabor.hu/cikkek/hierarchikusadatkezeles2
abra1.jpg (11.76 KB)
2007-12-11 15:07


这样做有什么好处?为什么这样做?
我们来看一下获取图示中的PHP这个分类的所有子分类sql语句
SELECT * FROM table WHERE Lft BEWTEEN 2 AND 11 ORDER BY Lft ASC
是不是很简单,剩下的就是我们需要处理层数
这样做的缺点也比较明显,就是添加或者编辑的时侯,相关分类的左值和右值都会变化,所以适用于那些不常改动分类的处理(我想,大部分分类都不用经常变更的吧,^_^)

完整代码下载
SortTest.rar (6.21 KB)
SortTest.rar (6.21 KB)
下载次数: 377
2007-12-11 15:07


演示地址(在下载地址里面附有完整示例)
http://www.mengsa.cn/SortTest.php

本类未处理好的地方在于,编辑分类的时侯,不相关分类的左右值也有变化,但这不太影响适用,如果你修正了这个问题,请发一份源码给我 psdshow at yahoo.com.cn谢谢

作者: psdshow   发布时间: 2007-12-11

顶,研究研究

作者: 奇将射天狼   发布时间: 2007-12-11

对,这个和父子ID的效率区别在哪里?
对于显示和编辑。。

作者: thankwsx   发布时间: 2007-12-11

这个思维方式很有意思!

不过这个算法缺陷未免太大了吧,分类很容易就会改变的。

作者: 奇将射天狼   发布时间: 2007-12-11

难的不是分类而是操作分类里的数据

作者: yzxh24   发布时间: 2007-12-11

实用性不是很好,比传统的3字段无限分类没什么优势,我写的无限分类操作类,也只查询一次数据库(查询数据库用的也不是递归,就是普通的select),接下来都是对数组的操作,效率上也不慢啊

[ 本帖最后由 T.T.R 于 2007-12-12 09:25 编辑 ]

作者: T.T.R   发布时间: 2007-12-12

引用:
原帖由 奇将射天狼 于 2007-12-11 17:26 发表
这个思维方式很有意思!

不过这个算法缺陷未免太大了吧,分类很容易就会改变的。
分类改变是没有问题的.因为除了左值右值以外,分类的id是不变的
但是如果经常需要更新或者修改分类就麻烦一点
优点在于查询数据库方面

[ 本帖最后由 psdshow 于 2007-12-12 18:29 编辑 ]

作者: psdshow   发布时间: 2007-12-12

应鼓励原创精品!

作者: luzhou   发布时间: 2007-12-12

这个不错啊 学习下

作者: aksoft   发布时间: 2007-12-28


用我的文本库好了!多级分类一个级别一个文件-_-

作者: MoHock   发布时间: 2007-12-28

研究看看

作者: eisdl   发布时间: 2007-12-29

恩 看看这个左右值无限分类

作者: kissweb   发布时间: 2008-02-16

是个好方法,不然MYSQL公司也不会在官网上推荐了

作者: yagas   发布时间: 2008-02-26

感谢楼主,,和大家分享你的成果!
学习了。3Q

作者: lxylxy888666   发布时间: 2008-03-01

这个不错啊 学习下

作者: lxydyx   发布时间: 2008-03-21

有人发过

作者: bit   发布时间: 2008-03-25

顶,研究研究
顶,研究研究

作者: luzhou   发布时间: 2008-03-25

帮你顶下


再留个名
http://wolf.rorchina.net/ 狼盟编程论坛

http://bbs.rorchina.net/ RORCHINA中国社区门户

http://club.unix5.com/ UNIX开源世纪

作者: 会飞的猪   发布时间: 2008-03-25