一种定义父子节点关系的方法

Posted zhaogaojian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一种定义父子节点关系的方法相关的知识,希望对你有一定的参考价值。

先说下场景:手头有一个web项目,因为业务需要,需要在父级节点下增加子节点,项目本身比较复杂,经过考虑,在不增加字段的情况下,做较小代码改动的实现方法如下。

1、项目中目前父节点存储生长方向为正向,并且已经存储了大量的数据

     1,2,3,4,5....

2、单个父节点id下的子节点个数不是特别多,允许子节点最大个数为999个,所有的子节点childid定义为:

   -(id*1000)+1

   -(id*1000)+2

   ...(id*1000)+999

   即父节点

   1 对应的子节点为-999,-998,-997,-1等

   2 对应的子节点为-1999,-1998,-1997...,-1001

3、通过子节点child查父节点id方法为

id=(Math.abs(childid) - Math.abs(childid) % 1000) / 1000 + 1

   -998的父节点即为:(998-998)/1000+1=1 

   -1997的父节点即为:(1997-997)/1000+1=2

4、查找指定父节点id的所有子节点范围为

{-id*1000+1,-id*1000+999}

   1的子节点范围为{-999,-1}

   2的子节点范围为{-1999,-1001}

通过以上的方式,即可不影响父节点id的向上生长,同时也能保证子节点,父节点区分(只需要在现有方法内根据正负值做逻辑处理即可)。

以上是关于一种定义父子节点关系的方法的主要内容,如果未能解决你的问题,请参考以下文章

用java代码将从数据库中取出的具有父子关系的数据转成json格式

oracle 父子关系

从json数据中获取父子关系中所有子节点的总和

读取省市区json文件,插入数据库表,表中保存父子节点对应关系

jquery的父子兄弟节点查找示例代码

Unity3D3D 物体概念 ① ( 轴心点概念 | 物体的父子关系 | 子节点相对坐标 )