System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于Dijkstra算法的表关联关系的检验方法技术_技高网

一种基于Dijkstra算法的表关联关系的检验方法技术

技术编号:41142312 阅读:4 留言:0更新日期:2024-04-30 18:11
本发明专利技术公开了一种基于Dijkstra算法的表关联关系的检验方法,包括读取数据,随机选取两个节点,设置为起点和终点,左箭头代表左连接,右箭头代表右连接,将所述两个节点连接成一个有向图;设计一个数据表,其中存储从起点到各个节点的开销、父节点以及节点处理状态;利用Dijkstra最短路径算法,找出最短路径,同时更新所述数据表;利用所述数据表检查判断是否出现错误连接。本方法通过Dijkstra算法计算出最短路径,通过路径进行节点及关联关系进行校验,让开发者无需为大量节点和关系信息来编写复杂的校验规则,而且代码量小,校验准确性高,维护方便,可读性强。

【技术实现步骤摘要】

本申请涉及数据库及数据安全领域,主要涉及一种基于dijkstra算法的表关联关系的检验方法。


技术介绍

1、随着互联网技术的发展,行业应用规模越来越大,数据量迎来爆发式的增长,大部分企业开始使用大数据组件来进行数据存储、分析,而在进行数据分析的过程中,免不了要进行数据建模操作,在建模的过程中,节点关系的建立是其中非常重要的一环。在创建节点关联关系时,一般使用canvas(画布)来完成。canvas是html5中的一个标签,用于在网页实时生成图像,它可以把一个绘图api展现给客户端javascript以使脚本能够把想绘制的东西都绘制到一块画布上,人们通过在画布上进行拖、拉、拽等方式,将各个数据当作许多个节点分布在画布上,再使用方向箭头连接起来进行关系创建,这种方式对用户十分友好,操作简单且清晰直观。但是画布中数据准确性的检验就变得复杂起来,其中最复杂最重要的关联关系的校验成为画布校验的难点。

2、表关联关系是指通过使用外键将两个或多个表连接起来的一种方式,关联关系可以帮助我们在不同的表之间建立联系,从而实现数据的一致性和完整性。这种关联关系主要分为以下三种类型:

3、(1)一对一:有ab两张表,a表中的一条数据对应着b表中的一条数据,同时,b表中的一条数据也对应着a表中的一条数据。

4、(2)一对多:有ab两张表,a表中的一条数据对应着b表中的多条数据,但是,b表中的一条数据只对应着a表中的一条数据。

5、(3)多对多:有ab两张表,a表中的一条数据对应着b表中的多条数据,而且,b表中的一条数据也对应着a表中的多条数据。

6、数据库表之间的连接是指在sql语句中通过表与表之间的关联,从一个或多个表检索出相关的数据,连接方式主要有四种,分别是内连接、左连接、右连接和全连接。在表之间的关联关系判断中,不仅仅要判断节点(在表关系校验中代表一张表)是否完全连接上,更重要的是节点连接的是否正确,是否重复连接,连接方向是否正确等等。目前对于节点关系的判断基本是通过硬编码完成的,但缺点也十分明显,大量的数据节点组合成的关系十分复杂,依靠硬编码来判断代码量非常庞大而且容易出现遗漏,本专利技术主要就是为了解决这个问题,用更快速、简单、有效的方法完成校验。

7、目前常用的校验方式有两种:

8、(1)通过客户端js进行判断,通过节点坐标来判断是否属于画布区间,然后进行一些简单的逻辑判断和连接校验,此方法只能进行一些简单的检验,而且无法判断业务中的复杂关系。

9、(2)通过硬编码判断,存储两个节点的关联关系,其中的两个节点如果都指向对方,或者多个节点关系中某个节点既是头又是尾,说明出现了回环,如果某个节点没有被连接,则出现了漏连。该方法可以进行错误的关系校验,但判断规则很难完善,如果节点过多,复杂的关系会使判断逻辑很长,不利于阅读修改,同时可能出现混乱。


技术实现思路

1、针对上述现有技术的问题,本申请提出了一种基于dijkstra算法的表关联关系的检验方法。

2、根据本专利技术的一方面,提出了一种基于dijkstra算法的表关联关系的检验方法,包括:

3、读取数据,随机选取两个节点,设置为起点和终点,左箭头代表左连接,右箭头代表右连接,将所述两个节点连接成一个有向图;

