首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

还是关于层次结构表设计的有关问题

2012-10-26 
还是关于层次结构表设计的问题首先是分级的组织结构集团公司/分公司/部门/组/...然后是人员,可能同时属于

还是关于层次结构表设计的问题
首先是分级的组织结构
集团公司/分公司/部门/组/...
然后是人员,可能同时属于某几个组的管辖

要求:
1、能够根据层次表生成树状菜单
2、能够快速获取某个级别或某个级别的指定部门的所有人员

该如何设计表才比较合理呢?


[解决办法]

SQL code
id pid name1001 0 食品1001001 1001 水果1001002 1001 蔬菜1001001001 1001002 香蕉1001001002 1001002 苹果1001002001 1001002 青菜--比如这样的结构 要查询水果以及他的所有下级SELECT * FROM TB WHERE LEFT(id,7)='1001001'
[解决办法]
标准做法有3种:
1、最早的做法:节点id里包括完整路径(曾祖父id-爷id-父id-本id)
财务的会计科目编号就是这么做的
现在基本很少使用了

2、递归做法:父id,本id(更早、完整的关系提供递归才能得到)
目前比较普遍
好处是直观简单,增删方便
坏处是生成树需要递归

3、直接保存法:本id,根id,层次数,在根(子树)里的序号
好像没看到别人这么用的,我在自己的树形论坛离线阅读器里采用过
好处是避免了递归,生成树记录高效方便
坏处是增删节点,需要更新半个子树的节点记录

热点排行