基于普通数据库的树型结构表的存储与查询技术的制作方法

文档序号:8282338阅读:401来源:国知局
基于普通数据库的树型结构表的存储与查询技术的制作方法
【技术领域】
[0001]本发明涉及一种适用于普通数据库的有关树型结构数据表的节点数据的存储与查询方法及系统。属于信息技术领域。
【背景技术】
[0002]随着信息技术的发展,计算机网络中带数据库的信息技术应用到了各行各业,由于数据的复杂性,很多数据库中的数据采用树型结构数据表进行存储与查询,而在某些情况下,当树型结构数据量大,层级较深时,对数据库中的数据检索的效率就很难得到保证。现有技术中,很多数据库系统都是从业务上进行控制,如采用固定数的深度或一次性只查询出一级节点,而不是所有子节点,一般的获取所有子节点都是使用递归的算法,当层级较深时,系统中将占用较多的资源,或者计算机系统没有足够的内存将无法计算获取所有子节点。而本发明就是基于对有关树型结构数据的存储进行优化,把树型结构变为扁平结构,从而提闻节点的检索效率。

【发明内容】

[0003]本发明的目的是解决普通数据库下检索树形结构数据表中的节点的效率问题。本发明的技术方案如下:
一种数据库中快速查询节点的方法,包括步骤:
1)在数据库中预先存储树型结构数据表,所述树型结构数据表中包括多个节点,每个节点包含左边界字段,右边界字段,父节点id和节点id字段四个属性;其中,每个节点的左边界值小于右边界值;且左、右边界值均为正整数;
2)为树型结构数据表的左、右边界以及父节点添加索引。
[0004]3)设置与树型结构数据表相关的插入触发器、删除触发器、修改触发器;所述插入触发器、删除触发器、修改触发器分别用于向树型结构数据表中插入节点,删除节点,修改节点;
4)当需要查询某节点的所有子节点时,在树型结构数据表中检索左、右边界值在待查询节点的左、右边界值之间的所有节点,并记录所检索到的节点id,所述id对应的节点即待查询节点的子节点;
5)当需要查找某节点的所有父节点时,只需要在树型结构数据表中筛选出左、右边界值范围包括待查找节点的左、右边界值的所有节点即可。
[0005]本申请中还公开了一种快速查询节点的系统,具体包括以下模块:
树型结构数据表存储模块,用于在数据库中预先存储树型结构数据表,所述树型结构数据表中包括多个节点,每个节点包含左边界字段,右边界字段,父节点id和节点id字段四个属性;其中,每个节点的左边界值小于右边界值;且左、右边界值均为正整数;
索引模块,用于为树型结构数据表的左、右边界以及父节点添加索引。
[0006]设置模块,用于设置与树型结构数据表相关的插入触发器、删除触发器、修改触发器;所述插入触发器、删除触发器、修改触发器分别用于向树型结构数据表中插入节点,删除节点,修改节点;
子节点查询模块,用于当需要查询某节点的所有子节点时,在树型结构数据表中检索左、右边界值在待查询节点的左、右边界值之间的所有节点,并记录所检索到的节点id,所述id对应的节点即待查询节点的子节点;
父节点查询模块,用于当需要查找某节点的所有父节点时,只需要在树型结构数据表中筛选出左、右边界值范围包括待查找节点的左、右边界值的所有节点即可。
[0007]本发明通过对有关树型结构数据表的节点数据的存储、插入、删除及修改进行优化,在节点中增加左边界字段及右边界字段,把树型结构变为扁平结构,从而提高检索节点效率。
【附图说明】
[0008]图1为节点模型图;
图2为节点添加图;
图3为节点删除图;
图4为节点位置修改图;
图5为节点查询图。
【具体实施方式】
[0009]为解决数据库中树型结构数据表中对节点的检索查询效率问题,本发明对计算机网络系统普通数据库中树型结构数据表中节点数据的存储与查询方法进行了优化,【具体实施方式】如下:
在数据库系统中设定节点的存储方式,为每个节点添加两个属性,即左边界与右边界,该两个属性值分别对应一个正整数,且左边界值小于右边界值。添加属性值后,树型结构对应的节点的属性通常包含四种重要元素,节点ID,父节点ID,左边界与右边界,具体参见图1o
[0010]本申请中快速查询节点的具体实施步骤如下:
1.在数据库中预先存储树型结构数据表,所述树型结构数据表中包括多个节点,每个节点包含左边界字段,右边界字段,父节点id和节点id字段四个属性;
2.为树型结构数据表的左、右边界以及父节点添加索引。
[0011]3.设置与树型结构数据表相关的插入触发器、删除触发器、修改触发器;所述插入触发器、删除触发器、修改触发器分别用于向树型结构数据表中插入节点,删除节点,修改节点;其中,
所述插入触发器用于,当在数据库中对树型结构数据表添加节点时,先对树型结构数据表中的各节点进行后序排列,找到待添加节点位置的后一个节点,获取该节点的右边界值m,定义新添加节点的左、右边界值分别为m,m+1,其中m为正整数;将排在添加节点位置后的每个节点的右边界都加2,而对应的左边界在其值大于m时都加2,其他情况下左边界值不变。插入触发器具体插入节点的方式参见图2所示:有后序排列的树BEFCDA,需要在节点B后添加一个节点G,这时把EFCDA每个节点的右边界都加上2,即分别修改为:8,10,11,13,14。把EFCDA的所有左边界大于6的都加2,即FD的左边界最后为:9,12。
[0012]所述删除触发器用于,当在树型结构数据表中删除一个节点时,把整个树型结构数据表的各节点后序排列后,首先把待删除节点删掉,然后把排在需要删除的节点后的所有节点的右边界值减2,对应的左边界值在大于删除节点的左边界值时减2。即所述删除触发器与插入触发器添加节点的步骤正好相反。删除触发器删除节点的操作如图3所示,当需要删除节点H时,首先把此节点删掉,然后再把所有左边界值大于8的节点的左边界值减2,最后把右边界值大于9的节点的右边界值减2。
[0013]所述修改触发器用于,当修改数据库中树型结构数据表的节点信息时,如果待修改节点的位置发生变换,先触发删除触发器,进行该节点的删除操作,再触发插入触发器进行该节点的添加操作。即把整个树型结构数据表的各节点后序排列后,首先把待修改节点删掉,把后续排列后待修改节点之后的所有节点的右边界值减2,对应的左边界值在大于待修改节点的左边界值时减2,然后把此节点移至需要修改的位置,把其左边界值设定为第一个后置节点(即需要修改的位置的后一个节点)的右边界值m,把其右边界值设定为m+1,把所有后置节点的右边界值加2,对应的左边界值大于m的将该左边界值加2。修改触发器修改节点的操作如图4所示,如果需要把节点G的后置节点H移至F节点的前置位。首先将H节点摘除,把EFCDA的右边界值减2后分别变为:8,10,11,13,14,把左边界值大于8的左边界值都减2,即FD变为9,12。然后把H节点左右边界分别设置为此时F节点的右边界值,和右边界值加1,即设为:10,11。把H的后置节点FCDA的右边界均加2,分别变为12,13,15,16。把对应节点中左边界值大于8的左边界值都加2,即D的左边界设置为14。
[0014]4.当需要查询某节点的所有子节点时,在树型结构数据表中检索左、右边界值在待查询节点的左、右边界值之间的所有节点,并记录所检索到的节点id,该id对应的节点即待查询节点的子节点。
[0015]当对数据库中树型结构数据表进行子节点查询时,经过上述方式对树型结构数据表中的数据的存储进行优化后,能够以较高效率获取查询结果。通过为每个节点添加左右边界属性后,把树型结构数据表变成了扁平结构。复杂度从指数型变成了直线型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1