本发明涉及计算机
技术领域:
:,尤其涉及一种确定数据表关联关系的方法和装置。
背景技术:
::在互联网业务中,我们在设定数据表的关联关系时,通常会通过设定相关数据表的主键和外键来确定数据表关联关系中的主表和从表,从而使不同的数据表相关联。主表中存在主键用于与其它表相关联,并且作为在主表中的唯一性标识。从表以主表的主键为外键,可以通过外键与主表进行关联查询。在实现本发明过程中,发明人发现现有技术中至少存在如下问题:由于使用主键和外键确定的数据表关联关系,在进行数据表变更操作时,会受到外键约束。这就使得数据表变更操作必须遵循外键约束,操作相当繁琐,并且外键决定了两个数据表之间数据的先后生成关系,这就使得数据表的应用受到限制,会导致一些问题无法处理。但是不使用外键,也会产生新的问题,互联网业务的快速迭代中,常常会遇到数据库文档和数据库表结构不完全一致的情况,导致数据库表结构难以维护。并且,在新表不断增加后,数据表关联关系越来越复杂,很难整理清楚表与表之间的关联关系。因此,亟需一种能够简化关联数据表的变更操作,提高关联数据表的应用灵活性,并同时可以保持关联数据表的数据一致性和完整性的确定数据表关联关系的方法和装置。技术实现要素:有鉴于此,本发明实施例提供一种确定数据表关联关系的方法和装置,能够简化关联数据表的变更操作,提高关联数据表的应用灵活性,并同时可以保持关联数据表的数据一致性和完整性。为实现上述目的,根据本发明实施例的一个方面,提供了一种确定数据表关联关系的方法,包括:步骤s1,利用关联标识查询待确定数据表中的关联字段,所述关联字段包括其所关联的被关联字段所在的数据表的表名和所述关联标识,所述被关联字段为其所在的数据表的唯一索引,所述关联字段为待确定数据表的索引;步骤s2,解析所述关联字段,获得其对应的被关联字段所在的数据表的表名,以确定该数据表为所述待确定数据表的关于该关联字段的被关联表。可选的,本发明提供的确定数据表关联关系的方法还包括:获取数据库的配置信息,以连接该数据库,并获取该数据库的数据表信息;将该数据库中的每个数据表作为待确定数据表,以通过执行步骤s1和步骤s2确定每个数据表的被关联表,该数据库中的每个数据表的关联标识相同;可视化每个数据表的信息,以及当数据表的被关联表存在时,可视化该数据表与其被关联表的关联关系。可选的,本发明提供的确定数据表关联关系的方法还包括:获取无关联标识的关联关系信息,该关联关系信息包括:存在关联关系的索引字段,该索引字段所在数据表的表名,该索引字段所关联的被关联字段,该被关联字段所在的被关联数据表的表名;根据该无关联标识的关联关系信息,可视化数据表与其被关联表的关联关系。可选的,所述可视化每个数据表的信息包括:对于每个数据表绘制一展示区域,在该展示区域中展示相应数据表的信息;所述可视化数据表与其被关联表的关联关系包括:在该数据表的展示区域和其被关联表的展示区域之间,绘制方向指示图形,该方向指示图形由该数据表指向其被关联表,并注明该数据表的关联字段和该被关联表的被关联字段。可选的,所述关联标识包括:所述被关联字段和间隔字段,在所述关联字段中,利用所述间隔字段间隔所述被关联字段和所述被关联字段所在的数据表的表名;所述利用关联标识查询待确定数据表中的关联字段包括:查询待确定数据表中包括所述关联标识的索引字段,以确定其为所述关联字段;所述解析关联字段,获得其对应的被关联字段所在的数据表的表名包括:剥离所述关联字段中的关联标识,以得到所述被关联字段所在的数据表的表名。为实现上述目的,根据本发明实施例的另一个方面,还提供了一种确定数据表关联关系的装置,包括:查询模块,用于执行步骤s1,利用关联标识查询待确定数据表中的关联字段,所述关联字段包括其所关联的被关联字段所在的数据表的表名和所述关联标识,所述被关联字段为其所在的数据表的唯一索引,所述关联字段为待确定数据表的索引;解析模块,用于执行步骤s2,解析所述关联字段,获得其对应的被关联字段所在的数据表的表名,以确定该数据表为所述待确定数据表的关于该关联字段的被关联表。可选的,本发明提供的确定数据表关联关系的装置还包括:连接模块,用于获取数据库的配置信息,以连接该数据库,并获取该数据库的数据表信息;所述查询模块和解析模块还用于将该数据库中的每个数据表作为待确定数据表,以分别通过执行步骤s1和步骤s2确定每个数据表的被关联表,该数据库中的每个数据表的关联标识相同;可视化模块,用于可视化每个数据表的信息,以及当数据表的被关联表存在时,可视化该数据表与其被关联表的关联关系。可选的,本发明提供的确定数据表关联关系的装置还包括:关联关系获取模块,用于获取无关联标识的关联关系信息,该关联关系信息包括:存在关联关系的索引字段,该索引字段所在数据表的表名,该索引字段所关联的被关联字段,该被关联字段所在的被关联数据表的表名;所述可视化模块还用于根据该无关联标识的关联关系信息,可视化数据表与其被关联表的关联关系。可选的,所述可视化模块进一步用于对于每个数据表绘制一展示区域,在该展示区域中展示相应数据表的信息,以及在该数据表的展示区域和其被关联表的展示区域之间,绘制方向指示图形,该方向指示图形由该数据表指向其被关联表,并注明该数据表的关联字段和该被关联表的被关联字段。可选的,所述关联标识包括:所述被关联字段和间隔字段,在所述关联字段中,利用所述间隔字段间隔所述被关联字段和所述被关联字段所在的数据表的表名;所述查询模块进一步用于查询待确定数据表中包括所述关联标识的索引字段,以确定其为所述关联字段;所述解析模块进一步用于剥离所述关联字段中的关联标识,以得到所述被关联字段所在的数据表的表名。为实现上述目的,根据本发明实施例的另一个方面,还提供了一种确定数据表关联关系的电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明提供的确定数据表关联关系的方法。为实现上述目的,根据本发明实施例的另一个方面,还提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现本发明提供的确定数据表关联关系的方法。本发明实施例提供的确定数据表关联关系的方法和装置,基于本发明提出的关联数据表的关联字段设定规则对数据表关联关系进行确定。本发明提出的关联数据表的关联字段设定规则中关联表和被关联表中没有设置外键和主键,在操作关联表和被关联表时,不受外键约束,其引用关系的确定是通过关联字段设定规则来实现。本发明通过规定关联字段的规则,使得相关字段有规律,能够简化关联数据表的变更操作,提高关联数据表的应用灵活性,并同时可以保持关联数据表的数据一致性和完整性。并且本发明通过自动绘制数据库表结构图,使得工作人员能够清晰查看各表的关联关系。通过补充设置关联关系,对一些由于工作疏忽导致不符合我们原来关联规则的关联关系,得到维护。上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明附图用于更好地理解本发明,不构成对本发明的不当限定。其中:图1是本发明实施例提供的确定数据表关联关系的方法的主要流程的示意图;图2是本发明实施例提供的确定数据表关联关系的方法的一种实施方式的流程示意图;图3是本发明实施例提供的数据表关联关系的可视化效果示意图;图4是本发明实施例提供的确定数据表关联关系的装置的主要模块的示意图;图5是本发明实施例可以应用于其中的示例性系统架构图;图6是适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。具体实施方式以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。本发明实施例提供一种确定数据表关联关系的方法,该方法应用于基于本发明提出的关联数据表的关联字段设定规则下的,数据表关联关系的确定。如图1所示,确定数据表关联关系的方法包括:步骤s1和步骤s2。步骤s1,利用关联标识查询待确定数据表中的关联字段,关联字段包括其所关联的被关联字段所在的数据表的表名和关联标识,被关联字段为其所在的数据表的唯一索引,关联字段为待确定数据表的索引。存在关联关系的两个数据表在本发明中称之为关联表和被关联表,关联表中的索引引用被关联表中的唯一索引,关联表即相当于主从表关系中的从表,被关联表即相当于主从表关系中的主表。但区别于主从表关系,关联表和被关联表中没有设置外键和主键,在操作关联表和被关联表时,不受外键约束,其引用关系的确定是通过关联字段设定规则来实现的。在本发明提出的关联数据表的关联字段设定规则中,关联表中引用被关联表的唯一索引的索引字段,我们将其定义为关联字段,相对的,被关联表中被引用的唯一索引字段定义为被关联字段。关联字段包括其所关联的被关联字段所在的数据表的表名和关联标识。也就是说,在生成数据表时,将其中引用其他表唯一索引的索引字段设置为该被引用的数据表的表名和设定的关联标识的组合,以确定该索引的关联关系。因此,在本步骤中,通过查询设定的关联标识,即可以得到数据表中所有具有关联关系的索引。然后执行步骤s2,解析关联字段,获得其对应的被关联字段所在的数据表的表名,以确定该数据表为待确定数据表的关于该关联字段的被关联表。在本发明的一种实施方式中,关联标识包括:被关联字段和间隔字段,在关联字段中,利用间隔字段间隔被关联字段和被关联字段所在的数据表的表名。间隔字段用于将被关联字段和被关联字段所在的数据表的表名区分开,以便于后续步骤对于被关联字段所在的数据表的表名的识别。关联标识中被关联字段的设置,以便于直观准确的确定字段间的关联关系,使得工作人员能够清晰查看各表的关联关系。例如,以mysql数据库作为示例,规定所有表的第一个字段必须为:字段名id,长整型,自增字段。规定当表b需要引用表a的id字段时(相当于作为外键的时候),表b新增字段名a_id表示该字段(即关联字段)对应引用a表的id字段,其规则为a表表名+下划线+“id”,下划线即作为间隔字段,“id”即被关联字段。该过程不实际设置a_id为外键,不实际关联a表的id字段,由程序代码去约束和控制。具体的,步骤s1中,利用关联标识查询待确定数据表中的关联字段的过程为:查询待确定数据表中包括关联标识的索引字段,以确定其为关联字段。同上例,本步骤遍历每个表的字段,查询到每个以下划线id结尾的字段作为关联字段。具体的,步骤s2中,解析关联字段,获得其对应的被关联字段所在的数据表的表名的过程为:剥离关联字段中的关联标识,以得到被关联字段所在的数据表的表名。同上例,本步骤对关联字段做处理,对查询到的表b中的字段a_id,使用代码剥离下划线id,从而得到表名a。即确定表b和表a有关联关系,表a是表b的关于该关联字段a_id的被关联表。如图2所示,在本发明的一种实施方式中,本发明还提供下述确定数据库中所有数据表的关联关系并进行可视化绘制的步骤:首先,用户选择要查看关联关系的远端数据库,获取该数据库的配置信息,以连接该远端数据库,并获取该数据库的所有数据表信息,以及所有字段。即执行本发明方法的本地数据库中可以预存储有数据库的配置信息,用于记录我们需要检查的远端数据库的相关连接信息,例如下表1所示。表1字段名称字段类型说明idint(11)unsignedid自增servervarchar(100)待检测的数据库的ipportint(11)待检测的数据库的portusernamevarchar(100)待检测的数据库的账号passwordvarchar(100)待检测的数据库的密码dbnamevarchar(100)待检测的数据库的数据库名然后,将该数据库中的每个数据表作为待确定数据表,以通过执行步骤s1和步骤s2,判断每个字段是否符合规则的关联关系,即判断字段是否为关联字段,从而确定每个数据表的被关联表,该数据库中的每个数据表的关联标识相同。由于数据库中的每个数据表的关联标识相同,因此在所有数据表中查询该关联标识即可以获得所有的关联字段。然后,可视化每个数据表的信息,以及当数据表的被关联表存在时,可视化该数据表与其被关联表的关联关系,既符合本发明关联字段设定规则的关联关系。在本发明的一种实施方式中,相对于上述绘制步骤,本发明还提供下述确定数据库中对于无关联标识的数据表的关联关系并进行可视化绘制的步骤:首先,读取无关联标识的关联关系信息,即对于没有按照本发明提出的关联数据表的关联字段设定规则设定存在引用关系的索引字段的存在引用关系的两个数据表,即非标准关联关系,本方法中预先将其进行记录,存储为无关联标识的关联关系信息,例如下表2所示。表2字段名称字段类型说明idint(11)unsignedid自增db_set_idint(11)属于哪个数据库的关系from_tblvarchar(100)连线的起点表from_fieldvarchar(100)连线的起点字段to_tablevarchar(100)连线的终点表to_fieldvarchar(100)连线的终点字段created_atdatetime记录写入时间该关联关系信息包括:存在关联关系的索引字段(连线的起点字段),该索引字段所在数据表的表名(连线的起点表),该索引字段所关联的被关联字段(连线的终点字段),该被关联字段所在的被关联数据表的表名(连线的终点表)。然后,根据该无关联标识的关联关系信息,可视化该非标准关联关系数据表与其被关联表的关联关系。在本发明的一个具体的实施方式中,本发明实施过程包括下述步骤:a)用户选择需要绘制的远端数据库。b)绘制程序连接用户选择的远端数据库。c)获得连接的远端数据库的数据表,mysql中使用的语句为showtables。d)获得连接的远端数据库的数据表的每个表的表结构,并构建数组,mysql中使用的语句为:selectcolumn_name,column_type,column_commentfrominformation_schema.columnswheretable_schema=‘数据库名’andtable_name=‘数据表名’。e)遍历每个表的字段,对每一个以下划线id结尾的字段,做处理,例如,对表b中的字段a_id,先使用代码剥离下划线id,从而得到表名a。即:表b和表a有关联关系,我们需要保存和绘制该关联关系。代码剥离下划线id后得到的表名,需要判断是否当前存在的表,如果不存在,则判断为以前已经删除的表,不需要保存和绘制该关联关系。f)如图3所示,绘制所有的表及表结构,对于每个数据表绘制一展示区域,在该展示区域中展示相应数据表的信息。g)如图3所示,绘制表之间的关联关系,在该数据表的展示区域和其被关联表的展示区域之间,绘制方向指示图形(实例中为箭头连线),该方向指示图形由该数据表指向其被关联表,并注明该数据表的关联字段和该被关联表的被关联字段,如试例中:oplog.es_group_manager_id->es_group_manager.id。h)从本地的数据库关联关系表,拿出非标准的关联关系,并绘制,如图3所示,对于非标准的关联关系,连线上面注明其连接关系,例如是从a.filed1连接到b.field2,则连线注明为a.field1->b.field2如试例中:sys_set.t_id->test.id。本发明实施例还提供一种确定数据表关联关系的装置,如图4所示,该装置包括:查询模块401和解析模块402。查询模块,用于执行步骤s1,利用关联标识查询待确定数据表中的关联字段,关联字段包括其所关联的被关联字段所在的数据表的表名和关联标识,被关联字段为其所在的数据表的唯一索引,关联字段为待确定数据表的索引。解析模块,用于执行步骤s2,解析关联字段,获得其对应的被关联字段所在的数据表的表名,以确定该数据表为待确定数据表的关于该关联字段的被关联表。在本发明中,该确定数据表关联关系的装置还包括:连接模块,用于获取数据库的配置信息,以连接该数据库,并获取该数据库的数据表信息。查询模块和解析模块还用于将该数据库中的每个数据表作为待确定数据表,以分别通过执行步骤s1和步骤s2确定每个数据表的被关联表,该数据库中的每个数据表的关联标识相同。可视化模块,用于可视化每个数据表的信息,以及当数据表的被关联表存在时,可视化该数据表与其被关联表的关联关系。在本发明中,该确定数据表关联关系的装置还包括:关联关系获取模块,用于获取无关联标识的关联关系信息,该关联关系信息包括:存在关联关系的索引字段,该索引字段所在数据表的表名,该索引字段所关联的被关联字段,该被关联字段所在的被关联数据表的表名。可视化模块还用于根据该无关联标识的关联关系信息,可视化数据表与其被关联表的关联关系。在本发明中,可视化模块进一步用于对于每个数据表绘制一展示区域,在该展示区域中展示相应数据表的信息,以及在该数据表的展示区域和其被关联表的展示区域之间,绘制方向指示图形,该方向指示图形由该数据表指向其被关联表,并注明该数据表的关联字段和该被关联表的被关联字段。在本发明中,关联标识包括:被关联字段和间隔字段,在关联字段中,利用间隔字段间隔被关联字段和被关联字段所在的数据表的表名。查询模块进一步用于查询待确定数据表中包括关联标识的索引字段,以确定其为关联字段。解析模块进一步用于剥离关联字段中的关联标识,以得到被关联字段所在的数据表的表名。本发明实施例提供的确定数据表关联关系的方法和装置,基于本发明提出的关联数据表的关联字段设定规则对数据表关联关系进行确定。本发明提出的关联数据表的关联字段设定规则中关联表和被关联表中没有设置外键和主键,在操作关联表和被关联表时,不受外键约束,其引用关系的确定是通过关联字段设定规则来实现。本发明通过规定关联字段的规则,使得相关字段有规律,能够简化关联数据表的变更操作,提高关联数据表的应用灵活性,并同时可以保持关联数据表的数据一致性和完整性。并且本发明通过自动绘制数据库表结构图,使得工作人员能够清晰查看各表的关联关系。通过补充设置关联关系,对一些由于工作疏忽导致不符合我们原来关联规则的关联关系,得到维护。图5示出了可以应用本发明实施例的确定数据表关联关系的方法或确定数据表关联关系的装置的示例性系统架构500。如图5所示,系统架构500可以包括终端设备501、502、503,网络504和服务器505。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用。终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。服务器505可以是提供各种服务的服务器,例如用于连接远端数据库服务器,以确定数据库服务器中数据表关联关系的后台管理服务器。需要说明的是,本发明实施例所提供的确定数据表关联关系的方法一般由服务器505执行,相应地,确定数据表关联关系的装置一般设置于服务器505中。应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。下面参考图6,其示出了适于用来实现本发明实施例的终端设备的计算机系统600的结构示意图。图6示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图6所示,计算机系统600包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有系统600操作所需的各种程序和数据。cpu601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(cpu)601执行时,执行本发明的系统中限定的上述功能。需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括查询模块、解析模块、连接模块和可视化模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:步骤s1,利用关联标识查询待确定数据表中的关联字段,所述关联字段包括其所关联的被关联字段所在的数据表的表名和所述关联标识,所述被关联字段为其所在的数据表的唯一索引,所述关联字段为待确定数据表的索引;步骤s2,解析所述关联字段,获得其对应的被关联字段所在的数据表的表名,以确定该数据表为所述待确定数据表的关于该关联字段的被关联表。上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。当前第1页12当前第1页12