版权声明:可以任意转载,转载时请务必以超链接形式标明如下文章原始出处和作者信息及本声明
作者:xixi
出处:http://blog.csdn.net/slowgrace/archive/2008/12/08/3478520.aspx
1.多挂节点的概念
同一个节点可能挂在同一棵树的多个位置上,比如,“西葫芦炒牛肉”有可能挂在蔬菜分类下,也可以挂在肉类分类下,我们称这种节点为 同树多挂节点;另外,同一个节点也可能挂在多棵树下,比如,一个时间记录既可以挂在项目树下作为项目的最小任务单元,也可以挂在活动树下作为时间统计的最小单元,我们称这种节点为 异树多挂节点。多挂节点可以挂在多棵树下,我们称多挂节点有多个 东家,每个东家就是一棵树。多挂节点的存在,带来了多树联动问题。所谓多树联动,指的是,当一棵树上的多挂节点被删改拖拽时,该节点的所有东家树也要做相应变动。可以用事件机制来解决多树联动问题。
多挂节点不光会引起多树联动问题,实际上它还会带来一系列新的“科研项目”,比如……
2.基础节点的概念
基础节点是这样的节点:它们多半是基础数据,是永远不会删除的数据,是日积月累的数据,比如:timetrack中的一条条activity记录;理财软件中的一条条帐目;信息管理软件中的一篇篇文章。它们可以被多种不同的树网罗,作为它们的叶子节点,它们是最底层的非抽象节点。它们有时候是多挂的,有时候不是多挂的,但他们永远是叶子节点,大部分情况下是不需删除的节点。它们存在的意义就在于给各种统计提供最基础的信息,它们最忠实地、无巨细地、流水帐似地记录整个事务的发展过程。
3.与多挂节点和基础节点相关的数据结构
判断一个节点是否基础节点,最准确的方法是到tblFundTable表里看看有没有这个节点的细节表名。
和基础节点不同的是,多挂节点不是整表标识的,也就是同一个细节表里,可能有的节点是多挂的,有的不是,要由用户来指定。所以,判断一个节点是否多挂节点,最准确的方法是遍历所有树表,看看自己是否多挂。这显然工作量太大了,一个解决方案是在某个表里安排一个字段指示该节点是否多挂。这个字段可以安排在节点表里,也可以安排在节点细节表里。对于多挂节点而言,如果这个字段安排在节点表里,就存在信息冗余(因为该节点要挂在多个地方),所以把这个字段安排在节点细节表里。
更多树类文章