一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

树形结构通讯录存储方法及装置与流程

2022-02-22 19:12:52 来源:中国专利 TAG:


1.本发明实施例涉及数据存储技术领域,具体而言,涉及一种树形结构通讯录存储方法及装置。


背景技术:

2.在相关技术中,树形结构数据存储解决方案包括以下两种:
3.第一种采用父节点编号关联的方式来存储树形结构。该方式存储树形结构的方式采用节点间的继承方式,通过显示地描述某个节点的父节点,从而能够建立二维关系表。但在这种方式中,为得到树形结构结果,需要进行递归查询,这就导致存在的计算效率低、逻辑复杂、维护成本较大、树形结构数据展示不直观等技术问题,并且也无法应用于包含用户数据的通讯录组织结构中。
4.第二种采用基于左右值编码的方式存储树形结构。该方式采用一种全新的无递归查询,利用左右值编码,可以进行无限级树的编码,该编码方式在消除递归的前提下实现了无限分级,而且查询条件是基于整形数字比较的,因而查询效率较高。
5.但采用该方式编写相关存储程序的过程中以及新增、删除、同层平移节点,需要对整个树进行查询修改,由此导致的代码复杂度,耦合度较高,修改维护的风险较高,也无法应用于包含用户数据的通讯录组织结构中。


技术实现要素:

