一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据库结构生成方法及装置与流程

2022-05-06 08:04:47 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其是涉及一种数据库结构生成方法及装置。


背景技术:

2.软件系统的数据库(database,简称db)通常是指通过数据库管理程序生成的数据库结构和存储于此数据库结构中的数据,数据库是软件系统的基础。在软件开发过程中,数据库相关的工作主要包括数据库结构的定义和数据存取以及数据处理逻辑的实现,而数据库结构的定义是任何数据处理和数据使用的基础。较好的数据库结构定义可以增加数据的可管理性、提高数据的存取效率、优化数据的处理性能等。
3.开发人员在定义数据库结构时,主要的方式为通过特定的代码文件定义系统中所需要的数据库结构,或在特定的代码存储位置集中存储所有数据库结构定义代码文件。当系统被编译或直接运行时,相应的数据库结构定义将被解析,从而被数据库管理程序转换为其内部的结构以存储相应数据。这种方式需要将系统中所有的数据库结构定义代码集中到预先约定的存储位置,使得任何对现有数据库结构定义的扩展以及当新功能模块需要使用新的数据库结构定义时,都必须修改统一的数据库结构定义代码文件或将新的数据库结构定义代码文件存储至约定的位置,扩展性较差。特别是当系统复杂,功能模块数量大的时候,系统数据库结构的定义也会越来越复杂,代码量越来越大,不方便管理。且数据库结构的定义不能和相应功能模块的代码一起独立存储,而是混在整套系统的公用代码中,使得系统代码结构复杂化,耦合性提高,增加了开发人员的开发成本和维护成本,且容易产生混乱。
4.因此,如何在数据库结构定义工作中,提高可扩展性,降低功能模块间的耦合,降低开发维护成本,避免产生混乱,是本领域技术人员目前需要解决的技术问题。


技术实现要素:

