悟空-简单就好
.net企业级应用研究

考虑最复杂的情况
开发出最简单的实现


多种方式,帮你快速找到文档(知识点)!

什么是穿透显示?
    穿透显示指选择父节点可直接显示子节点包含的内容;
如企业的组织架构中,选择处级单位可直接显示下属的各课级人员,而不仅仅是处长一人;
再如个人知识管理中知识分类体系,选择父分类,可直接显示所包含全部知识点。如图所示,单击“软件开发管理”,可显示其及其子分类包括的知识点

针式个人知识库管理系统
常见的实现方法:

1、SQL生成法:基本原理是搜寻节点树,生成用“or”连接的SQL语句;此法受SQL语句串长限制,有可能产生“SQL语句太够复杂”的出错。这个方法,我在开发针式个人知识库管理软件中使用,只要节点不太深,性能是不受影响的;做法是将ID作为Tag放在节点对象内

2、冗余法:基本原理是引入冗余字段和冗余表,冗余字段标示节点的位置,冗余表保存各节点的全部位置信息。比如,在人事档案管理系统中
,组织架构用OU1、OU2....OU8等字段构成的冗余表表示各OU所在位置;假如处级位置OU4,那显示某个处级全部人员的SQL为OU4=该单位ID即可实现穿透。

3、编码法:基本原理是使用一串字符来唯一表示节点的上下级关系信息,例“F2A”表示F公司2分公司A部门;这样显示某个特定部门的信息要
使用子串函数即可实现穿透。此法无法利用索引,所以性能有所影响


上述三种方法,各有优劣。平时可作性能、编码复杂度等测试,实际使用方可灵活选择。

   更多内容...

posted on 2008-04-29 13:27 针式个人知识库管理 阅读(1671) 评论(11)  编辑 收藏
Comments
  • zbh [未注册用户]
    Posted @ 2008-04-29 14:15
    我喜欢用编码法,简单而且直观

    一般来说的话,用到这些树型结构的表记录都不会有太多,比如说企业的组织架构

    记录少的表,不用索引效率要高些!
      回复  引用    
  • #2楼 
    新程金锣      
    Posted @ 2008-04-29 14:36
    建议你在类别表中加一个“嵌套编码”的字符型字段,用它来保存类别的层次结构。
    如:

    --大类01
    ----中类0101
    ------小类010101
    ------小类010102
    ------小类010103
    ----中类0102
    ----中类0103
    ……
    在查询某一类别及其子类别(如0101)的全部可以用 LIKE '0101%' 的方式来实现。   回复  引用  查看    
  • #3楼 [楼主]
    针式个人知识库管理      
    Posted @ 2008-04-29 15:00
    @新程金锣

    这也是一种方法,不够和编码法类同。你的意思是系统自动加上,编码法一般是人工指定   回复  引用  查看    
  • #4楼 
    E-freer      
    Posted @ 2008-04-29 15:29
    晕,穿透??若是无限分类,为什么不直接用递归搞定???   回复  引用  查看    
  • #5楼 
    wxdxy [未注册用户]
    Posted @ 2008-04-29 15:38
    sql递归,csdn大大邹健在这方面写过文章   回复  引用    
  • #6楼 [楼主]
    针式个人知识库管理      
    Posted @ 2008-04-29 15:54
    @wxdxy
    穿透功能除了考虑编码量、动态性,重要的还是要根据需要情况选择,尽量将计算量除到最低
    sql递归:大概是忘了一件最重要的事:性能,递归肯定在性能方面会存在问题。因为没有允分避免重复计算.SQL生成法算是一种递归算法,其余应是较佳的算法,在ERP中常用.
    另外,感觉很多软件没有实现穿透功能,所以写此文   回复  引用  查看    
  • #7楼 
    Allen Yu      
    Posted @ 2008-04-29 17:08
    @新程金锣
    这个方法比较常见,也容易看懂。子父节点清楚。   回复  引用  查看    
  • #8楼 
    JackLee      
    Posted @ 2008-04-29 18:06
    这个很好实现的,用链表.   回复  引用  查看    
  • #9楼 
    robiy [未注册用户]
    Posted @ 2008-04-29 18:16
    Sql递归可以用表表达式,吼吼……那速度#¥@#&*$&#¥,还是喜欢用编码,简洁明了   回复  引用    
  • #10楼 
    镜涛      
    Posted @ 2008-04-30 10:25
    都是通过SQL生成。
    sql查询,跟编码查询到底性能差距有多大?
      回复  引用  查看    
  • #11楼 
    留恋星空      
    Posted @ 2008-05-01 10:13
    期待回复LS问题   回复  引用  查看    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-04-29 13:32 编辑过
 
另存  打印