一种数据库模型包创建方法、装置及设备与流程

文档序号:17160607发布日期:2019-03-20 00:39阅读:165来源:国知局
本申请涉及数据库
技术领域
:,特别涉及一种数据库模型包创建方法、装置及设备。
背景技术
::目前主流数据库模型建模软件包括powerdesigner、er/studio、erwin等,通过上述数据库模型建模软件,可以针对一个项目或一个产品创建相应的数据库模型包。当一个产品可以在多个项目中实施时,为了满足不同项目中特定的需求场景,需要在上述产品对应的产品模型包的基础上进行二次开发,从而得到不同项目各自对应的项目模型包,其中每个项目模型包中均包括与上述产品模型包对应的独立副本。可是,正是由于每个项目模型包中均保存有与上述产品模型包对应的独立副本,从而导致当上述产品模型包发生变更之后,还需要专门对每个项目模型包中的副本进行额外的更新操作,才能保证项目模型包中的副本与上述产品模型包相一致,由此可见,上述同步过程是相当繁琐复杂的。技术实现要素:有鉴于此,本申请的目的在于提供一种数据库模型包创建方法、装置及设备,通过上述方案能够以一种全新方式在产品模型包的基础上针对目标对象进行二次开发,并使得在上述产品模型包发生变更的同时,上述二次开发后得到的完整数据库模型包便会自动实现同步更新,而无需额外进行更新操作,从而简化了同步过程。其具体方案如下:第一方面,本申请公开了一种数据库模型包创建方法,包括:创建与目标对象对应的对象模型包;从预设产品模型库中,确定出与所述目标对象存在关联性的产品模型包,得到目标产品模型包;其中,所述预设产品模型库用于保存预先创建的产品模型包;创建所述对象模型包与所述目标产品模型包之间的引用关系,以使所述对象模型包引用所述目标产品模型包;对当前被所述对象模型包引用的所述目标产品模型包进行合并操作,以输出所述目标对象的完整数据库模型包。可选的,所述目标对象的对象类型为项目类型或产品类型。可选的,所述对当前被所述对象模型包引用的所述目标产品模型包进行合并操作之前,还包括:判断当前被所述对象模型包引用的所述目标产品模型包中的每一数据库模型是否满足与所述目标对象对应的模型需求;如果否,则根据所述模型需求,在所述对象模型包中对当前被所述对象模型包引用的所述目标产品模型包中相应的数据库模型进行相应修改,得到修改后的模型副本;其中,所述数据库模型包括数据表模型、数据表字段模型、视图模型、索引模型和枚举模型。可选的,所述对当前被所述对象模型包引用的所述目标产品模型包进行合并操作之前,还包括:判断所述修改后的模型副本以及当前被所述对象模型包引用的所述目标产品模型包中的所有数据库模型是否能够满足与所述目标对象对应的全部的模型需求;如果否,则在所述对象模型包中创建相应的新的数据库模型,得到扩展模型。可选的,所述对当前被所述对象模型包引用的所述目标产品模型包进行合并操作,以输出所述目标对象的完整数据库模型包,包括:将所述修改后的模型副本和所述扩展模型确定为当前所述目标对象的差异模型;将当前被所述对象模型包引用的所述目标产品模型包和所述差异模型进行合并,以输出所述目标对象的完整数据库模型包。可选的,所述数据库模型包创建方法,还包括:为所述完整数据库模型包分配相应的版本号。可选的,所述数据库模型包创建方法,还包括:对所述完整数据库模型包进行监视;若监视到所述完整数据库模型包中的任意数据库模型被修改,则记录相应的变更内容,并为本次修改后的模型包分配新的版本号。可选的,所述数据库模型包创建方法,还包括:获取包含第一版本号和第二版本号的增量信息查询请求;从记录下来的所述变更内容中选取出位于所述第一版本号和所述第二版本号之间的所有变更内容;对所述变更内容进行合并,以输出相应的增量模型。第二方面,本申请公开了一种数据库模型包创建装置,包括:模型包创建模块,用于创建与目标对象对应的对象模型包;模型包确定模块,用于从预设产品模型库中,确定出与所述目标对象存在关联性的产品模型包,得到目标产品模型包;其中,所述预设产品模型库用于保存预先创建的产品模型包;模型包引用模型,用于创建所述对象模型包与所述目标产品模型包之间的引用关系,以使所述对象模型包引用所述目标产品模型包;模型包合并模块,用于对当前被所述对象模型包引用的所述目标产品模型包进行合并操作,以输出所述目标对象的完整数据库模型包。第三方面,本申请公开了一种数据库模型包创建设备,包括:存储器,用于保存计算机程序;处理器,用于执行所述计算机程序,以实现前述的数据库模型包创建方法。可见,本申请在创建完目标对象对应的对象模型包以及从预设产品模型库中确定出与目标对象存在关联性的目标产品模型包之后,会进一步创建上述对象模型包与目标产品模型包之间的引用关系,从而使得上述对象模型包引用上述目标产品模型包,在创建完上述引用关系之后,通过对当前被所述对象模型包引用的目标产品模型包进行合并,便可输出目标对象的完整数据库模型包,由此可见,上述模型二次开发过程中所输出的完整数据库模型包是基于当前被所述对象模型包引用的目标产品模型包得到的,也即上述完整数据库模型包是在引用上述目标产品模型包的基础上得到的,从而使得当目标产品模型包发生变更的同时,上述完整数据库模型包也会因此自动实现同步更新,而无需额外进行更新操作,从而简化了同步过程。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本申请公开的一种数据库模型包创建方法流程图;图2为本申请公开的一种具体的数据库模型包创建方法流程图;图3为本申请公开的一种数据库模型包创建方法子流程图;图4为本申请公开的一种数据库模型包创建装置结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请实施例公开了一种数据库模型包创建方法,参见图1所示,该方法包括:步骤s11:创建与目标对象对应的对象模型包。步骤s12:从预设产品模型库中,确定出与所述目标对象存在关联性的产品模型包,得到目标产品模型包;其中,所述预设产品模型库用于保存预先创建的产品模型包。需要指出的是,由于一个项目可以涉及多种产品,所以本实施例中所述目标对象的对象类型具体可以为项目类型。当然,考虑到有些比较复杂的产品中会包含相对比较简单的产品,所以本实施例中所述目标对象的对象类型具体也可以是产品类型。也即,本实施例中的目标对象既可以是目标项目,也可以是目标产品,与目标对象对应的对象模型包可以是项目模型包或产品模型包。本实施例中,上述预设产品模型库中包括预先创建的产品模型包,并且,每个预先创建的产品模型包中均可以包括若干数据库模型,如包括但不限于数据表模型、数据表字段模型、视图模型、索引模型、枚举模型等。本实施例中,需要从上述预设产品模型库中选取出与目标对象存在关联性的产品模型包作为目标产品模型包,具体的,可以先从上述预设产品模型库对应的所有产品中筛选出目标对象所依赖的产品,然后从上述产品模型库中选取出与上述筛选出的产品对应的产品模型包作为目标产品模型包。步骤s13:创建所述对象模型包与所述目标产品模型包之间的引用关系,以使所述对象模型包引用所述目标产品模型包。也即,在创建完目标对象所对应的对象模型包以及从预设产品模型库中确定出与目标对象相关联的目标产品模型包之后,并非是通过副本复制的方式将上述目标产品模型包直接拷贝至对象模型包中,而是创建对象模型包与目标产品模型包之间的引用关系,也即只需让对象模型包引用目标产品模型包即可,从而可以使得目标项目或目标产品拥有其所引用的目标产品模型包中的所有数据库模型,并且,这样当后期目标产品模型包发生变更的同时,与目标对象对应的模型包会自动实现同步更新,而无需进行额外的操作来完成更新。步骤s14:对当前被所述对象模型包引用的所述目标产品模型包进行合并操作,以输出所述目标对象的完整数据库模型包。需要进一步指出的是,上述预设产品模型库中的任意产品模型包除了可以被外界引用之外,其自身也可以引用上述预设产品模型库中的其他产品模型包。进一步的,若本实施例中所述目标对象的对象类型为产品类型,那么通过上述过程得到与该目标对象对应的完整数据模型包之后,还可以将该完整数据模型包作为一个新的产品模型包保存至上述预设产品模型库中,以实现对上述预设产品模型库的扩展。另外,本实施例可以采用c/s模式或b/s模式,将多个产品或项目的数据文件保存在服务端数据库,支持多人协作管理。可见,本申请实施例在创建完目标对象对应的对象模型包以及从预设产品模型库中确定出与目标对象存在关联性的目标产品模型包之后,会进一步创建上述对象模型包与目标产品模型包之间的引用关系,从而使得上述对象模型包引用上述目标产品模型包,在创建完上述引用关系之后,通过对当前被所述对象模型包引用的目标产品模型包进行合并,便可输出目标对象的完整数据库模型包,由此可见,上述模型二次开发过程中所输出的完整数据库模型包是基于当前被所述对象模型包引用的目标产品模型包得到的,也即上述完整数据库模型包是在引用上述目标产品模型包的基础上得到的,从而使得当目标产品模型包发生变更的同时,上述完整数据库模型包也会因此自动实现同步更新,而无需额外进行更新操作,从而简化了同步过程。参见图2所示,本申请实施例公开了一种具体的数据库模型包创建方法,包括:步骤s21:创建与目标对象对应的对象模型包。步骤s22:从预设产品模型库中,确定出与所述目标对象存在关联性的产品模型包,得到目标产品模型包;其中,所述预设产品模型库用于保存预先创建的产品模型包。步骤s23:创建所述对象模型包与所述目标产品模型包之间的引用关系,以使所述对象模型包引用所述目标产品模型包。本实施例中,项目模型包或产品模型包的信息具体可以如表1所示:表1字段名中文名描述name模型包名称用来识别产品或项目的名称code模型包编码用来识别产品或项目的唯一编码type模型包类型区分产品模型包和项目模型包。remark描述信息该模型包简要描述信息create_user创建人创建该模型包的操作员create_time创建时间创建该模型包的时间本实施例中,一个目标产品或目标项目的模型包可以引用其他多个产品模型包,它们之间的引用关系可以通过表2来表示:表2另外,关于上述步骤s21至s23更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。步骤s24:判断当前被所述对象模型包引用的所述目标产品模型包中的每一数据库模型是否满足与所述目标对象对应的模型需求。其中,所述数据库模型包括数据表模型、数据表字段模型、视图模型、索引模型和枚举模型。另外,可以理解的是,为了区分不同项目或产品的数据库模型,可以在上述每个数据库模型的相关信息中添加相应的模型包编码。本实施例中,数据表模型的相关信息可以如表3所示:表3字段名中文名描述title数据表标题数据表的标题name数据表名称数据表的名称pkg_code模型包编码所属产品或项目模型包的编码remark描述信息数据表的简要描述信息create_user创建人创建数据表的操作员create_time创建时间创建数据表的时间last_modify_user修改人最近修改数据表的操作员last_modify_time修改时间最近修改数据表的时间本实施例中,数据表字段模型的相关信息可以如表4所示:表4本实施例中,视图模型的相关信息可以如表5所示:表5字段名中文名描述title视图标题视图的标题name视图名称视图的名称pkg_code模型包编码所属产品或项目模型包的编码sql视图sql视图的sql脚本create_user创建人创建视图的操作员create_time创建时间创建视图的时间last_modify_user修改人最近视图的操作员last_modify_time修改时间最近视图的时间本实施例中,索引模型的相关信息可以如表6所示:表6字段名中文名描述table_name数据表编码所属数据表编码name索引名称索引的名称pkg_code模型包编码所属产品或项目模型包的编码columns索引字段索引的字段集合type索引类型包括普通、唯一等create_user创建人创建视图的操作员create_time创建时间创建视图的时间last_modify_user修改人最近视图的操作员last_modify_time修改时间最近视图的时间本实施例中,枚举模型的相关信息可以如表7所示:表7字段名中文名描述name枚举名称枚举的唯一名称item_name枚举项目名称每一个枚举值对应的显示名称item_value枚举项目值每一个枚举值对应的存储值pkg_code模型包编码所属产品或项目模型包的编码sort_no排序序号用于枚举值显示的顺序create_user创建人创建枚举的操作员create_time创建时间创建枚举的时间last_modify_user修改人最近枚举的操作员last_modify_time修改时间最近枚举的时间步骤s25:如果否,则根据所述模型需求,在所述对象模型包中对当前被所述对象模型包引用的所述目标产品模型包中相应的数据库模型进行相应修改,得到修改后的模型副本。也即,本实施例在被对象模型包引用的目标产品模型包中的任一数据库模型无法满足所述目标对象对应的模型需求时,可以在所述对象模型包中针对该数据库模型做出相应的修改,也即,本实施例不是直接在目标产品模型包中对相应的数据库模型进行修改,而是在对象模型包中针对上述数据库模型进行修改,具体的,可以通过在对象模型包中针对上述数据库模型进行相应的修改,得到位于对象模型包中的一个新的模型副本,并利用该模型副本覆盖对象模型包中原先引用的数据库模型,从而实现在不真正修改目标产品模型包中的数据库模型的前提下,使得对象模型包中的数据库模型能够满足目标对象对应的模型需求。步骤s26:判断所述修改后的模型副本以及当前被所述对象模型包引用的所述目标产品模型包中的所有数据库模型是否能够满足与所述目标对象对应的全部的模型需求。步骤s27:如果否,则在所述对象模型包中创建相应的新的数据库模型,得到扩展模型。也即,在对象模型包引用了相关的目标产品模型包,并且根据模型需求在对象模型包中针对相应的引用的数据库模型进行修改之后,如果此时对象模型包依然无法满足目标对象对应的全部的模型需求,也即,如果此时对象模型包不具备目标对象对应的某些模型需求时,则可以在对象模型包中创建相应的新的数据库模型,从而得到扩展模型。可以理解的是,由于上述扩展模型是在对象模型包中创建的,在该对象模型包还没有被外界其他产品或项目引用的情况下,此时该对象模型包中的上述扩展模型对于其他产品或项目来说是不可见的。本实施例中,上述扩展模型的类型包括但不限于数据表模型、数据表字段模型、视图模型、索引模型和枚举模型。步骤s28:将所述修改后的模型副本和所述扩展模型确定为当前所述目标对象的差异模型。另外,本实施例在确定出上述差异模型之后,还可以输出该差异模型,以及提取与该差异模型对应的全部sql脚本,得到差异sql脚本,并输出该差异sql脚本。步骤s29:将当前被所述对象模型包引用的所述目标产品模型包和所述差异模型进行合并,以输出所述目标对象的完整数据库模型包。需要指出的是,在得到上述完整数据库模型包之后,也可以根据以后目标项目或目标产品的实际需求变化情况,对上述完整数据库模型包中的数据库模型进行相应的修改操作。可以理解的是,上述修改操作包括但不限于微调、删除、新增等操作。进一步的,在得到上述完整数据库模型包之后,还可以全量提取与该完整数据库模型包对应的全部sql脚本,并输出该sql脚本。参见图3所示,在前述实施例公开的内容的基础上,本申请实施例中,进一步包括:步骤s31:为所述完整数据库模型包分配相应的版本号。步骤s32:对所述完整数据库模型包进行监视。步骤s33:若监视到所述完整数据库模型包中的任意数据库模型被修改,则记录相应的变更内容,并为本次修改后的模型包分配新的版本号。需要说明的是,在记录上述变更内容时,具体可以细化到原子级别,也即具体可以细化到数据表模型、数据表字段模型、视图模型、索引模型和枚举模型等级别,通过这种级别的记录方式,可以将记录的每一项变更内容均转换成相应的一条数据库脚本。由上可知,本实施例在创建和修改上述完整数据库模型包时,均会产生相应的版本号。可以理解的是,本实施例具体可以按照模型包的变更时间先后顺序,依序创建从小到大的版本号,也即,变更时间越靠后,相应的版本号变越大。本实施例中,在模型包中的任意数据库模型被修改时,具体可以记录包含相应变更内容以及新分配的版本号的版本信息,通过查询该版本信息,可以确定出相应的变更内容以及版本号。其中,上述版本信息具体可以如表8所示:表8步骤s34:获取包含第一版本号和第二版本号的增量信息查询请求。步骤s35:从记录下来的所述变更内容中选取出位于所述第一版本号和所述第二版本号之间的所有变更内容。步骤s36:对所述变更内容进行合并,以输出相应的增量模型。本实施例中,增量信息查询请求包含第一版本号和第二版本号,其中,上述第一版本号作为起始版本号,上述第二版本号作为结束版本号。通过上述两个版本号可以从前述记录下来的变更内容中查询出位于上述起始版本号和结束版本号之间的所有变更内容。在一种具体实施方式中,上述增量信息查询请求可以由后台系统自动根据预设的迭代周期来进行定期触发,与此对应的,用作起始版本号的第一版本号对应于每个迭代周期的开始时刻,用作结束版本号的第二版本号对应于每个迭代周期的结束时刻。在另一种具体实施方式中,上述增量信息查询请求也可以由用户来发起,此时可允许用户根据自身的实际查询需要,选取任意的版本号作为第一版本号和第二版本号。另外,本实施例在查询到上述所有的相应变更内容之后,还需要对这些变更内容进行合并。在一些实施例中,可以根据以最大版本号为基准的合并规则进行合并,例如,在上述查询到的所有变更内容中,如果针对同一字段多次变更了字段长度、字段描述等字段属性,则可以只取与最大版本号对应的变更内容。在另一些实施例中,可以根据互斥抵消的合并规则进行合并,例如,当针对同一字段先后出现新增、删除等变更操作,则可以通过字段之间的相互抵消来进行合并。进一步的,本实施例在输出相应的增量模型的同时,也可以提取与该增量模型对应的全部sql脚本,得到相应的增量sql脚本,并输出该增量sql脚本。参见图4所示,本申请实施例公开了一种数据库模型包创建装置,包括:模型包创建模块11,用于创建与目标对象对应的对象模型包;模型包确定模块12,用于从预设产品模型库中,确定出与所述目标对象存在关联性的产品模型包,得到目标产品模型包;其中,所述预设产品模型库用于保存预先创建的产品模型包;模型包引用模型13,用于创建所述对象模型包与所述目标产品模型包之间的引用关系,以使所述对象模型包引用所述目标产品模型包;模型包合并模块14,用于对当前被所述对象模型包引用的所述目标产品模型包进行合并操作,以输出所述目标对象的完整数据库模型包。其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。可见,本申请实施例在创建完目标对象对应的对象模型包以及从预设产品模型库中确定出与目标对象存在关联性的目标产品模型包之后,会进一步创建上述对象模型包与目标产品模型包之间的引用关系,从而使得上述对象模型包引用上述目标产品模型包,在创建完上述引用关系之后,通过对当前被所述对象模型包引用的目标产品模型包进行合并,便可输出目标对象的完整数据库模型包,由此可见,上述模型二次开发过程中所输出的完整数据库模型包是基于当前被所述对象模型包引用的目标产品模型包得到的,也即上述完整数据库模型包是在引用上述目标产品模型包的基础上得到的,从而使得当目标产品模型包发生变更的同时,上述完整数据库模型包也会因此自动实现同步更新,而无需额外进行更新操作,从而简化了同步过程。进一步的,本申请还公开了一种数据库模型包创建设备,包括:存储器,用于保存计算机程序;处理器,用于执行所述计算机程序,以实现前述的数据库模型包创建方法。其中,关于上述数据库模型包创建方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或
技术领域
:内所公知的任意其它形式的存储介质中。以上对本申请所提供的一种数据库模型包创建方法、装置及设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1