5.本发明实施例的目的在于提供一种数据库结构成生方法,用于提高系统的扩展性、降低功能模块间的耦合、降低开发维护成本、解决容易产生混乱的问题;本发明的另一目的是提供一种数据库结构的生成装置,均具有上述有益效果。
6.为解决上述技术问题,本发明实施例的一个方面提供了一种数据库结构生成方法,包括:读取每个功能模块中的数据库结构定义;解析所述数据库结构定义;合并每个功能模块中所述解析后的数据库结构定义并生成系统需要的所有数据库结构定义;提交所述合并生成的数据库结构定义给数据库管理程序。
7.优选的,所述功能模块中的数据库结构定义与所述功能模块代码一起独立于其他功能模块代码存储。
8.可选的,所述功能模块中的数据库结构定义可以为单独的代码文件,也可以为附属于模块定义文件中的数据库结构定义代码。
9.优选的,所述数据库结构定义,包括:数据库表,用于定义一个独立的存储结构以存储系统中一类数据,一个功能模块可以定义多个需要使用的数据库表。
10.所述数据库表,包括:数据字段,用于定义所述数据库表中需要存储的数据,一个数据库表中可以定义多个数据字段。
11.所述数据字段,包括:数据字段名称,用于定义所述数据字段的名称;数据字段类型,用于定义所述数据字段的数据类型;数据字段辅助属性,用于定义所述数据字段所需的辅助性信息。
12.可选的,所述数据库表,包括:其他用于描述或扩展所述数据库表的扩展信息。
13.可选的,所述扩展信息,包括:所述数据库表中的索引信息,用于提高所述数据库表中数据的检索效率;所述数据库表中的计算字段,用于根据所述数据库表中其他数据字段计算出的逻辑数据字段;所述数据库表需要使用的其他辅助信息。
14.可选的,所述功能模块可以定义已经在其他功能模块中定义的数据库表,以扩展所述其他功能模块的功能。
15.进一步,当所述功能模块中定义的数据库表已经被定义在所述其他功能模块中时,所述数据库表的最终结构将通过合并所述功能模块以及所述其他功能模块中对所述数据库表的定义生成。
16.可选的,所述合并,包括:当所述功能模块对所述数据库表的定义比所述其他功能模块中定义的所述数据库表新增数据字段时,所述数据库表的最终结构将添加所述新增数据字段;当所述功能模块对所述数据库表的定义与所述其他功能模块中定义的所述数据库表有相同数据字段时,所述数据库表的最终结构将合并所述数据字段信息,信息冲突时,以较晚载入的功能模块中的定义为准。
17.优选的,所述功能模块不能删除所述其他功能模块已经定义的数据库表或数据库表中的数据字段。
18.进一步,当所述功能模块需要使用所述其他功能模块中已经定义的数据库表,但所述其他功能模块中定义的所述数据库表结构中的数据字段不足以支持所述功能模块的功能逻辑时,所述功能模块可定义所述数据库表,并在其中定义所需要使用的新的数据字段,不需要定义所述其他功能模块中已经定义且不需要扩展的其他数据字段。
19.进一步,当所述功能模块需要使用所述其他功能模块中已经定义的数据库表,但所述其他功能模块中定义的所述数据库表结构中的数据字段属性不足以支持所述功能模块的功能逻辑时,所述功能模块可定义所述数据库表,并在其中定义需要扩展的数据字段,不需要定义所述其他功能模块中已经定义且不需要扩展的其他数据字段。
20.本发明的另一有益效果是,当软件系统被切割成多个功能模块分别开发时,开发
人员只需要关注其所负责的功能模块所需要的数据库结构,并在其负责的功能模块内定义其所需要的数据库结构即可,系统增加或减少功能模块时,不需要考虑交织在一起的数据库结构定义的切割。从而降低了各功能模块之间的耦合,提高了代码的可维护性。
21.基于同样的发明构思,本发明实施例还提供了一种数据库结构的生成装置,该装置包括:读取模块,用于读取各功能模块中的数据库结构定义代码文件;解析模块,用于解析所述数据库结构定义代码文件,提取并解析其中的数据库结构定义;合并模块,用于合并各功能模块中所述解析出的数据库结构定义,并将最终的数据库结构定义提交至数据库管理程序。
22.可选地,所述读取模块,包括:功能模块遍历子模块,用于遍历读取系统中所有需要加载的功能模块;数据库结构定义提取子模块,用于从所述功能模块遍历子模块所读取的功能模块中提取数据库结构定义部分。
23.可选地,所述解析模块,包括:数据库表解析子模块,用于从所述读取模块提取的数据库结构定义中解析出数据库表结构;数据库字段解析子模块,用于解析所述数据库表解析子模块解析出的数据库表结构,以生成所述数据库表中的数据库字段结构。
24.可选地,所述合并模块,包括:数据库字段合并子模块,用于合并所述解析模块从多个功能模块中解析出的数据库字段,以生成每个数据库字段最终的结构定义;数据库表合并子模块,用于合并所述解析模块从多个功能模块中解析出的数据库表结构,并使用所述数据库字段合并子模块生成的数据库字段最终结构定义作为所述数据库表结构中的数据字段结构;数据库模型生成子模块,用于将所述数据库表合并子模块合并生成的数据库表结构提交至数据库管理程序,生成数据库操作模型。
附图说明
25.为了更清楚地说明本发明实施例,下面将对实施例描述中所需要使用的附图作简单介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
26.图1是本发明实施例提供的数据库结构生成方法的逻辑示意图;图2是本发明实施例提供的数据库结构生成方法中数据库结构定义代码的结构示意图;图3是本发明实施例提供的数据库结构生成方法的流程示意图;图4是本发明实施例提供的数据库结构生成装置的结构示意图;图5是本发明实施例提供的数据库结构生成方法的功能模块结构示意图;图6是本发明实施例提供的数据库结构生成方法的具体数据库结构定义示意图;
图7是本发明实施例提供的数据库结构生成方法生成的数据库结构示意图。
具体实施方式
27.为使本发明实施例的目的、技术方案和优点更加清晰,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
28.图1是本发明实施例提供的数据库结构生成方法的逻辑示意图。该方法包括:101:读取每个功能模块中的数据库结构定义;102:解析所述数据库结构定义;103:合并每个功能模块中所述解析后的数据库结构定义并生成系统需要的所有数据库结构定义;104:提交所述合并生成的数据库结构定义给数据库管理程序。
29.图2是本发明实施例提供的数据库结构生成方法中数据库结构定义代码的结构示意图。包括:201,某模块中数据库结构定义代码;202,数据库表结构定义,每个功能模块中数据库结构定义代码内都可以有多个数据库表结构定义;203,数据字段结构定义,每个数据库表结构定义中,都可以有多个数据字段结构定义;204,扩展描述信息,每个数据库表结构定义中,都可以有任意条扩展描述信息。
30.进一步,任何功能模块内数据库结构定义代码中,数据库表结构定义都可以有0个或多个。
31.进一步,任何数据库表结构定义中,数据字段结构定义都可以有0个或多个。
32.进一步,任何数据库表结构定义中,扩展描述信息都可以有0个或多个。
33.基于图1给出的数据库结构生成方法的逻辑示意图与图2给出的数据库结构生成方法中数据库结构定义的代码结构示意图,可以理解,图3是本发明实施例提供的数据库结构生成方法的流程示意图,该方法包括:301,循环读取每个功能模块代码目录,并找到其中的数据库结构定义代码;302,循环读取数据库结构定义代码中每个数据库表结构定义;303,循环读取数据库表结构定义中每个数据字段的定义;304,判断所读取的数据字段是否为扩展描述信息;305,如果所读取的数据字段是扩展描述信息,则将其作为数据库表扩展信息附加于312解析出的数据库表结构定义中;306,如果所读取的数据字段不是扩展描述信息,则进而判断此数据字段的定义是否已经存在;307,如果此数据字段的定义已经存在,则使用当前读取到的此数据字段定义覆盖已经存在的此数据字段定义;308,如果此数据字段的定义并未存在,则解析此数据字段,并将此数据字段定义
加入到当前数据库表结构定义中;309,判断是否完成当前数据库表结构定义中所有数据字段的解析,如果没有,则返回303继续解析其他数据字段;310,如果当前数据库表结构定义中所有数据字段均已解析完成,进一步判断当前数据库表结构定义是否已经存在;311,如果当前数据库表结构定义已经存在,则合并当前得到的此数据库表结构定义和已经存在的此数据库表结构的定义;312,完成311中的合并操作后,或当前数据库表结构定义尚未存在,解析当前数据库表结构定义;313,判断是否已经完成所有数据库表结构定义的解析,如果没有,则返回302继续读取其他数据库表结构定义;314,如果已经完成当前模块中所有数据库表结构定义的解析,进一步判断是否已经完成所有模块中数据库结构定义的解析,如果没有,则返回301继续读取其他模块中数据库结构定义;315,完成所有模块中数据结构定义的解析后,提交完整的数据库结构定义至数据库管理程序,以生成数据模型,并结束处理工作。
34.其中,301和302及303,可以理解的是,数据库结构定义代码可以不存在,或数据库结构定义代码存在,但并未在其中定义任何数据库表结构,又或者数据库表结构定义存在,但并未在其中定义任何数据字段,此时本实施例的方法最终将不会解析出任何新的数据库表结构,而本实施例的方法仍然可以顺利执行,这样处理的益处是,从系统开发的最初阶段即可以部署本实施例的方法,使得系统开发的迭代过程中任何新数据库结构的定义都可以自动得到解析。
35.其中,304,具体的,扩展描述信息包括:数据索引信息;计算字段信息;也可以包括任何其他可用以扩展程序逻辑的附属信息。
36.其中,310和311需要说明的是,当多个功能模块定义了相同的数据库表结构时,采取的合并方式为:不重复的数据字段将合并被加入到数据库表结构中;重复出现相同的数据字段时,使用最后出现的一组定义作为此数据字段的最终定义。
37.为了使本领域技术人员更加清楚地理解本技术中的技术方案,以下结合一个示意性的基本应用场景,提供具体的实施流程:图5是本发明实施例提供的数据库结构生成方法的产品结构示意图,在本实施流程中,产品a中包括:功能a1和功能a2;功能a1中定义了数据库表t1和数据库表t2;功能a2中定义了数据库表t1和数据库表t3。
38.图6是本发明实施例提供的数据库结构生成方法的具体数据库结构定义示意图,其结构根据图5所示,产品a的功能模块划分,包括:功能模块a1,功能模块a2;功能模块a1又包括数据库表t1和数据库表t2;功能模块a2又包括数据库表t1和数据库表t3。
39.图7是本发明实施例提供的数据库结构生成方法生成的数据库结构示意图,包括数据库表t1、数据库表t2和数据库表t3。
40.基于图5和图6,数据库结构生成过程包括:读取模块a1中数据库结构定义,进而读取其数据库表结构定义,包括:数据库表t1
和数据库表t2;读取模块a1中数据库表t1的结构,进而读取其中数据字段定义,包括:整数字段f1;浮点数字段f2;字符串字段f3;嵌套数据字段f4;此时数据库表t1中的4个数据字段均尚未定义,因此将他们作为数据库表t1中数据字段的定义;读取模块a1中数据库表t2的结构,进而读取其中数据字段定义,包括:整数字段f6;浮点数字段f7;此时数据库表t2中的2个数据字段均尚未定义,因此将他们作为数据库表t2中数据字段的定义;此时模块a1中没有其他数据库表结构定义,因此完成此模块中数据结构的解析,并读取下一个模块;读取模块a2中数据库结构定义,进而读取其数据库表结构定义,包括:数据库表t1和数据库表t3;读取模块a2中数据库表t1的结构,进而读取其中数据字段定义,包括:字符串字段f1;整数字段f5;此时数据库表t1已经被定义,因此合并数据库表t1的定义,过程包括:字段f1重复定义,使用后出现的功能模块a2中的定义,即字符串字段f1作为字段f1的定义;字段f5没有重复定义,因此将其加入数据库表a1定义中;读取模块a2中数据库表t3的结构,进而读取其中数据字段定义,包括:字符串字段f6;整数字段f7;此时数据库表t3中的2个数据字段均尚未定义,因此将他们作为数据库表t3中数据字段的定义;此时没有其他模块需要处理,因此得到所有需要的数据库结构定义,包括:数据库表t1,其包括5个数据字段分别为:字符串字段f1;浮点数字段f2;字符串字段f3;嵌套数据字段f4;整数字段f5;数据库表t2,其包括2个数据字段分别为:整数字段f6;浮点数字段f7;数据库表t3,其包括2个数据字段分别为:字符串字段f8;整数字段f9。
41.需要说明的是,数据库表t1中,字段f1分别定义在模块a1中的数据库表t1中和模块a2中数据库表t1中,而此处假设模块的加载顺序为先a1后a2,因此字段f1的定义采用模块a2中的定义。
42.需要说明的是,此处模块a1和模块a2中对数据库表t1内数据字段f1数据类型的重复定义导致其数据类型的变化,只是示意性的,实际开发过程中应该根据需要做出是否需要重复定义的选择。
43.进一步,当需要为产品a创建新的功能a3,而功能a3也需要使用数据库表a1并为其添加新的数据字段时,只需要在模块a3相对应的代码中定义数据库表a1需要新增加的数据字段即可,开发人员不需要关心最终数据库结构的生成,也不需要修改任何已有代码。
44.进一步,当需要为产品a创建新的功能a4,而功能a4需要定义新的数据库表t4时,只需要在模块a4相对应的代码中定义数据库表a4以及其中的字段即可,开发人员不需要关心最终数据库结构的生成,也不需要了解其他模块是否需要数据库表t4。
45.进一步,当系统中不再需要已经开发完成的模块a2时,只需要将其代码移除,对应模块a2中对数据库表t1的扩展将自动移除,不会遗留任何不必要的数据库结构,也不会影响其他模块如a1对数据库表t1的正常使用。
46.可见,本实施例通过读取每个功能模块中数据库结构定义,自动合并生成数据库结构,增加了系统的可扩展性,提高了开发效率;同时通过解耦不同功能模块间数据库结构的定义,降低了功能模块间重用数据库结构的复杂度,降低了开发成本,减少了混乱。
47.本发明实施例还提供了一种数据库结构生成装置400,如图4所示,是本发明实施例提供的数据库结构生成装置的结构示意图,包括:401,读取模块,用于读取各功能模块中的数据库结构定义代码文件;402,解析模块,用于解析所述数据库结构定义代码文件,提取并解析其中的数据库结构;403,合并模块,用于合并各功能模块中所述解析出的数据库结构,并将最终的数据库结构定义提交至数据库管理程序。
48.作为优选的实施方式,读取模块,包括:功能模块遍历子模块,用于遍历读取系统中所有需要加载的功能模块;数据库结构定义提取子模块,用于从所述功能模块遍历子模块所读取的功能模块中提取数据库结构定义部分。
49.作为优选的实施方式,解析模块,包括:数据库表解析子模块,用于从所述读取模块提取的数据库结构定义中解析出数据库表结构;数据库字段解析子模块,用于解析从所述数据库表解析子模块解析出的数据库表结构,以生成数据库表中的数据库字段结构。
50.作为优选的实施方式,合并模块,包括:数据库字段合并子模块,用于合并所述解析模块从多个功能模块中解析出的数据库字段,以生成每个数据库字段最终的结构定义;数据库表合并子模块,用于合并所述解析模块从多个功能模块中解析出的数据库表结构,并使用所述数据库字段合并子模块合并生成的数据库字段最终结构定义作为所述数据库表结构中的数据字段结构;数据库模型生成子模块,用于将所述数据库表合并子模块合并生成的数据库表结构提交至数据库管理程序,生成数据库操作模型。
51.最后应说明的是:以上实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例记载的技术方案进行修改,或者对其中的部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例的技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献