4、设计一个数据表,其中存储从起点到各个节点的开销、父节点以及节点处理状态;

5、利用dijkstra最短路径算法,找出所有节点之间的最短路径,同时更新所述数据表;

6、利用所述数据表检查判断是否出现错误连接。

7、进一步的,所述有向图中各个节点之间的权重均赋值为1。

8、进一步的,所述从起点到各个节点的开销,具体还包括:初始化时,设置起点开销为0,其他节点的开销均为无穷大,父节点均为空,处理状态均为否。

9、进一步的,所述利用dijkstra最短路径算法,找出所有节点之间的最短路径,同时更新所述数据表,具体步骤包括:

10、找出当前开销最小的节点设置为起点节点,更新所述起点节点与所有所述起点节点能够到达的节点之间的开销和父节点,所述起点节点的处理状态更新为是;

11、继续找出当前开销最小的未处理节点,将父节点更新为起点,更新所述未处理节点与所有所述未处理节点能够到达的节点之间的开销,将所述未处理节点的处理状态更新为是;

12、重复以上步骤,若所有节点的处理状态均为是,则找出最短路径,到此所有的路径都得到了检查。

13、进一步的,利用所述数据表检查判断是否出现错误连接,具体步骤包括:

14、判断是否出现单独节点,如果有出现单独节点,则判断出现错误连接;

15、其次,判断单个路径中是否出现重复节点,如果单个路径中出现重复节点,则判断此路径出现错误连接。

16、进一步的,所述判断是否出现单独节点,还包括:找出所有开销为0的路径,如果存在这样的路径,则判断出现错误连接。

17、进一步的,所述判断单个路径中是否出现重复节点,具体包括:如果单个路径中出现相同节点,则说明连接出现回路,如果存在回路,则判断出现错误连接。

18、进一步的,所述判断单个路径中是否出现重复节点,还包括:如果单个路径没有出现重复节点,但是出现多个路径之间是否存在节点相同,方向相反的路径,则判断出现错误连接。

19、进一步的,所述存在节点相同,方向相反的路径,具体表示为:相同的两个节点,一个路径中关系为左连接,一个路径中关系为右连接。

20、进一步的,所述利用所述数据表检查判断是否出现错误连接,还包括:如果检验均通过,未出现任何环节的错误连接,则表示当前的表关联关系无异常。

21、根据本专利技术的第二方面,提出了一种计算机可读存储介质,其上存储有一或多个计算机程序,该一或多个计算机程序被计算机处理器执行时实施上述任一项的方法。

22、本专利技术的有益效果如下:

23、本专利技术通过使用dijkstra算法,通过计算节点之间的最短路径,然后通过分别判断单个路径的关系链条和多个路径中关系链条之间的关联关系来判定是否有错误连接,让开发者无需为大量节点和关系信息来编写复杂的校验规则,不必思考过多的校验逻辑,也不会进行漏判,而且代码量小,大大提升代码的简洁性,校验准确性高,维护方便,可读性强。

本文档来自技高网...

【技术保护点】

1.一种基于Dijkstra算法的表关联关系的检验方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的检验方法,其特征在于:

3.根据权利要求1所述的检验方法,其特征在于:

4.根据权利要求1所述的检验方法,其特征在于:

5.根据权利要求1所述的检验方法,其特征在于:

6.根据权利要求5所述的检验方法,其特征在于:

7.根据权利要求5所述的检验方法,其特征在于:

8.根据权利要求5所述的检验方法,其特征在于:

9.根据权利要求8所述的检验方法,其特征在于:

10.根据权利要求1所述的检验方法,其特征在于:

11.一种计算机可读介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实施如权利要求1-10中任一项所述的方法。

12.一种计算系统,包括处理器和存储器,所述处理器被配置为执行如权利要求1-10中任一项所述的方法。

【技术特征摘要】

1.一种基于dijkstra算法的表关联关系的检验方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的检验方法,其特征在于:

3.根据权利要求1所述的检验方法,其特征在于:

4.根据权利要求1所述的检验方法,其特征在于:

5.根据权利要求1所述的检验方法,其特征在于:

6.根据权利要求5所述的检验方法,其特征在于:

7.根据权利要求5所述的检验方法,其特征...

【专利技术属性】
技术研发人员:白海波张磊姚志强邢磊陈楠
申请(专利权)人:厦门市美亚柏科信息安全研究所有限公司
类型:发明
国别省市:

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

1