应用于在线教育系统中的树形数据结构的建立方法技术方案

技术编号:10259946 阅读:182 留言:0更新日期:2014-07-25 18:22
本发明专利技术公开了一种应用于在线教育系统中的树形数据结构的建立方法,其中包括如下步骤:从根节点开始,按照从上到下,从左至右的顺序,按照递增数列规则依次给每一个节点定义一个用于识别的左编号数值Lft和右编号数值Rgt数值;根据节点的左编号数值Lft和右编号数值Rgt来查询所述节点的子节点个数,所述查询公式为:ROUND((Rgt-Lft-递增量)/2);创建树形数据存储结构,建立与所述树形数据存储结构匹配的关系数据表。该方法可大大提高对树形数据的增删改查操作的效率;在在线视频教育系统中,通过节点左、右编号数值在关系数据库中存储树形数据结构来实现课程栏目分类子栏目的无限级联和组织结构的无限级联。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了一种,其中包括如下步骤:从根节点开始,按照从上到下,从左至右的顺序,按照递增数列规则依次给每一个节点定义一个用于识别的左编号数值Lft和右编号数值Rgt数值;根据节点的左编号数值Lft和右编号数值Rgt来查询所述节点的子节点个数,所述查询公式为:ROUND((Rgt-Lft-递增量)/2);创建树形数据存储结构,建立与所述树形数据存储结构匹配的关系数据表。该方法可大大提高对树形数据的增删改查操作的效率;在在线视频教育系统中,通过节点左、右编号数值在关系数据库中存储树形数据结构来实现课程栏目分类子栏目的无限级联和组织结构的无限级联。【专利说明】
本专利技术涉及数据处理
,尤其涉及一种。
技术介绍
在线教育系统中,存在很多树形的数据。举例来说,课程分类就是一个树形结构,根节点为“全部分类”,在根节点下有一级分类节点如“国学、情商、艺术与品味修养、职业规划、就业技能、创业创新”等等子分类栏目,而在国学这个子栏目下,又可细分为“名著赏析、孙子兵法智慧、周易智慧、五行学说”等等子栏目分类,依次类推。再举一个例子,学校的组织结构,也就是学校下的各个院系,院系下细分的系和班级以及学校的各个行政架构上的部门,班级下的学生,学校组织部门下的老师,这也是在在线教育系统中需要处理的层级比较深和数据量比较大的一个树形数据结构。此类树形的数据结构,从根开始,每级有一个或者多个子分类,而每个子分类,又包含着层数不确定的更多的子分类。传统的关系数据库一般是基于二维关系建立,比如我们常用的MySQL/Oracle/SQL Server等,按照传统的方法存储这种树形数据记录,应用上非常繁琐和不灵活。通常地,传统的数据结构在每条记录上都存储一个ParentId (即数据父节点与子节点的父子关系)的方法(Adjacency List)建立,由于层级和子节点个数的不确定性,导致只能限制子节点的层级深度,然后在查询类似“当前节点属于第几层;当前节点有多少个子节点(含子节点的子节点);如何快速的将一个子节点(含子节点)移动到另外一个节点上;”等问题时,传统的技术方案需要大量的数据库查询和运算,因此受到效率影响,很难做到无限层级的树形数据结构。为了便于理解,现以图4的数据为例阐述上述的技术要领。我们采用每条记录中增加一个Parent Id来记录节点的父子关系,数据表如图5所示。这种简单设计能够非常直观和方便的查看数据,也比较容易理清数据之间的父子关系。但是缺点也非常突出,对树形结构数据的任何创建、查询、删除、修改操作都主要依赖于递归操作,举个具体应用上的例子,yellow属于第几层?需要经过的递归过程是:Select*from table where name=, yellow,Select氺from table where node_id=ye11ow_parent_idSelect氺from table where node_id=ye11ow_parent_id_parent_id…理论上讲,由于每一个操作都依赖上一步操作的结果,因此,每次的数据库查询都是必须的,必须找到当前的节点的父节点,再找到父节点的父节点直至递归到根节点为止。此递归操作来完成数据库增、删、改、查的查询效率太低,尤其在一个嵌套稍深的应用场景下,每次数据库的操作和I/o都会带来极大的时间开销,且难以支持灵活的数据扩展和无限深度的子节点级联。
技术实现思路
本专利技术的目的在于提供一种,以解决上述问题。为了达到上述目的,本专利技术的技术方案是这样实现的:,包括如下步骤:从根节点开始,按照从上到下,从左至右的顺序,按照递增数列规则依次给每一个节点定义一个用于识别的左编号数值Lft和右编号数值Rgt数值;根据节点的左编号数值Lft和右编号数值Rgt来查询所述节点的子节点个数,所述查询公式为:R0UND ((Rgt-Lft-递增量)/2);创建树形数据存储结构,建立与所述树形数据存储结构匹配的关系数据表。与现有技术相比,本专利技术实施例的优点在于:首先,节点在左、右编号数值存在的情况下,可以利用查询公式ROUND ((Rgt-Lft-递增量)/2)快速的查询数据库,与传统的利用递归查询数据库的方法相t匕,大大提高了对树形数据的增删改查操作的效率。其次,在在线视频教育系统中,通过节点左、右编号数值在关系数据库中存储树形数据结构来实现课程栏目分类子栏目的无限级联;最后,在在线视频教育系统中,通过节点左、右编号数值在关系数据库中存储树形数据结构来实现组织结构的无限级联。【专利附图】【附图说明】图1为本专利技术实施例一提供的的流程示意图;图2为本专利技术实施例一提供的中简单有限级的树形数据结构示意图;图3为图2的关系数据表;图4为现有技术中例举的一种简单有限级的树形数据结构示意图;图5为现有技术中用递归查询法得到的图4的关系数据表。【具体实施方式】下面通过具体的实施例子并结合附图对本专利技术做进一步的详细描述。参见图1,本专利技术提供了一种,包括如下步骤:步骤S100、从根节点开始,按照从上到下,从左至右的顺序,按照递增数列规则依次给每一个节点定义一个用于识别的左编号数值Lft和右编号数值Rgt数值;步骤S200、根据节点的左编号数值Lft和右编号数值Rgt来查询所述节点的子节点个数,所述查询公式为:R0UND ((Rgt-Lft-递增量)/2);此时,与每一个节点匹配的左、右编号使得此节点具有唯一性,同时,还可以通过上述查询公式快速的查询数据库,极大的提高了效率。步骤S300、创建树形数据存储结构,建立与所述树形数据存储结构匹配的关系数据表。本专利技术的,按一定的规则对每一个节点进行左、右编号,节点在左、右编号数值存在的情况下,可以利用查询公式ROUND ((Rgt-Lft-递增量)/2)快速的查询数据库,与传统的利用递归查询数据库的方法相t匕,大大提高了对树形数据的增删改查操作的效率。对应到我们的在线视频教育系统中,由于获得了查询效率的保障,因此,产品具体的表现上除了系统的响应速度提高外,在功能特性上,也带来了以下特点:1、支持无限子级的课程类别细分;2、支持无限子级的组织结构细分。下面对上述各步骤进行详细说明:实施例一参见图2,为简单的有限级树形数据结构。首先,从根节点开始,按照从上到下,从左至右的顺序,按照递增数列规则依次给每一个节点定义一个用于识别的左编号数值Lft和右编号数值Rgt ;当设置根节点的初始值从I开始,增量为I时,根据所述查询公式:R0UND((Rgt-Lft-l)/2),得到图2所示的节点左、右编号数值。较佳地,所述左编号数值Lft和右编号数值Rgt的编号规则,由CPU通过逻辑运算实现。根据创建树形数据存储结构,建立如图3所示的关系数据表。实施例二所述树形数据存储结构为无限层级的树形数据结构。更多的应用场景下,在新的数据存储结构下,我们来看一下我们在应用中通常会遇到的几个实际应用场景对应的解法。这里,我们以无限层级的树形菜单数据为例来创建关系数据表如下:【权利要求】1.一种,其特征在于,包括如下步骤: 从根节点开始,按照从上到下,从左至右的顺序,按照递增数列规则依次给每一个节点定义一个用于识别的左编号数值Lft和右编号数值Rgt数值; 根本文档来自技高网
...

【技术保护点】
一种应用于在线教育系统中的树形数据结构的建立方法,其特征在于,包括如下步骤:从根节点开始,按照从上到下,从左至右的顺序,按照递增数列规则依次给每一个节点定义一个用于识别的左编号数值Lft和右编号数值Rgt数值;根据节点的左编号数值Lft和右编号数值Rgt来查询所述节点的子节点个数,查询公式为:ROUND((Rgt‑Lft‑递增量)/2);创建树形数据存储结构,建立与所述树形数据存储结构匹配的关系数据表。

【技术特征摘要】

【专利技术属性】
技术研发人员:王健
申请(专利权)人:上海德上网络科技有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1