4.4序列号关联替换
输入旧序列号SN_old、新序列号SN_new,以进行替换。替换的前提条件:
1)SN_new的父节点必须是虚节点,也就是说,SN_new必须是根节点。
2)SN_new不能等于SN_old所在树上的根节点。
替换的方法为:
1)设置sn_new的父节点等于sn_old的父节点。
2)设置sn_old的父节点为一个新的虚节点,这样sn_old仍可以看成以sn_old为根的一棵树。
如图4-8的已有关联:

以6666替换3333的结果如图4-9:

4.5序列号关联注销
对于在序列号关联表中已有记录的序列号,它不仅有自己的节点,而且也可能是其它序列号的父节点,因此在注销时可能对其它序列号产生影响。
序列号关联注销的动作为:
1)定义该序列号的父节点为一新的虚节点;
2)更新所有该序列号的子节点,分别定义其父节点为新的虚节点。
例如:注销1113,如图4-10所示:


4.6序列号关联查询
输入单个序列号进行关联查询的方法为:
1)追溯至此序列号的根节点。
2)以根节点做递归查询,列出所有树状结构的子节点。
3)在每个节点上,通过关联表得到序列号的相关信息。
这种方法很容易还原生成序列号关联关系的树,而且也不存在效率的问题。
但是在实际的生产中,经常需要做大批量的查询,并且生成格式统一的报表,比如根据工单输出所有的关联序列号。象这种情况,如果还要逐个序列号进行迭代查询的话那么效率就会有很大的影响。解决方法是,在查询之前,系统定期对关联数据进行后台处理,把树表展成平表,这样查询时就无需迭代,一条SQL就可以跑出所有的数据。具体的实现方面,需要数据库设计方面的技巧,也可以参考数据仓库的原理。