[发明专利]一种MYSQL数据库树状结构及其快速检索方法在审
申请号: | 201310557218.2 | 申请日: | 2013-11-11 |
公开(公告)号: | CN104063413A | 公开(公告)日: | 2014-09-24 |
发明(设计)人: | 关班记;庞毅;张宗仁;季统凯 | 申请(专利权)人: | 国云科技股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京科亿知识产权代理事务所(普通合伙) 11350 | 代理人: | 汤东凤 |
地址: | 523808 广东省东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 mysql 数据库 树状 结构 及其 快速 检索 方法 | ||
技术领域
本发明涉及数据库结构设计技术领域,具体涉及一种MYSQL数据库树状结构及其快速检索方法。
背景技术
在MYSQL(关系型数据库管理系统,由瑞典MySQL AB公司开发)数据库设计树状结构时,都是通过节点记录直接父节点的方法,最终形成树状结构。但在数据库操作过程中,这种结构会比较麻烦而且效率非常低,如图1所示,一树有五层,如果想查询第三层某一节点(node-3-2)的完整路径,操作过程是先定位节点(node-3-2)的直接父节点(node-2-1),再定位至节点(node-2-1)的父节点(root)。因此需要数据库操作2次。同理,如果想查询第三层某一节点(node-3-2)的所有节点,需先查询它的直接子节点,再查询直接子节点的子节点。因此,如果总共有N层,要检查第K层(K<N)的完整路径,则需要数据库操作N-1次;如果要查询所有子节点,则需要操作N-K次。这大大加重了数据库的负荷,而且效率也非常低。
发明内容
本发明解决的技术问题之一在于提供一种MYSQL数据库树状结构,只需要一次数据库操作即可完成搜索某节点的父节点路径或获取其所有子节点信息。
本发明解决的技术问题之二在于提供一种MYSQL数据库树状结构快速检索方法,只需要一次数据库操作即可完成搜索某节点的父节点路径或获取其所有子节点信息。
本发明解决上述技术问题之一的技术方案是:
所述的树状结构的每一节点包括其直接父节点信息,根节点的父节点为空;每一节点包括所有父节点的信息,每一父节点的信息通过特殊字符区分,根节点的所有父节点信息为本节点。
所述的特殊字符为“,”。
本发明解决上述技术问题之二的技术方案是:
在数据库操作过程中,通过like条件查询节点信息,通过in条件查询父节点信息。
通过like条件查询节点信息完成语句可以是:
select*from树where code like’%参数,%’;其中树表示数据的表名;参数表示需要查询的节点的id信息。
通过in条件查询父节点信息完成语句可以是:
select*from树where id in(参数);其中树表示数据的表名;参数表示需要查询的节点的父节点id信息。
本发明的结构和方法可以极大提高数据库的效率、减少数据库的操作,同时大大提高应用系统的响应时间。
附图说明
下面结合附图对本发明进一步说明:
图1是先有树状结构节点结构图;
图2是本发明数据库设计结构图;
图3是本发明数据库树状结构节点结构图。
具体实施方式
如图2、3所示,本发明树装结构的数据库设计,需包括以下两种重要信息:
第1、每一节点必须包括其直接父节点信息,根节点的父节点的为空;
第2、每一节点必须包括所有父节点的信息,每一父节点的信息可以通过特殊字符区分,根节点的所有父节点信息为本节点。如根的root的属性为(1,’1’),直其子节点node-2-1的属性为(2,’1,2’),其中属性中的’1,2’分别是根节点的id属性(1)与子节点node-2-1的id属性(2),再通过特殊字符“,”区分。
第3、在数据库操作过程中,可以通过like条件查询节点信息。如查询节点的所有子节点信息,可通过以下语句完成:
select*from树where code like’%参数,%’;其中树表示数据的表名;参数表示需要查询的节点的id信息。
第4、在数据库操作过程中,可以通过in条件查询父节点信息。如查询节点的完成的父节点信息,可通过以下语句完成:
select*from树where id in(参数);其中树表示数据的表名;参数表示需要查询的节点的parents_id信息。
下面具体通过教育云共享平台的使用为例。
包括如下步骤:
第1步、云共享平台支持用户创建树状结构的目录信息。
第2步、当用户需要获取节点node-3-2(5,’1,2,5’)的所有子节点时,可通过台下语句完成:
select*from树where parents_id like’%5,%’。
第3步、当用户需要获取节点node-3-2(5,’1,2,5’)的所有父节点时,可通过以下SQL语句完成:
select from树where id in(’1,2,5’)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国云科技股份有限公司,未经国云科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310557218.2/2.html,转载请声明来源钻瓜专利网。