Bing Yee程序人生

关注互联网产品技术学习,应用开发~

关于无限分类的两种思路总结

2011/7/2 9:34:47 类别:数据库
摘要:最近看了网上的2种无限分类的示例,这里作下小结.一种我相信是大家一直常用的采用Parent_ID(父节点),另一种就是采用左右值实现的.本文仅介绍思路

 首先先说下这2种分类方法的实现思路,下面引用网络上朋友整理好的数据结构

Food
|
|---Fruit
|    |
|    |---Red
|    |    |
|    |    |--Cherry
|    |
|    +---Yellow
|          |
|          +--Banana
|
+---Meat
      |--Beef
      +--Pork

一种数据库设计结构

 字段有ID(分类ID) cateName(分类名),parentID(父类ID),parentPath(节点路径),cateLevel(节点层次),cateOrder(节点排序)

这种设计思路是常用思路,也是我一直用到现在的设计模式,此结构对于数据量不太大的情况下,很适用,其缺点是遍历树时的效率问题,一直没有找到好的解决办法(附目前的2种办法:1.递归当前节点获取当前目录路径,2用节点路径循环查询数据库获取目录路径)这里数据库有parentPath和没有parentPath都是可以的.关键是程序的实现思路.

另一种设计模式就是这里要着重讲解的左右值分类法(有着高效的遍历树和快速查找功能)
树型结构如下

                         1 Food 18
                             |
            +------------------------------+
            |                              |
        2 Fruit 11                     12 Meat 17
            |                              |
    +-------------+                 +------------+
    |             |                 |            |
3 Red 6      7 Yellow 10       13 Beef 14   15 Pork 16
    |             |
4 Cherry 5    8 Banana 9

表的设计如下图所示

+------------+-----+-----+
|    name    | lft | rgt |
+------------+-----+-----+
|    Food    | 1   | 18  |
|    Fruit   | 2   | 11  |
|    Red     | 3   |  6  |
|    Cherry  | 4   |  5  |
|    Yellow  | 7   | 10  |
|    Banana  | 8   |  9  |
|    Meat    | 12  | 17  |
|    Beef    | 13  | 14  |
|    Pork    | 15  | 16  |
+------------+-----+-----+
--Select * FROM tree Where lft BETWEEN 2 AND 11;获取当前节点所有子孙结点的SQL
--当前节点有多少子孙结点,计算公式为(rgt-lft-1)/2 即可获取子孙结点个数

此方法目前测试最不方便的为获取当前节点的儿子节点(考虑办法添加字段level显示当前节点层,这样就可以加个SQL条件实现查询所有儿子节点了)

这里主要介绍了目前这2种无限分类的实现思路,具体实现代码要靠大家自己动手.我就不贴了,我相信在自己写的过程中,能有更多的收益,说不定引发出更好的分类思路(比如取长补短,结合这两个分类的特点)

3438次阅读  标签:无限分类,无级分类
下一篇:C#或者Java中如何运用逻辑运算符(位异或)实现字符串和数之间的运算
上一篇:MSSQL2005备份还原导致受限制用户解决办法

共37条评论

zcnfxhfxo(1楼)-2014/4/23 18:30:39
审核中

hebifwmpjr(2楼)-2014/4/23 18:33:43
审核中

pkkmjozmgq(3楼)-2014/4/23 18:35:43
审核中

wnhynwjxb(4楼)-2014/4/26 10:46:07
审核中

frontierscientists.com(5楼)-2014/7/31 3:53:02
审核中

2352(6楼)-2014/8/19 13:22:05
审核中

saifu(7楼)-2014/11/1 9:29:06
审核中

ニューバランス576uk(8楼)-2014/11/2 12:05:45
审核中

アグブーツアウトレット(9楼)-2014/11/3 9:47:08
审核中

京急グース(10楼)-2014/11/8 17:54:40
审核中

prada長財布スタッズ(11楼)-2014/11/8 21:44:11
审核中

プラダのトートバック(12楼)-2014/11/9 7:31:32
审核中

プラダの靴(13楼)-2014/11/9 21:12:47
审核中

pradaメンズ長財布(14楼)-2014/11/10 8:58:37
审核中

ルイビトン店舗(15楼)-2014/11/5 20:24:08
审核中

ルイヴィトン新作バック(16楼)-2014/11/6 2:11:47
审核中

ビィトン公式(17楼)-2014/11/6 7:57:40
审核中

伊勢丹モンクレールレディース(18楼)-2014/11/6 20:57:22
审核中

ビトンなが財布(19楼)-2014/11/7 1:16:43
审核中

グッチ新作財布(20楼)-2014/11/7 6:12:29
审核中

プラダのリュック(21楼)-2014/11/10 18:47:42
审核中

pradaリボン財布コピー(22楼)-2014/11/12 5:58:28
审核中

发表评论

文章分类


友情链接