6.本发明实施例提供了一种树形结构通讯录存储方法及装置,以至少解决相关技术中存储树形数据的代码复杂、维护成本高,以及查询数据步骤繁琐的问题。
7.根据本发明的一个实施例,提供了一种树形结构通讯录存储方法,包括:将树形结构通讯录的数据按深度优先搜索进行排序并设置深度优先搜索顺序值,为所述深度优先搜索顺序值建立索引并存储至部门表中;建立所述树形结构通讯录中父节点与子节点集合表,以存储每个父节点到所有子节点的关系数据,并对父节点字段和子节点字段建立索引。
8.在一个示例性实施例中,在将树形结构通讯录的数据按深度优先搜索进行排序之前,还包括:建立用户表、部门表、子部门集合表以及用户部门表;其中,所述用户表至少包括以下字段:用户标识和用户名称;所述部门表至少包括以下字段:部门标识、用户名称、父部门标识、用户部门内排序值以及深度优先搜索排序值;所述子部门集合表至少包括以下字段:父部门标识和子部门标识;所述用户部门表至少包括以下字段:部门标识、用户标识以及用户部门内排序值。
9.在一个示例性实施例中,还包括:获取部门标识,根据所述部门标识到子部门集合表中查询以获取所有的子部门数据。
10.在一个示例性实施例中,还包括:获取部门标识,根据所述部门标识到子部门集合表中查询以获取所有的父部门数据。
11.在一个示例性实施例中,还包括:获取部门标识,基于所述部门标识查询用户表、
用户部门表和部门表以获取部门排序和部门内的用户排序数据。
12.在一个示例性实施例中,基于所述部门标识查询用户表、用户部门表和部门表以获取部门排序和部门内的用户排序数据之后,还包括:按照部门排序和部门内的用户排序数据进行数据展示。
13.根据本发明的另一个实施例,提供了一种树形结构通讯录存储装置,包括:排序模块,用于将树形结构通讯录的数据按深度优先搜索进行排序并设置深度优先搜索顺序值,为所述深度优先搜索顺序值建立索引并存储至部门表中;存储模块,用于建立所述树形结构通讯录中父节点与子节点集合表,以存储每个父节点到所有子节点的关系数据,并对父节点字段和子节点字段建立索引。
14.在一个示例性实施例中,还包括:建立模块,用于建立用户表、部门表、子部门集合表以及用户部门表;其中,所述用户表至少包括以下字段:用户编号和用户名称;所述部门表至少包括以下字段:部门编号、用户名称、父部门编号、用户部门内排序值以及深度优先搜索排序值;所述子部门集合表至少包括以下字段:父部门编号和子部门编号;所述用户部门表至少包括以下字段:部门编号、用户编号以及用户部门内排序值。
15.在一个示例性实施例中,还包括:展示模块,用于按照部门排序和部门内的用户排序数据进行数据展示。
16.根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
17.根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
18.通过本发明,由于将树形结构通讯录按树的深度优先遍历的方式进行存储,并且增加了父节点与子节点间的关系数据,从而可以高效率的获取节点数据。因此,可以解决相关技术中存储树形数据的代码复杂、维护成本高,以及查询数据步骤繁琐的问题,达到可简单、灵活并且高效的存储树形结构数据的效果。
附图说明
19.图1是本发明实施例的运行树形结构通讯录存储方法的计算机终端的硬件结构框图;
20.图2是根据本发明实施例的树形结构通讯录存储方法的流程图;
21.图3是根据本发明实施例的树形结构通讯录存储装置的结构框图;
22.图4是根据本发明另一实施例的树形结构通讯录存储装置的结构框图;
23.图5是根据本发明实施例的部门表中的whole_order值递增方式示意图;
24.图6是根据本发明实施例的获取所有子部门数据方法的流程图;
25.图7是根据本发明实施例的获取所有父部门数据方法的流程图;
26.图8是根据本发明实施例的获取某一部门内用户数据数的方法流程图。
具体实施方式
27.下文中将参考附图并结合实施例来详细说明本发明的实施例。
28.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
29.本技术实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的运行树形结构通讯录存储方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器(central processing unit,mcu)或可编程逻辑器件(field programmable gate array,fpga)等的处理装置)和用于存储数据的存储器104,其中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术用户可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
30.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的树形结构通讯录存储方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
31.传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
32.图2是根据本发明实施例的树形结构通讯录存储方法的流程图,如图2所示,该流程包括如下步骤:
33.步骤s202,将树形结构通讯录的数据按深度优先搜索进行排序并设置深度优先搜索顺序值,为所述深度优先搜索顺序值建立索引并存储至部门表中;
34.步骤s204,建立所述树形结构通讯录中父节点与子节点集合表,以存储每个父节点到所有子节点的关系数据,并对父节点字段和子节点字段建立索引。
35.在本实施例的步骤s202之前,还可以包括:建立用户表、部门表、子部门集合表以及用户部门表;
36.其中,所述用户表至少包括以下字段:用户标识和用户名称;
37.所述部门表至少包括以下字段:部门标识、用户名称、父部门标识、用户部门内排序值以及深度优先搜索排序值;
38.所述子部门集合表至少包括以下字段:父部门标识和子部门标识;
39.所述用户部门表至少包括以下字段:部门标识、用户标识以及用户部门内排序值。
40.在本实施例中,还可以包括:获取部门标识,根据所述部门标识到子部门集合表中
查询以获取所有的子部门数据。
41.在本实施例中,还可以包括:获取部门标识,根据所述部门标识到子部门集合表中查询以获取所有的父部门数据。
42.在本实施例中,还可以包括:获取部门标识,基于所述部门标识查询用户表、用户部门表和部门表以获取部门排序和部门内的用户排序数据。
43.在本实施例中,基于所述部门标识查询用户表、用户部门表和部门表以获取部门排序和部门内的用户排序数据之后,还可以包括:按照部门排序和部门内的用户排序数据进行数据展示。
44.通过上述步骤,由于将树形结构通讯录按树的深度优先遍历的方式进行存储,简化了树形结构数据存储的复杂度;同时增加父节点与子节点间的关系数据,提高了访问树形子节点与父节点的效率。解决了相关技术中存储树形数据的代码复杂、维护成本高,以及查询数据步骤繁琐的问题,提高了获取节点数据的效率。
45.通过以上的实施方式的描述,本领域的技术用户可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器(read-only memory/random access memory,rom/ram)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
46.在本实施例中还提供了一种树形结构通讯录存储装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
47.图3是根据本发明实施例的树形结构通讯录存储装置的结构框图,如图3所示,该装置包括,排序模块10和存储模块20.
48.排序模块10,用于将树形结构通讯录的数据按深度优先搜索进行排序并设置深度优先搜索顺序值,为所述深度优先搜索顺序值建立索引并存储至部门表中;
49.存储模块20,用于建立所述树形结构通讯录中父节点与子节点集合表,以存储每个父节点到所有子节点的关系数据,并对父节点字段和子节点字段建立索引。
50.图4是根据本发明另一实施例的树形结构通讯录存储装置的结构框图,如图4所示,该装置除包括图3所示的所有模块外,还包括建立模块30和展示模块40。
51.建立模块30,用于建立用户表、部门表、子部门集合表以及用户部门表;
52.其中,所述用户表至少包括以下字段:用户编号和用户名称;
53.所述部门表至少包括以下字段:部门编号、用户名称、父部门编号、用户部门内排序值以及深度优先搜索排序值;
54.所述子部门集合表至少包括以下字段:父部门编号和子部门编号;
55.所述用户部门表至少包括以下字段:部门编号、用户编号以及用户部门内排序值。
56.展示模块40,用于按照部门排序和部门内的用户排序数据进行数据展示。
57.需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通
过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
58.在本实施例中涉及了四张数据库表,包括表1用户表、表2部门表、表3子部门集合表以及表4用户部门表。具体表结构设计如下所示:
59.表1
[0060][0061][0062]
表2
[0063]
字段中文说明字段类型id部门id长整型name用户名称字符串类型parentid父部门id长整型order部门内排序值长整型whole_order深度优先排序值长整型
[0064]
表3
[0065]
字段中文说明字段类型ancestor_dept_id父部门id长整型child_dept_id子部门id长整型
[0066]
表4
[0067]
字段中文说明字段类型deptid部门id长整型userid用户id字符串类型order_in_dept部门内排序值长整型
[0068]
在本实施例中,表1为用户表,主要存放用户的基本信息;表2为部门表,主要存放部门基本信息,重要字段为whole_order,为深度优先搜索遍历排序值;表3为子部门集合表,主要存放部门到子部门的关系数据;表4为用户部门表,主要存放部门与用户的关系数据。
[0069]
图5是根据本发明实施例的部门表中的whole_order值递增方式示意图,如图4所示,whole_order值是按深度优先搜索的方式进行存储。
[0070]
在本发明实施例中,还提供一种树形结构通讯录的存储方法,具体地,包括如下步骤:
[0071]
1.将树形结构数据按深度优先搜索进行排序,增加深度优先搜索顺序递增值,将所得到的遍历结果数据存储于数据库中,为顺序值设为索引字段;
[0072]
2.建立树形数据子节点集合表,以(parent_id,child_id)方式存储,即存储节点到所有子节点的关系数据,并对两字段建立索引;
[0073]
3.基于树形通讯录数据,按部门与用户的数据排序值进行展示数据,通过增加用
户与用户部门表实现。
[0074]
图6是根据本发明实施例的获取所有子部门数据方法的流程图,如图6所示,该方法包括如下步骤:
[0075]
步骤s601,开始。具体地,开始获取所有子部门数据。
[0076]
步骤s602,客户端传来部门id。
[0077]
步骤s603,根据id到子部门集合表中查询。
[0078]
步骤s604,再返回所有的子部门数据到客户端。
[0079]
步骤s605,结束
[0080]
图7是根据本发明实施例的获取所有父部门数据方法的流程图,如图7所示,该方法包括如下步骤:
[0081]
步骤s701,开始。具体地,开始获取所有父部门数据。
[0082]
步骤s702,客户端传来部门id。
[0083]
步骤s703,根据id到父部门集合表中查询.
[0084]
步骤s704,再返回所有的子部门数据到客户端。
[0085]
步骤s705,结束。
[0086]
图8是根据本发明实施例的获取某一部门内用户数据的方法流程图,如图8所示,该方法包括如下步骤:
[0087]
步骤s801,开始。具体地,开始获取某一部门内用户数据。
[0088]
步骤s802,客户端传来部门id。
[0089]
步骤s803,根据id关联查询用户表、用户部门表、部门表。
[0090]
步骤s804,按部门深度优先搜索值与人员在部门内排序值进行排序。
[0091]
步骤s805,返回按部门排序与用户排序后的数据集到客户端。
[0092]
步骤s806,结束。
[0093]
通过上述实施例,解决了获取树形结构数据时计算效率低、业务代码逻辑复杂、树形结构数据展示不直观等技术问题,同时本发明实施例还能够应用于包含人员数据的通讯录组织结构中。
[0094]
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
[0095]
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
[0096]
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0097]
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0098]
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
[0099]
显然,本领域的技术用户应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0100]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术用户来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献