CN103106198A - 树型结构实现方法和装置 - Google Patents
树型结构实现方法和装置 Download PDFInfo
- Publication number
- CN103106198A CN103106198A CN2011103525309A CN201110352530A CN103106198A CN 103106198 A CN103106198 A CN 103106198A CN 2011103525309 A CN2011103525309 A CN 2011103525309A CN 201110352530 A CN201110352530 A CN 201110352530A CN 103106198 A CN103106198 A CN 103106198A
- Authority
- CN
- China
- Prior art keywords
- node
- relation value
- identification code
- field
- tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种树型结构的实现方法,包括如下步骤:建立树型结构的数据库表,所述数据库表包括编码字段和关联字段;在每个节点的所述编码字段中设置一个唯一的识别码;在每个节点的所述关联字段中设置一关系值,根节点的所述关系值为其所述识别码,其他节点的所述关系值是在其父节点的所述关系值加上自身的所述识别码,并用有别于所述识别码的间隔符隔开。本发明还提供一种树型结构的实现装置。与传统技术相比,在遍历上述方法和装置实现的树型结构时,可以采用【SELECT[表字段名1,表字段名2,…]FROM[表名]WHERE longNumber LIKE[‘根节点的关系值%’];】这样一个简单且可以跨平台使用的语句来实现,所耗时间缩短一半左右,大大提高了遍历和查询效能。
Description
【技术领域】
本发明涉及数据结构领域,特别是涉及一种树型结构的实现方法和装置。
【背景技术】
树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:
每个节点有零个或多个子节点;
每一个子节点只有一个父节点;
没有前驱(父节点)的节点为根节点。
所谓树节点编码:是指数据库存储树节点记录时,用一个编码字段来唯一确定一个树节点,此编码值不能重复。
目前传统技术的树型结构设计方案主要是采用在每个树节点中用一个parentId字段存储其父节点的ID值。根节点没有父节点,所以其parentId为空或者为一个特殊值。遍历一棵树时,从根节点开始,采用递归查询的方式遍历其下所有层次的子节点记录。然而,传统的树型结构,在遍历节点时,由于需要采用递归查询的方法进行遍历,而递归查询需要不断调用递归函数,因此遍历一棵树时的效能较低,耗费时间较长。
【发明内容】
基于此,有必要提供一种可以高效遍历和查询的树型结构的实现方法和装置。
一种树型结构的实现方法,包括如下步骤:
建立树型结构的数据库表,所述数据库表包括编码字段和关联字段;
在每个节点的所述编码字段中设置一个唯一的识别码;
在每个节点的关联字段中设置一关系值,根节点的所述关系值为其所述识别码,其他节点的所述关系值是在其父节点的所述关系值加上自身的所述识别码,并用有别于所述识别码的间隔符隔开。
本发明另一实施例中,所述关联字段为字符串类型字段。
本发明另一实施例中,新增节点时,其所述关系值是在其父节点的所述关系值上加入自身的所述识别码,再用所述间隔符隔开。
本发明另一实施例中,插入节点时,其子节点的所述关系值是通过修改语句,将其子节点的原始关系值中的原父节点的关系值替换为当前父节点的关系值。
本发明另一实施例中,所述识别码为字母、数字或者其组合,所述间隔符为符号。
一种树型结构的实现装置,包括建表模块、编码模块和关联模块,所述建表单元用于建立树型结构的数据库表,所述数据库表包括编码字段和关联字段;所述编码模块用于在每个节点的所述编码字段中设置一个唯一的识别码;所述关联模块用于在每个节点的所述关联字段中设置一关系值,根节点的所述关系值为其识别码,其他节点的所述关系值是在其父节点的所述关系值加上自身的所述识别码,并用有别于所述识别码的间隔符隔开。
本发明另一实施例中,所述关联字段为字符串类型字段。
本发明另一实施例中,在新增节点时,所述关联模块用于在其父节点的所述关系值上加入自身的所述识别码,再用所述间隔符隔开,并记录在当前节点的所述关联字段中。
本发明另一实施例中,插入节点时,所述关联模块用于通过修改语句,将其子节点的原始关系值中的原父节点的关系值替换为当前父节点的关系值,并记录在所述子节点的关联字段中。
本发明另一实施例中,所述识别码为字母、数字或者其组合,所述间隔符为符号。
与传统技术相比,在遍历上述方法和装置实现的树型结构时,可以采用【SELECT[表字段名1,表字段名2,…]FROM[表名]WHERE longNumberLIKE[‘根节点的关系值%’];】这样一个简单且可以跨平台使用的语句来实现,所耗时间缩短一半左右,大大提高了遍历和查询效能。
【附图说明】
图1为一实施例的树型结构的实现方法步骤流程图;
图2为一实施例的树型结构的架构示意图;
图3为一实施例的树型结构的实现装置的功能模块图。
【具体实施方式】
为了解决传统技术遍历和查询树型结构数据效能较低的问题,提出了一种便于遍历和查询的树型结构的实现方法和装置。
本发明是在传统树型结构的基础上添加一个单独的字符串类型字段,该字符串类型字段存储的是由根节点到当前节点,把能唯一确定一个节点的编码字段的值按节点顺序串联并用特殊符号作为分隔符所组成的字符串。如此,遍历此树时只需对该字符串类型字段进行简单的过滤即可。
如图1所示,其为一实施例的树型结构的实现方法步骤流程图,包括如下步骤:
步骤S01,建立树型结构的数据库表,所述数据库表包括编码字段和关联字段。在本发明实施例中,编码字段用Number命名,关联字段用longNumber命名。
步骤S02,在每个节点的编码字段中设置一个唯一的识别码。在本发明实施例中,识别码为字母、数字、或者其组合。
步骤S03,在每个节点的关联字段中设置一关系值,根节点的关系值为其识别码,其他节点的关系值是在其父节点的关系值加上自身的识别码,并用有别于识别码的间隔符隔开。在本发明实施例中,间隔符可以为“:”、“!”、“”、“#”、“&”等符号,只需是识别码未使用的字符即可。
请参阅图2,其为一实施例的树型结构的架构示意图。所述树型结构包括多个节点:节点A、节点B、节点C、节点D。节点A为根节点,节点A有节点B和节点C二个子节点,节点A为节点B和节点C的父节点。节点C有节点D一个子节点。节点C是节点D的父节点。此处只是列举四个节点,实际运用中,节点数量根据需要设立。
每个节点的编码字段(Number)用于通过唯一的识别码标识对应节点。如节点A的识别码Number=1,节点B的识别码Number=2,节点C的识别码Number=3,节点D的识别码Number=4。
关联字段是一个字符串类型字段,间隔符采用“!”。
节点C的关系值longNumber=“根节点A的识别码”!“节点C的识别码”=1!3。
节点D的关系值longNumber=“根节点A的识别码”!“节点C的识别码”!“节点D的识别码”=1!3!4,以此类推。
遍历图2中的树型结构时,只需要用:
【SELECT[表字段名1,表字段名2,…]FROM[表名]WHERElongNumber LIKE[‘根节点的关系值%’];】
这个简单的语句就可以查询出所有的节点信息。上述“表名”是指树型结构的数据库表的名称;“表字段名1”和“表字段名2”是指树型结构的数据库表的列的名称;“‘1%””是指查询的范围,若要遍历图2所示的整棵树,则从根节点开始,即是“‘1%’”,若要查询某个节点信息,改为某个节点的编码即可,若要查询某分枝的所有信息时,则将关系值“1”改为该分枝最上层节点的关系值即可。如:要查询节点C及以下的所有节点信息时,只需要将前述语句中的‘1%’改成‘1!3%’即可。
传统树型结构的遍历过程中,根据不同的数据库平台都需要采用专门对应的遍历语句,且遍历语句都比较复杂,因而影响数据查询性能。如:在Oracle数据库中,传统方式遍历一棵树是用【SELECT*FROM DIRECT START WITHparented IS NULL CONNECT BY PRIOR parentId=id;】语句。而在遍历本案的树型结构时,则可以采用前述的简单语句,耗时时间可以缩短一半左右,大大提高了遍历效能。
传统的树型结构在不同的数据库(如Oracle数据库、DB2数据库、MySQL数据库等等)中,都必须采用各自不同的专用遍历语句。而遍历本案的树型结构时,可以在Oracle、DB2、MySQL等数据库中统一使用前述的简单遍历语句,这便实现了遍历语句的跨平台使用。
另外,在查询树型结构中某个分枝的所有节点信息时,传统方式需要遍历整棵树,把所有信息缓存,然后通过对节点间的关系用程序筛选出需要的节点信息。采用本案的树型结构,则可以直接查询某个分枝下的所有节点信息,如要查询图2中节点C及以下的所有节点信息时,只需要将前述语句中的‘1%’改成‘1!3%’即可,而不需要去查询整棵树,这样便可以大大节省用户缓存,同时不需要传统查询方式中繁琐的筛选程序,即降低了树型结构业务操作的复杂度。
当新增节点时,其关系值是在其父节点的关系值上加入自身的识别码,再用间隔符隔开。
当在中间插入节点时,其子节点的关系值是通过修改语句,将其子节点的原始关系值中的原父节点的关系值替换为当前父节点的关系值。
如图3所示,其为一实施例的树型结构的实现装置10的功能模块图,包括建表单元101、编码模块102和关联模块103。
建表单元101用于建立树型结构的数据库表,所述数据库表包括编码字段和关联字段。在本发明实施例中,编码字段用Number命名,关联字段用longNumber命名。
编码模块102用于在每个节点的编码字段中设置一个唯一的识别码。在本发明实施例中,识别码为字母、数字或者其组合。
关联模块103用于在每个节点的关联字段中设置一关系值,根节点的关系值为其识别码,其他节点的关系值是在其父节点的关系值加上自身的识别码,并用有别于识别码的间隔符隔开。在本发明实施例中,间隔符可以为“:”、“!”、“”、“#”、“&”等符号,只需是识别码未使用的字符即可。。
在新增节点时,所述关联模块103用于在其父节点的关系值上加入自身的识别码,再用间隔符隔开,并记录在当前节点的所述关联字段中。
插入节点时,所述关联模块103用于通过修改语句,将其子节点的原始关系值中的原父节点的关系值替换为当前父节点的关系值,并记录在所述子节点的关联字段中。。
相对传统技术而言,在遍历和查询通过树型结构的实现装置10产生树型结构时,可以采用前述的简单并可跨平台使用的简单语句完成,使得其遍历和查询效率提升显著,所耗时间大大减少。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种树型结构的实现方法,其特征在于,包括如下步骤:
建立树型结构的数据库表,所述数据库表包括编码字段和关联字段;
在每个节点的所述编码字段中设置一个唯一的识别码;
在每个节点的所述关联字段中设置一关系值,根节点的所述关系值为其所述识别码,其他节点的所述关系值是在其父节点的所述关系值加上自身的所述识别码,并用有别于所述识别码的间隔符隔开。
2.根据权利要求1所述的树型结构的实现方法,其特征在于,所述关联字段为字符串类型字段。
3.根据权利要求1所述的树型结构的实现方法,其特征在于,新增节点时,其所述关系值是在其父节点的所述关系值上加入自身的所述识别码,再用所述间隔符隔开。
4.根据权利要求1所述的树型结构的实现方法,其特征在于,插入节点时,其子节点的所述关系值是通过修改语句,将其子节点的原始关系值中的原父节点的关系值替换为当前父节点的关系值。
5.根据权利要求1所述的树型结构的实现方法,其特征在于,所述识别码为字母、数字或者其组合,所述间隔符为符号。
6.一种树型结构的实现装置,其特征在于,包括建表模块、编码模块和关联模块,所述建表单元用于建立树型结构的数据库表,所述数据库表包括编码字段和关联字段;所述编码模块用于在每个节点的所述编码字段中设置一个唯一的识别码;所述关联模块用于在每个节点的所述关联字段中设置一关系值,根节点的所述关系值为其识别码,其他节点的所述关系值是在其父节点的所述关系值加上自身的所述识别码,并用有别于所述识别码的间隔符隔开。
7.根据权利要求6所述的树型结构的实现装置,其特征在于,所述关联字段为字符串类型字段。
8.根据权利要求6所述的树型结构的实现装置,其特征在于,在新增节点时,所述关联模块用于在其父节点的所述关系值上加入自身的所述识别码,再用所述间隔符隔开,并记录在当前节点的所述关联字段中。
9.根据权利要求6所述的树型结构的实现装置,其特征在于,插入节点时,所述关联模块用于通过修改语句,将其子节点的原始关系值中的原父节点的关系值替换为当前父节点的关系值,并记录在所述子节点的关联字段中。
10.根据权利要求6所述的树型结构的实现装置,其特征在于,所述识别码为字母、数字或者其组合,所述间隔符为符号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103525309A CN103106198A (zh) | 2011-11-09 | 2011-11-09 | 树型结构实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103525309A CN103106198A (zh) | 2011-11-09 | 2011-11-09 | 树型结构实现方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103106198A true CN103106198A (zh) | 2013-05-15 |
Family
ID=48314063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103525309A Pending CN103106198A (zh) | 2011-11-09 | 2011-11-09 | 树型结构实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103106198A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279544A (zh) * | 2013-06-05 | 2013-09-04 | 中国电子科技集团公司第十五研究所 | 树型结构数据在关系型数据库中的存储和查询方法及装置 |
CN103559323A (zh) * | 2013-11-22 | 2014-02-05 | 盛杰 | 数据库实现方法 |
CN104063413A (zh) * | 2013-11-11 | 2014-09-24 | 国云科技股份有限公司 | 一种mysql数据库树状结构及其快速检索方法 |
CN104408067A (zh) * | 2014-10-29 | 2015-03-11 | 中国建设银行股份有限公司 | 一种多树结构的数据库设计方法及装置 |
CN104598517A (zh) * | 2014-12-09 | 2015-05-06 | 北京网梯科技发展有限公司 | 基于普通数据库的树型结构表的存储与查询技术 |
CN105630943A (zh) * | 2015-12-23 | 2016-06-01 | 合一网络技术(北京)有限公司 | 一种广告素材查找方法及装置 |
CN106446086A (zh) * | 2016-09-09 | 2017-02-22 | 中国南方电网有限责任公司电网技术研究中心 | 用于云计算环境的树结构操作方法和系统 |
CN108132970A (zh) * | 2017-12-04 | 2018-06-08 | 洛阳师范学院 | 基于云计算的大数据分布式处理方法及系统 |
CN111309721A (zh) * | 2018-12-11 | 2020-06-19 | 北京京东尚科信息技术有限公司 | 一种确定数据表关联关系的方法和装置 |
CN111314245A (zh) * | 2020-01-17 | 2020-06-19 | 鹏城实验室 | 报文调度方法及装置、存储介质及电子设备 |
CN115828918A (zh) * | 2022-12-09 | 2023-03-21 | 中国人民解放军国防科技大学 | 一种装备名称实体分辨方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339568A (zh) * | 2008-08-21 | 2009-01-07 | 金蝶软件(中国)有限公司 | 一种构建数据树的方法和装置 |
CN101408895A (zh) * | 2008-11-03 | 2009-04-15 | 金蝶软件(中国)有限公司 | 一种根据节点集合构造节点关系树的方法、装置及系统 |
-
2011
- 2011-11-09 CN CN2011103525309A patent/CN103106198A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339568A (zh) * | 2008-08-21 | 2009-01-07 | 金蝶软件(中国)有限公司 | 一种构建数据树的方法和装置 |
CN101408895A (zh) * | 2008-11-03 | 2009-04-15 | 金蝶软件(中国)有限公司 | 一种根据节点集合构造节点关系树的方法、装置及系统 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279544A (zh) * | 2013-06-05 | 2013-09-04 | 中国电子科技集团公司第十五研究所 | 树型结构数据在关系型数据库中的存储和查询方法及装置 |
CN104063413A (zh) * | 2013-11-11 | 2014-09-24 | 国云科技股份有限公司 | 一种mysql数据库树状结构及其快速检索方法 |
US9665600B2 (en) | 2013-11-22 | 2017-05-30 | Jie Sheng | Method for implementing database |
CN103559323A (zh) * | 2013-11-22 | 2014-02-05 | 盛杰 | 数据库实现方法 |
WO2015074290A1 (zh) * | 2013-11-22 | 2015-05-28 | 盛杰 | 数据库实现方法 |
CN104408067A (zh) * | 2014-10-29 | 2015-03-11 | 中国建设银行股份有限公司 | 一种多树结构的数据库设计方法及装置 |
CN104408067B (zh) * | 2014-10-29 | 2019-08-13 | 中国建设银行股份有限公司 | 一种多树结构的数据库设计方法及装置 |
CN104598517A (zh) * | 2014-12-09 | 2015-05-06 | 北京网梯科技发展有限公司 | 基于普通数据库的树型结构表的存储与查询技术 |
CN105630943A (zh) * | 2015-12-23 | 2016-06-01 | 合一网络技术(北京)有限公司 | 一种广告素材查找方法及装置 |
CN106446086A (zh) * | 2016-09-09 | 2017-02-22 | 中国南方电网有限责任公司电网技术研究中心 | 用于云计算环境的树结构操作方法和系统 |
CN108132970A (zh) * | 2017-12-04 | 2018-06-08 | 洛阳师范学院 | 基于云计算的大数据分布式处理方法及系统 |
CN111309721A (zh) * | 2018-12-11 | 2020-06-19 | 北京京东尚科信息技术有限公司 | 一种确定数据表关联关系的方法和装置 |
CN111314245A (zh) * | 2020-01-17 | 2020-06-19 | 鹏城实验室 | 报文调度方法及装置、存储介质及电子设备 |
CN111314245B (zh) * | 2020-01-17 | 2023-10-24 | 鹏城实验室 | 报文调度方法及装置、存储介质及电子设备 |
CN115828918A (zh) * | 2022-12-09 | 2023-03-21 | 中国人民解放军国防科技大学 | 一种装备名称实体分辨方法 |
CN115828918B (zh) * | 2022-12-09 | 2024-02-02 | 中国人民解放军国防科技大学 | 一种装备名称实体分辨方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103106198A (zh) | 树型结构实现方法和装置 | |
CN101286160B (zh) | 数据库索引的方法 | |
CN102662974B (zh) | 一种基于邻接节点树的网络图索引方法 | |
CN100562874C (zh) | 一种增量数据捕获方法和系统 | |
CN103561133B (zh) | 一种ip地址归属信息索引方法及快速查询方法 | |
CN109902142B (zh) | 一种基于编辑距离的字符串模糊匹配和查询方法 | |
CN101751406A (zh) | 一种实现基于列存储的关系型数据库的方法及装置 | |
CN105677683A (zh) | 批量数据查询方法和装置 | |
CN104408067A (zh) | 一种多树结构的数据库设计方法及装置 | |
CN103365991A (zh) | 一种基于一维线性空间实现Trie树的词典存储管理方法 | |
CN103092992B (zh) | 基于Key/Value型NoSQL数据库的矢量数据先序四叉树编码和索引方法 | |
CN104021123A (zh) | 用于数据迁移的方法和系统 | |
CN103699647B (zh) | 一种字符串词典的索引方法及系统 | |
CN104217011A (zh) | HBase二级索引表的查询方法和装置 | |
CN106503040B (zh) | 适用sql查询方法的kv数据库及其创建方法 | |
WO2003030032A3 (en) | An index structure to access hierarchical data in a relational database system | |
KR101244466B1 (ko) | NoSQL 기반 데이터 모델링 방법 | |
CN105447105A (zh) | 基于NoSQL的分布式物联网数据的单字段区间索引查询方式 | |
CN104408128B (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN116521956A (zh) | 一种图数据库查询方法、装置、电子设备及存储介质 | |
CN114860727A (zh) | 拉链表更新方法及装置 | |
CN108984626B (zh) | 一种数据处理方法、装置及服务器 | |
CN107807977B (zh) | 一种基于配置的对象属性元数据抽取系统 | |
CN104008205A (zh) | 一种内容路由的查询方法及系统 | |
CN103365960A (zh) | 电力多级调度管理结构化数据的离线搜索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130515 |