CN110232063A - 层级数据查询方法、装置、计算机设备和存储介质 - Google Patents
层级数据查询方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110232063A CN110232063A CN201910320206.5A CN201910320206A CN110232063A CN 110232063 A CN110232063 A CN 110232063A CN 201910320206 A CN201910320206 A CN 201910320206A CN 110232063 A CN110232063 A CN 110232063A
- Authority
- CN
- China
- Prior art keywords
- data
- parameter
- subdatasheet
- node
- incidence relation
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/282—Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
Abstract
本申请涉及一种基于多表联合迭代的层级数据查询方法、装置、计算机设备和存储介质,所述方法包括:将待查询的数据表作为主数据表,并针对所述主数据表中除根结点之外的每一个层级上的每一个结点构建一个对应的子数据表;每一个子数据表中存储有对应结点的数据;构建关联关系表,所述关联关系表中存储有所述主数据表与各个所述子数据表之间的关联关系;采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据。不论各个结点的数据格式是否相同,均可以采用现有的层级数据查询函数进行层级数据查询。
Description
技术领域
本发明涉及数据查询技术领域,特别是涉及一种基于多表联合迭代的层级数据查询方法、装置、计算机设备和存储介质。
背景技术
WITH RECURSIVE函数是postgreSQL数据库中提供的一个用于获取层级数据的函数,即WITH RECURSIVE函数可以对单表中的层级数据进行查询并获取到层级数据。这里的层级可以一个树状结构目录,父层级包含子层级,子层级包含子子层级。这里举例来说明WITH RECURSIVE函数的作用:参见图1,图1的代码展示的是一个单表中的数据内容,其中第一个参数id代表后面的文字数据对应的id,第二个参数pid代表后面的文字数据对应的parentID即父层级id,最后一个参数为文字数据。例如,针对第四条数据,杭州市对应的id为004,它的父层级id为002,而002为浙江省对应的id,也就是说杭州市的父层级是浙江省。可见,图1所示的单表中的数据是分为几个层级的,即省—市—区,但在图1中无法直观的获取这个单表里数据之间的层级关系,尤其是数据量很大的时候,这时使用WITH RECURSIVE函数对单表中的层级数据进行查询,得到图2示出的层级关系。
在对相关技术研究过程中,发明人发现:图1中的每一条数据都是(id,pid,name),且每个层级的数据格式也都是相同的,但是如果各个层级的数据格式不同,WITHRECURSIVE函数就无法获取层级数据。
发明内容
本申请实施例提供一种层级数据查询方法、装置、计算机设备和存储介质,能够获取到不同数据格式的结点的层级数据。
本申请实施例提供一种层级数据查询方法,包括:
将待查询的数据表作为主数据表,并针对所述主数据表中除根结点之外的每一个层级上的每一个结点构建一个对应的子数据表;每一个子数据表中存储有对应结点的数据;
构建关联关系表,所述关联关系表中存储有所述主数据表与各个所述子数据表之间的关联关系;
采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据。
在一些实施例中,所述主数据表中包括多条第一数据,每一条第一数据中包括第一参数、第二参数和第三参数;其中,所述第一参数为该条第一数据的对应结点的标识,所述第二参数为所述对应结点的父结点的标识,所述第三参数为所述对应结点所代表的含义。
在一些实施例中,每一结点对应的子数据表中包括多条第二数据,每一条第二数据中包括第四参数、第五参数和第六参数;其中,所述第四参数为该条第二数据在所属子数据表中的编号,所述第五参数为所述所属子数据表对应的结点的父结点在所述主数据表中的标识,所述第六参数包括所述所属子数据表对应的结点上与所述第四参数对应的相关信息。
在一些实施例中,所述关联关系表中包括多条关联数据,每一条关联数据中包括第七参数、第八参数和第九参数;其中,所述第七参数为该条关联数据在所述关联关系表中的编号,所述第八参数为该条关联数据对应的结点在所述主数据表中的标识,所述第九参数为该条关联数据在其对应的子数据表中所关联的第二数据在所属子数据表中的编号,所述第九参数与所述第四参数相对应。
在一些实施例中,所述采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据,包括:在所述主数据表中的各个第一参数中查找待查询的结点对应的标识,并在所述关联关系表中查找第八参数为该标识的关联数据,根据该关联数据中的第八参数确定对应的子数据表,根据该关联数据中的第九参数确定所述对应的子数据表中对应的第二数据的第四参数;根据所述对应的第二数据的第四参数,获取对应的所述相关信息。
在一些实施例中,所述层级数据查询函数为WITH RECURSIVE函数。
本申请实施例提供一种层级数据查询装置,所述装置包括:
第一构建模块,用于将待查询的数据表作为主数据表,并针对所述主数据表中除根结点之外的每一个层级上的每一个结点构建一个对应的子数据表;每一个子数据表中存储有对应结点的数据;
第二构建模块,用于构建关联关系表,所述关联关系表中存储有所述主数据表与各个所述子数据表之间的关联关系;
数据查询模块,用于采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据。
在一些实施例中,所述主数据表中包括多条第一数据,每一条第一数据中包括第一参数、第二参数和第三参数;其中,所述第一参数为该条第一数据的对应结点的标识,所述第二参数为所述对应结点的父结点的标识,所述第三参数为所述对应结点所代表的含义。
本申请实施例还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述层级数据查询方法的步骤。
本申请实施例还提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述层级数据查询方法的步骤。
本申请实施例提供的层级数据查询方法、装置、计算机设备和存储介质,对将除了根节点之外的每一个结点都设置一个对应的子数据表,用来存储该结点的相关数据,并构建一个关联关系表,以将主数据表和各个子数据表中的数据进行关联。由于每一个结点都有一个自己的子数据表,因此层级结构可以不同,各个子数据表之间相互独立,不同子数据表中的数据格式可以不同,即不同结点对应的数据可以有自己的特色,不同结点对应的数据可以具有差异化。由于主数据表和各个子数据表之间通过关联关系表进行关联,不论各个子数据表中的数据格式相同还是不同,都不影响层级数据的获取。也就是说,现有技术中采用目前常用的层级数据查询函数(例如,WITH RECURSIVE函数)进行层级数据查询时,需要各个结点的数据格式相同;但是当采用本申请实施例提供的层级数据查询方法,对除根结点之外的每一个结点设置一个对应的子数据表,并构建一个关联关系表,不论各个结点的数据格式是否相同,均可以采用现有的层级数据查询函数进行层级数据查询。
附图说明
图1为一个待查询的数据表的示意图;
图2为采用WITH RECURSIVE函数对图1中的数据表进行层级数据查询得到的层级数据表的示意图;
图3为一个实施例中计算机设备的内部结构框图;
图4为一个实施例中层级数据查询方法的流程图;
图5为一个实施例中层级数据查询装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。
图3为本申请一个实施例中计算机设备的结构示意图。如图3所示,该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种层级数据查询方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种层级数据查询方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提出一种层级数据查询方法,该层级数据查询方法可以应用于图3所示出的计算机设备中。如图4所示,本申请实施例提供的层级数据查询方法包括如下步骤:
S41、将待查询的数据表作为主数据表,并针对所述主数据表中除根结点之外的每一个层级上的每一个结点构建一个对应的子数据表;每一个子数据表中存储有对应结点的数据;
举例来说,图1为主数据表,即将图1中的多条数据形成的数据表作为上述主数据表。在主数据表中包括多条数据,为了与子数据表中的数据进行区分,这里将主数据表中的各条数据称之为第一数据。也就是说,主数据表中可以包括多条第一数据,参见图1,每一条第一数据中可以包括第一参数、第二参数和第三参数;其中,所述第一参数为该条第一数据的对应结点的标识,所述第二参数为所述对应结点的父结点的标识,所述第三参数为所述对应结点所代表的含义。例如,图1中的第四条数据中包括嘉兴市对应的结点的标识“006”、嘉兴市对应的结点的父结点的标识即浙江省对应的标识“002”、还有文本数据“嘉兴市”。可理解的是,标识“006”代表的含义即是“嘉兴市”。
在图1中,浙江省对应的结点、广东省对应的结点均位于数据结构的最顶层(可称为第一层),为根节点。衢州市、杭州市、湖州市、嘉兴市、宁波市、绍兴市、台州市、温州市、丽水市、金华市、舟山市均为上述最顶层的下一层(可称为第二层),且对应的结点均为浙江省对应的结点的子结点,上城区、下城区、拱墅区、余杭区、金东区为数据结构的最低层(可称为第三层),且均为杭州市这一结点的子结点。针对第二层中的各个结点和第三层的各个结点,每一个结点可以设置一个对应的子数据表,即结点和子数据表之间是一一对应的关系。
在实际应用中,每一个子数据表中可以存储对应结点有关的数据信息即多条数据,为了与第一数据区分,这里将子数据表中的数据称之为第二数据,也就是说,每一结点对应的子数据表中包括多条第二数据。每一条第二数据中可以包括第四参数、第五参数和第六参数;其中,所述第四参数为该条第二数据在所属子数据表中的编号,所述第五参数为所述所属子数据表对应的结点的父结点在所述主数据表中的标识,所述第六参数包括所述所属子数据表对应的结点上与所述第四参数对应的相关信息。
例如,针对上城区对应的结点,设置的子数据表中可以包括如下内容:
insert into sc_tab(sc_id,pid,community_name[社区名称],community_area[社区面积],population[人口数量/万],prop_man[男性人口比例],prop_woman[女性人口比例])/其含义是插入到上城区对应的子数据表中;
values('0001','004','湖滨街道',3.92,25,65,35);/其含义是插入到上城区对应的子数据表中的第一条数据包括该条数据的编号、上城区对应的父结点的标识和上城区内湖滨街道的相关信息;
insert into sc_tab(sc_id,pid,community_name[社区名称],community_area[社区面积],population[人口数量/万],prop_man[男性人口比例],prop_woman[女性人口比例])/其含义是插入到上城区对应的子数据表中;
values('0002','004','小营街道',10.05,23,58,42)/其含义是插入到上城区对应的子数据表中的第一条数据包括该条数据的编号、上城区对应的父结点的标识和上城区内小营街道的相关信息;
可见,上城区对应的子数据表中包括两条第二数据。其中:
(1.1)sc_id为第四参数,该参数表明这一条第二数据在所属子数据表中的编号。例如,第一条第二数据在上城区对应的子数据表中的编号为0001,第二条第二数据在上城区对应的子数据表中的编号为0002。
(1.2)pid为第五参数,该参数表明所属子数据表对应的结点的父结点的标识。例如,上城区对应的子数据表中的第五参数均为杭州市的标识004。该参数可以体现所属子数据表与其父结点对应的子数据表之间的联系,例如通过该参数可以找到杭州市对应的子数据表。
(1.3)community_name[社区名称]、community_area[社区面积]、population[人口数量/万]、prop_man[男性人口比例]、prop_woman[女性人口比例]均为第六参数,这些参数体现了上城区各个街道的具体信息。例如,第一条第二数据中的第六参数体现了湖滨街道的相关信息,第二条第二数据中第六参数体现了小营街道的相关信息。
再例如,针对余杭区对应的结点,设置的子数据表中可以包括如下内容:
insert into yh_tab(yh_id,pid,enterprise_name[企业名称],revenue[营收/万元/年],profit[利润/万元])/含义是插入到余杭区对应的子数据表中;
values('0001','004','杭州瑞渠科技有限公司',1062,225);/含义是插入到余杭区对应的子数据表中的第一条数据包括该条数据的编号0001、余杭区的父结点的标识004和余杭区内的杭州瑞渠科技有限公司的相关信息;
insert into yh_tab(yh_id,pid,enterprise_name[企业名称],revenue[营收/万元/年],profit[利润/万元])/含义是插入到余杭区对应的子数据表中
values('0002','004','杭州米罗摄影工作室',185,85);/含义是插入到余杭区对应的子数据表中的第二条数据包括该条数据的编号0002、余杭区的父结点的标识004和余杭区内杭州米罗摄影工作室的相关信息;
可见,余杭区对应的子数据表中包括两条第二数据,其中:
(2.1)yh_id为第四参数,该参数表明这一条第二数据在所属子数据表中的编号。例如,第一条第二数据在余杭区对应的子数据表中的编号为0001,第二条第二数据在余杭区对应的子数据表中的编号为0002。
(2.2)pid为第五参数,该参数表明所属子数据表对应的结点的父结点的标识。例如,余杭区对应的子数据表中的第五参数均为杭州市的标识004。该参数可以体现所属子数据表与其父结点对应的子数据表之间的联系,例如通过该参数可以找到杭州市对应的子数据表。
(2.3)enterprise_name[企业名称]、revenue[营收/万元/年]、profit[利润/万元]均为第六参数,这些参数体现了余杭区各个公司的具体信息。例如,第一条第二数据中的第六参数体现了杭州瑞渠科技有限公司的具体信息,第二条第二数据中的第六参数体现了杭州米罗摄影工作室的具体信息。
可理解的是,以上两个举例中上城区对应的结点、余杭区对应的结点均是数据结构中最底层即上述第三层中的结点,当然,针对上述第二层上的结点,也可以设置对应的子数据表,例如针对杭州市设置一个子数据表,在该数据表中也包括五条第二数据;其中,第一条第二数据中包括第四参数-编号“0001”、第五参数-浙江省的标识“002”以及第六参数-杭州市上城区面积、上城区的纳税单位的数量、上城区的总纳税额等;第二条第二数据中包括第四参数-编号“0001”、第五参数-浙江省的标识“002”以及第六参数-杭州市下城区面积、下城区的纳税单位的数量、下城区的总纳税额等;第三条第二数据中包括第四参数-编号“0001”、第五参数-浙江省的标识“002”以及第六参数-杭州市拱墅区面积、拱墅区的纳税单位的数量、拱墅区的总纳税额等;第四条第二数据中包括第四参数-编号“0001”、第五参数-浙江省的标识“002”以及第六参数-杭州市余杭区面积、余杭区的纳税单位的数量、余杭区的总纳税额等;第五条第二数据中包括第四参数-编号“0001”、第五参数-浙江省的标识“002”以及第六参数-杭州市金东区面积、金东区的纳税单位的数量、金东区的总纳税额。
通过上城区、余杭区、杭州市各自对应的子数据表中的第二数据的对比,可以知道,两不同子数据表中第六参数中的内容不同,当然,第六参数的数据格式也可不同,即不同子数据表中第二数据的数据格式不同。
S42、构建关联关系表,所述关联关系表中存储有所述主数据表与各个所述子数据表之间的关联关系;
可理解的是,上述关联关系表能够将上述主数据表和各个子数据表之间关联起来,即通过关联数据表可以将主数据表中的某一条第一数据与某一个子数据表中的某一条第二数据关联起来。
在实际应用中,上述关联关系表中可以包括多条关联数据,每一条关联数据中可包括第七参数、第八参数和第九参数;其中,所述第七参数为该条关联数据在所述关联关系表中的编号,所述第八参数为该条关联数据对应的结点在所述主数据表中的标识,所述第九参数为该条关联数据在其对应的子数据表中所关联的第二数据在所属子数据表中的编号,所述第九参数与所述第四参数相对应。
其中,第九参数为对应的子数据表中关联的第二数据在子数据表中的编号,而第四参数为该条第二数据在所属子数据表中的编号,可见第九参数与第四参数的含义一致。
举例来说,针对图1中的主数据表、上述上城区和上述余杭区,设置一个对应的关联关系表,关联关系表可以包括如下内容:
insert into tb_relation(id,tb_id,area_id)/其含义是插入关联关系表中
values('1001','017','0001');/其含义是插入到关联关系表中的第一条数据中包括该条数据的编号1001、余杭区对应结点的标识017和该条数据在余杭区对应的子数据表中对应的数据的编号0001;
insert into tb_relation(id,tb_id,area_id)/其含义是插入关联关系表中
values('1002','017','0002');/其含义是插入到关联关系表中的第二条数据中包括该条数据的编号1002、余杭区对应结点的标识017和该条数据在余杭区对应的子数据表中对应的数据的编号0002;
insert into tb_relation(id,tb_id,area_id)/其含义是插入关联关系表中
values('1003','014','0001');/其含义是插入到关联关系表中的第三条数据中包括该条数据的编号1003、上城区对应结点的标识014和该条数据在上城区对应的子数据表中对应的数据的编号0001;
insert into tb_relation(id,tb_id,area_id)/其含义是插入关联关系表中
values('1004','014','0002');其含义是插入到关联关系表中的第四条数据中包括该条数据的编号1004、上城区对应结点的标识014和该条数据在上城区对应的子数据表中对应的数据的编号0002;
可见,此时设置的关联关系表中包括四条关联数据,其中:
(3.1)id为第七参数,该参数表明这一条关联数据在关联关系表中的编号。例如,第一条关联数据在关联关系表中的编号为1001,第二条关联数据在关联关系表中的编号为1002,第三条关联数据在关联关系表中的编号为1003,第四条关联数据在关联关系表中的编号为1004。
(3.2)tb_id为第八参数,该参数表明该条关联数据对应的结点在主数据表中的标识,例如,第一条和第二条关联数据的第八参数均为017,而从图1中可知017为余杭区对应的结点的标识,也就是说,第一条和第二条关联数据均可以关联到余杭区对应的子数据表中;再例如,第三条和第四条关联数据的第八参数均为014,而从图1中可知014为上城区对应的结点的标识,也就是说,第三条和第四条关联数据均可以关联到上城区对应的子数据表中。
(3.3)area_id为第九参数,该参数表明这一条关联数据在其对应的子数据表中所关联的第二数据在所属子数据表中的编号。例如,第一条关联数据中的第八参数为017、第九参数为0001,则表明第一条关联数据可以关联到余杭区对应的子数据表中编号为0001的第二数据;再例如,第二条关联数据中的第八参数为017、第九参数为0002,则表明第二条关联数据可以关联到余杭区对应的子数据表中编号为0002的第二数据;再例如,第三条关联数据中的第八参数为014、第九参数为0001,则表明第三条关联数据可以关联到上城区中编号为0001的第二数据;再例如,第四条关联数据中的第八参数为014、第九参数为0002,则表明第四条关联数据可以关联到上城区对应的子数据表中编号为0002的第二数据。
可知,通过第八参数可以知道关联数据关联的是主数据表中的哪一个结点,也可以知道关联数据关联到的是哪一个子数据表,通过第九参数可以知道关联数据关联到的是子数据表中的哪一条第二数据。
S43、采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据。
其中,层级数据查询函数可以但不限于WITH RECURSIVE函数,还可以采用其他的层级数据查询函数。
可理解的是,不同子数据表的数据内容、数据格式可以不同,但是当采用WITHRECURSIVE函数进行层级数据查询时,同一个子数据表中各条第二数据的数据格式是一致的。
在实际应用中,采用层级数据查询函数查询层级数据的过程可以包括:
在所述主数据表中的各个第一参数中查找待查询的结点对应的标识,并在所述关联关系表中查找第八参数为该标识的关联数据,根据该关联数据中的第八参数确定对应的子数据表,根据该关联数据中的第九参数确定所述对应的子数据表中对应的第二数据的第四参数;根据所述对应的第二数据的第四参数,获取对应的所述相关信息。
也就是说,层级数据的查询需关联关系表中的第八参数和第九参数、子数据表中的第四参数。
可理解的是,关联关系表体现的是主数据表分别与多个子数据表之间的数据对应关系。具体的查询过程举例如下:在图1的主数据表中的各个第一参数中查找待查询的结点-余杭区对应的标识,可知余杭区对应的标识为017,还可以确定其上层结点为杭州市及其标识为004,杭州市的上层结点为浙江省及其标识为002;然后在上述关联关系表的各个第八参数中查找内容为017的数据,可见在关联关系表中的前两条数据中的第八参数内容为017,前两条数据对应的子数据表为上述举例中的余杭区对应的结点对应的子数据表,关联关系表中的前两条数据中的第九参数对应该子数据表中的第四参数,进而得知关联关系表中第八参数内容为017的第一条数据对应该子数据表中的第一条数据,关联关系表中第八参数内容为017的第二条数据对应该子数据表中的第二条数据,可见通过关联关系表中的第九参数可以找到对应的子数据表中对应的一条数据,最后可以得到层级关系浙江省-杭州市-余杭区,还通过子关系数据表中的第六参数得知余杭区的相关数据。
可理解的是,本申请实施例中多表联合迭代是指主数据表、关联关系表和子数据表的联合迭代,依据多表的联合迭代可以获取到层级数据。
本实施例提供的层级数据查询方法,对将除了根节点之外的每一个结点都设置一个对应的子数据表,用来存储该结点的相关数据,并构建一个关联关系表,以将主数据表和各个子数据表中的数据进行关联。由于每一个结点都有一个自己的子数据表,因此层级结构可以不同,各个子数据表之间相互独立,不同子数据表中的数据格式可以不同,即不同结点对应的数据可以有自己的特色,不同结点对应的数据可以具有差异化。由于主数据表和各个子数据表之间通过关联关系表进行关联,不论各个子数据表中的数据格式相同还是不同,都不影响层级数据的获取。也就是说,现有技术中采用目前常用的层级数据查询函数(例如,WITH RECURSIVE函数)进行层级数据查询时,需要各个结点的数据格式相同;但是当采用本申请实施例提供的层级数据查询方法,对除根结点之外的每一个结点设置一个对应的子数据表,并构建一个关联关系表,不论各个结点的数据格式是否相同,均可以采用现有的层级数据查询函数进行层级数据查询。
如图5所示,在一个实施例中,提供了一种基于多表联合迭代的层级数据查询装置50,该层级数据查询装置50可以集成于上述的计算机设备中,具体可以包括:
第一构建模块,用于将待查询的数据表作为主数据表,并针对所述主数据表中除根结点之外的每一个层级上的每一个结点构建一个对应的子数据表;每一个子数据表中存储有对应结点的数据;
第二构建模块,用于构建关联关系表,所述关联关系表中存储有所述主数据表与各个所述子数据表之间的关联关系;
数据查询模块,用于采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据。
在一些实施例中,所述主数据表中包括多条第一数据,每一条第一数据中包括第一参数、第二参数和第三参数;其中,所述第一参数为该条第一数据的对应结点的标识,所述第二参数为所述对应结点的父结点的标识,所述第三参数为所述对应结点所代表的含义。
在一些实施例中,每一结点对应的子数据表中包括多条第二数据,每一条第二数据中包括第四参数、第五参数和第六参数;其中,所述第四参数为该条第二数据在所属子数据表中的编号,所述第五参数为所述所属子数据表对应的结点的父结点在所述主数据表中的标识,所述第六参数包括所述所属子数据表对应的结点上与所述第四参数对应的相关信息。
在一些实施例中,所述关联关系表中包括多条关联数据,每一条关联数据中包括第七参数、第八参数和第九参数;其中,所述第七参数为该条关联数据在所述关联关系表中的编号,所述第八参数为该条关联数据对应的结点在所述主数据表中的标识,所述第九参数为该条关联数据在其对应的子数据表中所关联的第二数据在所属子数据表中的编号,所述第九参数与所述第四参数相对应。
在一些实施例中,所述数据查询模块具体用于:在所述主数据表中的各个第一参数中查找待查询的结点对应的标识,并在所述关联关系表中查找第八参数为该标识的关联数据,根据该关联数据中的第八参数确定对应的子数据表,根据该关联数据中的第九参数确定所述对应的子数据表中对应的第二数据的第四参数;根据所述对应的第二数据的第四参数,获取对应的所述相关信息。
在一些实施例中,所述层级数据查询函数为WITH RECURSIVE函数。
本申请提供的层级数据查询装置,第一构建模块对将除了根节点之外的每一个结点都设置一个对应的子数据表,用来存储该结点的相关数据,第二构建模块构建一个关联关系表,以将主数据表和各个子数据表中的数据进行关联。由于每一个结点都有一个自己的子数据表,因此层级结构可以不同,各个子数据表之间相互独立,不同子数据表中的数据格式可以不同,即不同结点对应的数据可以有自己的特色,不同结点对应的数据可以具有差异化。由于主数据表和各个子数据表之间通过关联关系表进行关联,不论各个子数据表中的数据格式相同还是不同,都不影响层级数据的获取。也就是说,现有技术中采用目前常用的层级数据查询函数(例如,WITH RECURSIVE函数)进行层级数据查询时,需要各个结点的数据格式相同;但是当采用本申请实施例中对除根结点之外的每一个结点设置一个对应的子数据表,并构建一个关联关系表,不论各个结点的数据格式是否相同,均可以采用现有的层级数据查询函数进行层级数据查询。
在一些实施例中,提出了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:将待查询的数据表作为主数据表,并针对所述主数据表中除根结点之外的每一个层级上的每一个结点构建一个对应的子数据表;每一个子数据表中存储有对应结点的数据;构建关联关系表,所述关联关系表中存储有所述主数据表与各个所述子数据表之间的关联关系;采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据。
在一些实施例中,所述主数据表中包括多条第一数据,每一条第一数据中包括第一参数、第二参数和第三参数;其中,所述第一参数为该条第一数据的对应结点的标识,所述第二参数为所述对应结点的父结点的标识,所述第三参数为所述对应结点所代表的含义。
在一些实施例中,每一结点对应的子数据表中包括多条第二数据,每一条第二数据中包括第四参数、第五参数和第六参数;其中,所述第四参数为该条第二数据在所属子数据表中的编号,所述第五参数为所述所属子数据表对应的结点的父结点在所述主数据表中的标识,所述第六参数包括所述所属子数据表对应的结点上与所述第四参数对应的相关信息。
在一些实施例中,所述关联关系表中包括多条关联数据,每一条关联数据中包括第七参数、第八参数和第九参数;其中,所述第七参数为该条关联数据在所述关联关系表中的编号,所述第八参数为该条关联数据对应的结点在所述主数据表中的标识,所述第九参数为该条关联数据在其对应的子数据表中所关联的第二数据在所属子数据表中的编号,所述第九参数与所述第四参数相对应。
在一些实施例中,所述处理器执行的所述采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据,包括:在所述主数据表中的各个第一参数中查找待查询的结点对应的标识,并在所述关联关系表中查找第八参数为该标识的关联数据,根据该关联数据中的第八参数确定对应的子数据表,根据该关联数据中的第九参数确定所述对应的子数据表中对应的第二数据的第四参数;根据所述对应的第二数据的第四参数,获取对应的所述相关信息。
在一些实施例中,所述层级数据查询函数为WITH RECURSIVE函数。
本申请提供的计算机设备的有益效果与上述层级数据查询方法和装置相同,这里不再赘述。
在一个实施例中,提出了一种存储有计算机可读指令的存储介质,该计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行以下步骤:将待查询的数据表作为主数据表,并针对所述主数据表中除根结点之外的每一个层级上的每一个结点构建一个对应的子数据表;每一个子数据表中存储有对应结点的数据;构建关联关系表,所述关联关系表中存储有所述主数据表与各个所述子数据表之间的关联关系;采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据。
在一些实施例中,所述主数据表中包括多条第一数据,每一条第一数据中包括第一参数、第二参数和第三参数;其中,所述第一参数为该条第一数据的对应结点的标识,所述第二参数为所述对应结点的父结点的标识,所述第三参数为所述对应结点所代表的含义。
在一些实施例中,每一结点对应的子数据表中包括多条第二数据,每一条第二数据中包括第四参数、第五参数和第六参数;其中,所述第四参数为该条第二数据在所属子数据表中的编号,所述第五参数为所述所属子数据表对应的结点的父结点在所述主数据表中的标识,所述第六参数包括所述所属子数据表对应的结点上与所述第四参数对应的相关信息。
在一些实施例中,所述关联关系表中包括多条关联数据,每一条关联数据中包括第七参数、第八参数和第九参数;其中,所述第七参数为该条关联数据在所述关联关系表中的编号,所述第八参数为该条关联数据对应的结点在所述主数据表中的标识,所述第九参数为该条关联数据在其对应的子数据表中所关联的第二数据在所属子数据表中的编号,所述第九参数与所述第四参数相对应。
在一些实施例中,所述一个或多个处理器执行的所述采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据,包括:在所述主数据表中的各个第一参数中查找待查询的结点对应的标识,并在所述关联关系表中查找第八参数为该标识的关联数据,根据该关联数据中的第八参数确定对应的子数据表,根据该关联数据中的第九参数确定所述对应的子数据表中对应的第二数据的第四参数;根据所述对应的第二数据的第四参数,获取对应的所述相关信息。
在一些实施例中,所述层级数据查询函数为WITH RECURSIVE函数。
本申请提供的存储介质的有益效果与上述层级数据查询方法和装置相同,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于多表联合迭代的层级数据查询方法,其特征在于,包括:
将待查询的数据表作为主数据表,并针对所述主数据表中除根结点之外的每一个层级上的每一个结点构建一个对应的子数据表;每一个子数据表中存储有对应结点的数据;
构建关联关系表,所述关联关系表中存储有所述主数据表与各个所述子数据表之间的关联关系;
采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据。
2.根据权利要求1所述的方法,其特征在于,所述主数据表中包括多条第一数据,每一条第一数据中包括第一参数、第二参数和第三参数;其中,所述第一参数为该条第一数据的对应结点的标识,所述第二参数为所述对应结点的父结点的标识,所述第三参数为所述对应结点所代表的含义。
3.根据权利要求2所述的方法,其特征在于,每一结点对应的子数据表中包括多条第二数据,每一条第二数据中包括第四参数、第五参数和第六参数;其中,所述第四参数为该条第二数据在所属子数据表中的编号,所述第五参数为所述所属子数据表对应的结点的父结点在所述主数据表中的标识,所述第六参数包括所述所属子数据表对应的结点上与所述第四参数对应的相关信息。
4.根据权利要求3所述的方法,其特征在于,所述关联关系表中包括多条关联数据,每一条关联数据中包括第七参数、第八参数和第九参数;其中,所述第七参数为该条关联数据在所述关联关系表中的编号,所述第八参数为该条关联数据对应的结点在所述主数据表中的标识,所述第九参数为该条关联数据在其对应的子数据表中所关联的第二数据在所属子数据表中的编号,所述第九参数与所述第四参数相对应。
5.根据权利要求4所述的方法,其特征在于,所述采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据,包括:
在所述主数据表中的各个第一参数中查找待查询的结点对应的标识,并在所述关联关系表中查找第八参数为该标识的关联数据,根据该关联数据中的第八参数确定对应的子数据表,根据该关联数据中的第九参数确定所述对应的子数据表中对应的第二数据的第四参数;根据所述对应的第二数据的第四参数,获取对应的所述相关信息。
6.根据权利要求1~5任一项所述的方法,其特征在于,所述层级数据查询函数为WITHRECURSIVE函数。
7.一种基于多表联合迭代的层级数据查询装置,其特征在于,包括:
第一构建模块,用于将待查询的数据表作为主数据表,并针对所述主数据表中除根结点之外的每一个层级上的每一个结点构建一个对应的子数据表;每一个子数据表中存储有对应结点的数据;
第二构建模块,用于构建关联关系表,所述关联关系表中存储有所述主数据表与各个所述子数据表之间的关联关系;
数据查询模块,用于采用层级数据查询函数在所述主数据表、所述关联关系表和各个所述子数据表中查询层级数据。
8.根据权利要求7所述的装置,其特征在于,所述主数据表中包括多条第一数据,每一条第一数据中包括第一参数、第二参数和第三参数;其中,所述第一参数为该条第一数据的对应结点的标识,所述第二参数为所述对应结点的父结点的标识,所述第三参数为所述对应结点所代表的含义。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至6中任一项权利要求所述层级数据查询方法的步骤。
10.一种存储有计算机可读指令的存储介质,其特征在于,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至6中任一项权利要求所述层级数据查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910320206.5A CN110232063A (zh) | 2019-04-19 | 2019-04-19 | 层级数据查询方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910320206.5A CN110232063A (zh) | 2019-04-19 | 2019-04-19 | 层级数据查询方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110232063A true CN110232063A (zh) | 2019-09-13 |
Family
ID=67860806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910320206.5A Pending CN110232063A (zh) | 2019-04-19 | 2019-04-19 | 层级数据查询方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110232063A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708759A (zh) * | 2020-06-12 | 2020-09-25 | 北京思特奇信息技术股份有限公司 | 一种大表数据移植的优化方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1561497A (zh) * | 2001-09-28 | 2005-01-05 | 甲骨文国际公司 | 提供关系数据的一致性层次抽象化 |
US20060020591A1 (en) * | 2001-07-20 | 2006-01-26 | Kommers Jefferson M | Information retrieval from a collection of information objects tagged with hierarchical keywords |
US20060265410A1 (en) * | 2000-03-02 | 2006-11-23 | Christianson David B | Method and apparatus for storing semi-structured data in a structured manner |
US20160232189A1 (en) * | 2015-02-05 | 2016-08-11 | Sap Se | Derivation of hierarchy indexes |
CN106445931A (zh) * | 2015-08-04 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 数据库节点关联关系展示方法及装置 |
-
2019
- 2019-04-19 CN CN201910320206.5A patent/CN110232063A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060265410A1 (en) * | 2000-03-02 | 2006-11-23 | Christianson David B | Method and apparatus for storing semi-structured data in a structured manner |
US20060020591A1 (en) * | 2001-07-20 | 2006-01-26 | Kommers Jefferson M | Information retrieval from a collection of information objects tagged with hierarchical keywords |
US20130013629A1 (en) * | 2001-07-20 | 2013-01-10 | Vignette Corporation | Information retrieval from a collection of information objects tagged with hierarchical keywords |
CN1561497A (zh) * | 2001-09-28 | 2005-01-05 | 甲骨文国际公司 | 提供关系数据的一致性层次抽象化 |
US20160232189A1 (en) * | 2015-02-05 | 2016-08-11 | Sap Se | Derivation of hierarchy indexes |
CN106445931A (zh) * | 2015-08-04 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 数据库节点关联关系展示方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708759A (zh) * | 2020-06-12 | 2020-09-25 | 北京思特奇信息技术股份有限公司 | 一种大表数据移植的优化方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103049556B (zh) | 一种海量医疗数据的快速统计查询方法 | |
CN105094707B (zh) | 一种数据存储、读取方法及装置 | |
CN106156082B (zh) | 一种本体对齐方法及装置 | |
CN110472068A (zh) | 基于异构分布式知识图谱的大数据处理方法、设备及介质 | |
CN107357846A (zh) | 关系图谱的展示方法以及装置 | |
CN107402927A (zh) | 一种基于图模型的企业关联关系拓扑建立方法及查询方法 | |
CN106021366A (zh) | 一种基于异构信息的api标签推荐方法 | |
CN103020295B (zh) | 一种问题标签标注方法及装置 | |
CN106686132A (zh) | 一种云海系统部署方法及平台 | |
CN110442603A (zh) | 地址匹配方法、装置、计算机设备及存储介质 | |
CN104375992A (zh) | 一种地址匹配的方法和装置 | |
CN103177094B (zh) | 一种物联网数据清洗方法 | |
CN108304484A (zh) | 关键词匹配方法及装置、电子设备和可读存储介质 | |
CN104361025B (zh) | 一种多源空间数据融合与集成的方法 | |
CN110196758A (zh) | 数据处理方法和装置、存储介质及电子装置 | |
CN108416681A (zh) | 一种保险报价信息的展示方法、存储介质和服务器 | |
CN110032620A (zh) | 基于图搜索算法的自适应学习方法及计算机学习系统 | |
CN110308895A (zh) | 项目开发平台及应用项目开发平台所进行的项目开发方法 | |
CN109033173A (zh) | 一种用于生成多维指标数据的数据处理方法及装置 | |
CN112463986A (zh) | 信息存储的方法及装置 | |
CN109615172A (zh) | 一种处理考核数据的方法及终端 | |
CN104915388B (zh) | 一种基于谱聚类和众包技术的图书标签推荐方法 | |
CN105930174A (zh) | 一种图形化页面程序差异比较方法与系统 | |
CN108345658A (zh) | 算法计算轨迹的分解处理方法、服务器及存储介质 | |
CN110232063A (zh) | 层级数据查询方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |