一种维护数据表关联关系的方法、计算设备及存储介质与流程

文档序号:20264377发布日期:2020-04-03 18:12阅读:117来源:国知局
本发明涉及数据库领域,特别涉及一种维护数据表关联关系的方法、计算设备及存储介质。
背景技术
::随着数据库的应用越发广泛,在对数据库进行数据查询时会存在这样的问题:储存大量数据时,数据通常被拆分存入多张数据库表中,并以外键的形式确定数据表之间的关联关系。在数据的分析与提取过程中,操作人员需要获取数据表之间的关联关系。现有的解决方法是通过开发文档得知关联关系,当对多个数据表进行查询的时候,操作人员需要通过翻越开发文档确定数据表之间的关联信息,实现方式比较复杂。为此,需要一种新的维护数据表关联关系的方法。技术实现要素:为此,本发明提供一种维护数据表关联关系的方法,以力图解决或者至少缓解上面存在的问题。根据本发明的一个方面,提供了一种维护数据表关联关系的方法,适用于在计算设备中执行,计算设备能够访问数据库的日志文件,并存储有关联关系表,关联关系表的每条记录表示数据库中不同数据表的字段之间的关联关系,方法包括:从日志文件中提取关联查询语句;从关联查询语句中获取所查询的两个数据表的字段之间的关联关系;根据所获取的关联关系,对关联关系表进行更新。可选地,在根据本发明的一种维护数据表关联关系的方法中,根据所获取的关联关系,对关联关系表进行更新,包括:判断所获取的关联关系是否在于关联关系表中;若关联关系不在于关联关系表中,则将关联关系添加到关联关系表中。可选地,在根据本发明的一种维护数据表关联关系的方法中,计算设备中还存储有过滤表,过滤表中包括不能添加到关联关系表中的关联关系,方法还包括;当所获取的关联关系存在于过滤表中时,禁止将该关联关系添加到关联关系表中。可选地,在根据本发明的一种维护数据表关联关系的方法中,还包括:从日志文件中提取删除表结构的语句;基于删除表结构的语句,判断移除的表和字段是否存在于关联关系表中,若是,则删除关联关系表中与该表和字段所对应的记录。可选地,在根据本发明的一种维护数据表关联关系的方法中,还包括:从所述日志文件中提取修改表结构的语句;基于所述修改表结构的语句,判断修改的表和字段的信息是否存在于所述关联关系表中,若是,则对所述关联关系表中的表和字段进行相应修改。可选地,在根据本发明的一种维护数据表关联关系的方法中,还包括:获取用户输入的查询信息;根据查询信息对关联关系表中的关联关系进行查询;根据查询结果绘制关联关系图。可选地,在根据本发明的一种维护数据表关联关系的方法中,查询信息包括选定的数据表、查询字段和查询的范围值。可选地,在根据本发明的一种维护数据表关联关系的方法中,根据查询信息对关联关系表中的关联关系进行查询包括:从选定的数据表开始,迭代查询范围值内查询字段的关联关系;其中,范围值为迭代查询关联关系的次数。根据本发明的又一方面,提供一种计算设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,该一个或多个程序被处理器执行时实现如上所述的一种维护数据表关联关系的方法的步骤。根据本发明的又一方面,提供一种存储一个或多个程序的可读存储介质,该一个或多个程序包括指令,所述指令当由计算设备执行时实现如上所述的一种维护数据表关联关系的方法的步骤。根据本发明的维护数据表关联关系的方案,能够通过提取数据库日志中的关联查询语句,来自动生成和维护数据表之间的关联关系,实现方式简单,并减少了对开发文档的依赖。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。图1示出了根据本发明一个实施例的计算设备100的示意图;图2示出了根据本发明一个实施例的维护数据表关联关系的方法200的流程图;图3示出了根据本发明一个实施例的关联关系表的示意图;图4示出了根据本发明一个实施例的更新后的关联关系表的示意图;图5示出了根据本发明一个实施例的过滤表的示意图;图6示出了根据本发明一个实施例的通过删除表结构语句进行更新处理的流程图;图7示出了根据本发明一个实施例的通过删除表结构语句进行更新处理后的关联关系表的示意图;图8示出了根据本发明一个实施例的通过修改表结构语句进行更新处理的流程图;图9示出了根据本发明一个实施例通过修改表结构语句进行更新处理后的关联关系表的示意图;图10示出了根据本发明一个实施例的绘制网状关联关系图的方法1000的流程图;图11示出了根据本发明一个实施例所绘制的一个关联关系图的示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图1是根据本发明一个示范性实施例的计算设备100的结构框图。根据本发明的一种维护数据表关联关系的方法200可以在计算设备100中执行。在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μp)、微控制器(μc)、数字信息处理器(dsp)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处理核心(dsp核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个程序122以及程序数据124。在一些实施方式中,程序122可以布置为在操作系统上由一个或者多个处理器104利用程序数据124执行指令。计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个a/v端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个i/o端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。计算设备100可以实现为服务器,例如文件服务器、数据库服务器、应用程序服务器等,这些电子设备可以是诸如个人数字助理(pda)、无线网络浏览设备、应用专用设备、或者可以包括上面任何功能的混合设备。计算设备100还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。在一些实施例中,计算设备100被配置为执行一种维护数据表关联关系的方法200。图2示出了根据本发明的一个实施例的维护数据表关联关系的方法200的流程图。方法200适用于在计算设备中执行,如在计算设备100中执行。计算设备100能够访问数据库的日志文件,日志文件记录了对数据库中的数据进行操作的记录。在计算设备100中还存储有关联关系表。关联关系表是用于记录关联关系的表,关联关系表的每条记录表示数据库中不同数据表的字段之间的关联关系。关联关系表的表结构至少包括如下4个字段:数据表表名、字段名、关联数据表表名、关联字段名,表示数据表表名.字段名与关联数据表表名.关联字段名具有关联关系。可以预先建立一个空的关联关系表并存储到计算设备100中,后续,根据对数据库日志文件的解析,来对关联关系表进行更新。或者,计算设备100中的关联关系表中已经具有一条或多条记录,后续,根据对数据库日志文件的解析,来对关联关系表进行更新。根据本发明的一个实施例,计算设备100存储的一个关联关系表如图3所示。图3中,表明了在数据库(db)test中,表名(table)为student的表的school_id字段(column),与同数据库(rel_db)中school表(rel_table)的id字段(rel_column)具有关联关系。如图2所示,方法200始于步骤s210,在步骤s210中,访问数据库的日志文件,从日志文件中提取关联查询语句。关联查询语句是利用数据库中不同数据表的字段之间的关联关系,来进行数据查询的语句。例如,从多个数据表中读取数据时,用join关键字来联合多表查询的语句。关联关系是指两个不同的数据表,其中一个数据表中的某个字段与另一个数据表中的字段,是同一对象的一个属性。例如,学生表中的学校id与学校表中的id,都指的是学校的id,则这两个字段之间具有关联关系。一般而言,学校id是学生表的外健,id是学校表的主键。从日志文件中提取关联查询语句包括从日志文件中提取出语句时,通过对语句中是否含有关联词join,判断该语句是否为关联查询语句,若判断该语句是关联查询语句,则进行对该语句的后续操作。随后,执行步骤s220,从关联查询语句中获取所查询的两个数据表的字段之间的关联关系。随后,执行步骤s230,根据所获取的关联关系,对关联关系表进行更新。在更新前,首先判断所获取的关联关系是否存在于关联关系表中,若关联关系表中存在提取到的关联关系,则不进行任何操作,提取下一条关联查询语句;若所建立的关联关系表中不存在该关联关系,则将关联关系存入关联关系表。根据本发明的一个实施例,计算设备在扫描到下列语句时,进行该语句的判断和处理:select*fromcityjoinprovinceoncity.province_id=province.id;通过该语句中含有关键词select和join,判断该语句是一条查询语句且是关联查询。这条查询语句通过关联城市表(city)和省份表(province)查询每个城市对应的省份,接下来分析语句中关键字on后的内容“city.province_id=province.id”,可以得知“schoolid”和“id”之间具备关联关系。若“schoolid”和“id”之间的关联关系存储在建立的关联关系表中,则不对关联关系表做任何处理,继续提取下一条语句;否则,将关联关系“provinceid”和“id”与“id”和“provinceid”存入建立的关联关系表中。存入该关联关系,更新后的关联关系表如图4所示。根据本发明的一个实施例,计算设备100中还存储有过滤表,过滤表中存储有关联关系,该关联关系包括不能添加到关联关系表中的关联关系,过滤表中的关联关系可以有用户自行添加。方法200还包括在根据所获取的关联关系,对关联关系表进行更新时,若判断所获取关联关系为过滤表中的关联关系,则不将该关联关系添加到关联关系表中。根据本发明的一个实施例,计算设备100中存储的一个过滤表如图5所示。在过滤表中,用户可添加不需要记录在关联关系表内的信息。在特定情况下用户需要查寻相同名称的老师(teacher.name)和学生(student.name),但是,老师表的姓名字段和学校表的姓名字段,二者实际上是不具有关联关系的,因此将这组关系添加到如图5所示的过滤表中,当扫描日志中的查询语句时,这组关系将被过滤掉,从而不会更新到关联关系表中。根据本发明的一个实施例,方法200还包括对关联关系中的关联关系进行删除,图6示出了根据本发明的一个实施例通过删除表结构语句进行更新处理的流程图。如图6所示,在步骤s610中,访问数据库的日志文件,从日志文件中提取删除表结构语句。删除表结构语句是用来删除数据库中数据表的字段的语句。从日志文件中提取删除表结构语句包括从日志文件中提取出语句时,通过对语句中是否含有关键词drop,判断该语句是否为删除表结构语句,若判断该语句是删除表结构语句,则进行对该语句的后续操作。随后,执行步骤s620,从删除表结构语句中获取获取要移除的表和字段。随后,执行步骤s630,判断删除的表和字段是否存在于关联关系表中,若是,则删除关联关系表中与该表和字段所对应的记录;若不在于关联关系表中,则提取下一条删除表结构语句。执行步骤s630时,从关联关系表中的第一条关联关系开始,遍历所有关联关系,每检索到一条关联关系,对其进行判断是否包含要删除的表和字段。若包含,则将其删除,若不包含要删除的表和字段,则检索下一条关联关系。若检索完毕所有关联关系后,未检索出要删除的关联关系,则判定关联关系表中不存在要删除的表和字段,提取下一条删除表结构语句。根据本发明的一个实施例,计算设备在扫描到下列语句时,进行该语句的判断和处理:droptablecity通过该语句中含有关键词drop,判断该语句是一条删除表结构语句。接下来分析“city”是否存在于所建立的关联关系表中,若存在,则将关联关系表中“city”删除。删除“city”前的关联关系表如图3所示,删除“city”后的关联关系表如图7所示;根据本发明的一个实施例,方法200还包括对关联关系中的关联关系进行修改,图8示出了根据本发明的一个实施例的通过修改表结构语句进行更新处理的流程图。如图8所示,在步骤s810中,访问数据库的日志文件,从日志文件中提取修改表结构语句。修改表结构语句是用来修改数据库中数据表的字段的语句。从日志文件中提取修改表结构语句包括从日志文件中提取出语句时,通过对语句中是否含有关联词alter,判断该语句是否为修改表结构语句,若判断该语句是修改表结构语句,则进行对该语句的操作。随后,执行步骤s820,从修改表结构语句中获取获取要修改的表和字段。随后,执行步骤s830,判断要修改的表和字段是否存在于关联关系表中,若是,则对关联关系表中的表和字段进行相应修改,若不在于关联关系表中,则提取下一条修改表结构语句。执行步骤s830时,从关联关系表中的第一条关联关系开始,遍历所有关联关系,每检索到一条关联关系,对其进行判断是否包含要修改的表和字段。若包含,则将其修改,若不包含要修改的表和字段,则检索下一条关联关系。若检索完毕所有关联关系后,未检索出要修改的关联关系,则判定关联关系表中不存在要修改的表和字段,提取下一条修改表结构语句。通过删除表结构语句和修改表结构语句,能够对关联关系表中的关联关系进行相应的删除和修改,从而达到维护数据表关联关系的目的。根据本发明的一个实施例,计算设备在扫描到下列语句时,进行该语句的判断和处理:altertableschoolrenametoschool_info;通过该语句中含有关键词alter,判断该语句是一条修改表结构语句,要将学校表(school)更名为school_info。接下来分析在关联关系表和自定义中是否已将学校表(school)更名为school_info,如果已经修改,则不进行任何操作,提取下一条语句;如果学校表(school)在关联关系表中,则将学校表(school)更名为school_info。修改后的关联关系表如图9所示。根据本发明的一个实施例,方法200还包括查询关联关系表中的关联关系并绘制网状关联关系图,图10示出了根据本发明的一个实施例的查询关联关系表中的关联关系并绘制网状关联关系图方法1000的流程图。如图10所示,该方法始于步骤s1010,在步骤s1010中,获取查询信息,查询信息包括选定的数据表、查询字段和查询的范围值。范围值为查询关联关系时迭代查询关联关系的次数。获取查询信息后,还会对用户在查询信息中是否给定了查询范围值,以及给定的范围值是否合法进行判断。若查询范围值若为空则进行全局查询或查询默认范围值内的关联关系。全局查询包括查询在关联关系表的所有的关联关系。查询范围值是否合法是指给定的范围值是否大于0,若用户给定范围值小于零,则提示用户范围值不能为负数。随后,执行步骤s1020,根据查询信息对关联关系表中的关联关系进行查询,包括从选定的数据表开始,迭代查询范围值内查询字段的关联关系。从选定表或字段开始,根据关联关系迭代查询下一层数据,将查询的下一层数据到选定表或字段的范围值记作1。每迭代查询更下一层数据,范围值加1。随后,执行步骤s1030,根据查询结果绘制关联关系图。包括计算设备根据用户所查询到的关联关系绘制相应数量个的方块,将表名和其所包含的所有字段填入上一步骤所绘制的方框中,并将其中有关联关系的字段进行高亮显示。随后,用虚线连接由关联关系并在上一步骤中高亮显示的字段,虚线用来表示所连接的不同表的两个字段具有关联关系。通过所呈现的关系图,用户可以得知如何获取所需数据以及可以获得的数据范围。根据本发明的一个实施例,所绘制的一个关联关系图如图11所示。在本例中,用户输入查询信息,包括选定一个数据库、选定表student、范围值2、查询全部字段名。则计算设备将从选定的数据库中检索数据,从student表开始,迭代查询所有关联关系。在本例中,第一层关联关系有school_id和school表中的id、teacher_id和teacher表中的id、class_id和group表中的class_id、id_no和person表中的id。第二层关联关系有表group中id和表teacher中的group_id、表group中school_id和表school中的id、表school中id和表teacher中的school_id、表school中city_id和表city中的id、表school中province_id和表province中的id、表province中id和表city中的province_id、表province中id和表person中的province_id、表person中id和表teacher中的id_no、表person中city_id和表city中的id。查询完毕后用虚线将具有上述关联关系的字段高亮显示并使用虚线连接,虚线表示所连接的字段之间具有某种关联关系。最终呈现的网状关联关系图如图11所示。用户通过如图11所示的网状关联关系图可以得知字段之间的关联关系、如何获取数据及可获取的数据范围。本方面能够对关联关系表中的关联关系进行查询,并将查询结果绘制成关联关系图,将文字记录可视化,提供简明易懂的数据库中数据表字段的关联关系明细。这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、u盘、软盘、cd-rom或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的多语言垃圾文本的识别方法。以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本
技术领域
:内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1