无限级别的分类

无限级别的分类,很多项目中需要,就设计了一个,欢迎大家批评指正。

数据库结构如下(一张表):
CREATE TABLE [dbo].[tb_lb] (
    [lb_id] [int] IDENTITY (1000000001, 1) NOT FOR REPLICATION  NOT NULL ,   --类别编号
    [lb_mc] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,             --类别名称
    [lb_jb] [int] default 1 NOT NULL ,                                       --类别级别
    [lb_sjbh] [int] default 0 NOT NULL ,                                     --类别上级编号
    [lb_lj] [nvarchar] (400) COLLATE Chinese_PRC_CI_AS default 0 NOT NULL ,  --类别路径
    [lb_bz] [nvarchar] (400) COLLATE Chinese_PRC_CI_AS NULL ,                --类别备注
    [lb_isqy] [int] default 0 NOT NULL ,                                     --是否启用
    [isdelete] [int] default 0 NOT NULL                                      --是否已经删除[如果删除了就当是进回收站了]
)


示例数据如下:
lb_id         lb_mc        lb_jb      lb_sjbh          lb_lj                       lb_bz               lb_isqy      isdelete
--------------------------------------------------------------------------------------------------------------------------
1000000001    公司总部    1     0             0                          单位首节点不可删除  1    0
1000000002    研发部      2     1000000001    0,1000000001               研发部              1    0
1000000003    .NET组      3     1000000002    0,1000000001,1000000002    .NET组              1    0
1000000004    JAVA组      3     1000000002    0,1000000001,1000000002    JAVA组              1    0
1000000005    GIS组       3     1000000002    0,1000000001,1000000002    GIS组               1    0
1000000006    客服部      2     1000000001    0,1000000001               客服部              1    0
1000000007    硬件组      3     1000000006    0,1000000001,1000000006    硬件组              1    0
1000000008    软件组      3     1000000006    0,1000000001,1000000006    软件组              1    0
1000000009    总经办      2     1000000001    0,1000000001               总经办              1    0



常见的应用需求:
1、读取某个类别下面的所有类别:只需搜索路径中含有当前类别编号的即可。
2、读取某个类别下一级的所有类别:只需搜索类别上级编号是当前类别编号的即可。
3、读取该类别的“来龙去脉”:首先根据当前类别读取出其路径,然后将路径的字符串加上当前的类别编号作为候选集,只需搜索类别编号在候选集里面的,排序的时候根据类别级别排序即可。(展示出来的时候,直接将该数据集绑定给DataList即可。)

---------------------------------------------------------------------
金色海洋(jyk)
1、字段名也太烂了呀。
2、还缺少两个字段,一个是子节点的数量,另一个是排序字段(大排序)。
3、1000000005 这个也太郁闷了吧,这么长还是int的,晕

@金色海洋(jyk)
1、坏习惯,是得改改,不然别人就看不懂了!
2、“子节点的数量”这里是记下一级节点的数量呢?还是所有下级节点的数量呢?不管是哪一个,当有需求将中间层次的某个级别的节点迁移另外一个节点下面的时候,这个数量计算相对麻烦。反过来如果想得到这里的数量,则很容易。所以该字段没有增加。
“另一个是排序字段(大排序)”不怎么明白,我理解的是同一级别的节点显示的顺序,这个后来的应用中已经加入了。
3、“1000000005 这个也太郁闷了吧,这么长还是int的”,之所以这么长是因为在实际应用中的时候,确实可以节省很多事。

转载于:https://www.cnblogs.com/datasky/archive/2008/05/26/1207325.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值