无限级分类

109阅读-0评论-作者:码农 无限分类 路径方法
开发的过程当中,我们可能会碰到需要分类的情况,常用的有递归、左右值、路径方式,对比这三种方式的性能,路径方式是最好的,我们下面就讲一下路径方式。

    无限分类的三种方式用的都比较多,我们对着三种方式都简单做一下分析,递归的方法:查询慢、更新快、耗内存;左右值:查询快、更新慢、不消耗多少内存;路径方式:查询快、更新快、也不耗内存。当然了这只是我个人的一点简单理解,大家喜欢用那种方式就用那种,毕竟消耗内存也消耗不了多少,慢的话也慢不了多少的。我们下面讲的就是路径方式。


第一步:设计数据库

设计数据库字段只需要设计3个字段即可,自增ID,分类名称,路径,但是为了方便大家更加直观的理解,我们设计5个来实现无限分类,如下

自增ID分类名字路径上级ID级别
idcatenamepathpidlevel

id呢,相信大家都知道是什么意思,整型、主键、自增;

catename,就是分类的名字,字符串;

path,路径呢就是上级id加自己id的组合,如果是顶级分类则是0加自己的id,下面我们就会讲是怎么定义的;

pid,这个也容易理解,就是上级的id;

level,这个也是一样,是这个分类是几级的。

下面我们来添加一条数据,因为表中没有数据,那么添加的肯定是顶级分类了,如下

1服装0.101

看到这条数据,大家就对path有一定的了解了,在比如,我们给服装加个二级分类,男装:

2男装0.1.212

大家现在对path字段是不是有了直观的认识了呢,path到底有什么用呢?如果没有pid和level字段,那么它的作用就有排序、查询下级分类、查询当前分类的级别,我们设计了5个字段,用他做排序就可以了,当然前提是你没有自己定义排序字段。


代码的具体实现我就不给大家写了,这个理解起来也是比较容易的,大家如果能理解,感觉这个跟递归、左右值没什么区别,可以自己实现一下,对比一下,就可以发现它们的区别。


QQ:1007027975

0.051786s