常见树型表的基础结构(表1): ID 节点编号 PID 所属父节点编号

对这类树型结构的数据进行查询一般是递归,即: 输入节点编码,然后在一个递归查询中串出所有子节点列表;

树型表基础表结构的改进(表2):

ID 节点编号 PID 所属父节点编号 MarkNum 节点基数 LevelNum 节点所在层级数

MarkNum为节点基数字段 注:MarkNum受小数精度极限影响,可设为字符串类型 LevelNum为节点所属层级字段 这两个值的计算方式如下: N任意层的基数(0<N<=1) L层极数(L>=1) M倍数规则(M=1/2) enter image description here K同层同父的相邻节点的增量 P 扩展小数位的长度(P=4),该值与同父子节点的个数相关,以P=4为例,同父子节点的个数为最大为999 W为任意层级数L实际保留小数的位数 W=L-2+(L-1)*P (L>=2) K=(1/10)W

同父各子节点基数计算方式如下: enter image description here N`同父的各子节点基数 I同父的子节点序列索引数(I>=1)

改进后的表节点查询可以以非递归方式实现,即: 根据节点所在的基数和所属层级数,这两个参数进行指定的计算式来生成查询操作所需的条件: 设R(N,L)为生成查询条件 N为输入节点的基数 L(L>=2)为输入节点所属层级数 round为sql标准函数 n 为表(2)中所有节点的基数集合 R(N,L) => 0== mod(N,round(n,W)) Λ L

本人技术能力有限,不足之处,请指教 basic_wan@163.com