• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET 无限级分类之美好字段(深度字段)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

转:http://www.cnblogs.com/aKing/archive/2009/01/15/1376406.html

 

看了作者:金色海洋(jyk)的文章:n级分类的数据结构 ,发现和我之前自己设计无须递归无限级分类很相似,但是我应该说比他多个属性,我来个补充吧。

下图中红色箭头是父类 而且属于根目录级别。

下面个字段为:ID    父ID   类型名称   深度   排序

前面3个字段没有什么可解释的,做过无限级分类设计的人都应该清楚

而第5个字段排序字段ID:43的23排序代表他在这张表排在23的根目录

而23下面的23,01 说明他是2级分类,排在23下面的第01个,也是支持99级分类。

而我比较特殊的是多了个深度字段,大家可以看上图数据,

ID:40的 深度字段也是40,ID:43的 深度字段也是43。

而他们的下级子类,后面都跟了个 ","  加自己的ID。

2级子类的深度字段就是(父类ID,自己ID),以此类推,3级分类深度就是(总父类ID上级父类ID自己ID),后面不用说了吧。

 

看到这里可以在看看上面的图,因为我这个网站程序,只有2级分类而已。

当然还有中间那个 "," 完全可以自己用自己喜欢的字符 你用 "|"  "-" "_" 一切字符都可以 但是建议一定要有个字符。

是因为在程序里好分割开来,而且也很直观,完全可以自己在数据库修改分类数据(因为网站分类一般定了很少改动,第一次完全可以在数据库中加上所有分类)

 

谈到这里,在来说说这个字段有什么功能和好处,咋一看这个字段好象很浪费资源,下面听我细细道来:

       在行业门户网站里经常有这样的需求,需要查出某个分类下的所有子分类,如果没有这个字段的话,

       那查出下面的所有字分类,SQL语句就应该要很长了,或者使用递归:根据1级父类ID查出所有2级分类--根据2级分类ID--查出所有3级分类,如果有多级分类的话,这样的递归效率可想而知。

如果有这个字段(并且数据已对应加好),一切就变得美好多了,让你很轻松就能查出某个分类下所有的子类,下面看个图:

 

       有没有看明白,只需要带上条件,深度 like ‘40%’ 注意后面的%一定要带 这样才能查出包括自己在内所有的子类,如果不需要带上自己,我只要自己下面的所有子类,很简单,深度 like ‘40,' 只需要把%号换成你自己设定的分割符就行了(只就是我强调一定要分割符的作用)。 

 

这样是不是很轻松,而且如果后面带上 order by Nt_OrderBy 是不是自动就根据你数据库的排序数据 排好了序呢

 

      最后总结一下,虽然这个字段好用,但是在添加更新分类数据的同时,也往往加大了添加更新的逻辑程序,但是为了性能,为了SQL语句的方便,这一切是值得的。

 

     最后如果关注度多的话(讨论的人多),后面我可能会放上添加更新这种分类的技巧,大大节省判断代码


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
如何手动运行ASP.NET2.0DevelopmentServer发布时间:2022-07-10
下一篇:
ASP.NET MVC区别发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap