数据库实体管理方法、装置、电子设备及存储介质与流程

文档序号:19385445发布日期:2019-12-11 00:54阅读:184来源:国知局
数据库实体管理方法、装置、电子设备及存储介质与流程

本申请涉及数据库技术领域,特别涉及数据库实体管理方法、装置、电子设备及存储介质。



背景技术:

数据库为存储电子文件的空间,用户可以对数据库中的数据进行新增、查询、更新、删除等操作。

相关技术中,数据库采用一张属性表,用于记录数据库实体的属性名称、属性值等信息。但是在采用上述数据库实体管理方式的情况下,当新增的数据库实体包括新的属性时通过增加新的行字段实现。但是上述数据库实体管理方法,需要调整数据库表的结构关系,频繁调整数据库表结构关系,影响数据库的稳定性。

因此,如何避免新增数据库实体属性对于数据库表结构的影响,提高数据库的稳定性是本领域技术人员目前需要解决的技术问题。



技术实现要素:

本申请的目的是提供一种数据库实体管理方法、装置、一种存储介质及一种电子设备,能够避免新增数据库实体属性对于数据库表结构的影响,提高数据库的稳定性。

为实现上述目的,本申请第一方面的第一种实施方式提供了一种数据库实体管理方法,包括:

当检测到实体创建信息时,根据所述实体创建信息确定第一数据库实体和第一实体属性,并在实体表中添加第一数据库实体对应的第一表列;

在属性名表中添加所述第一实体属性对应的第二表列,以便记录属性名称;

在属性值表中添加所述第一实体属性对应的第三表列,以便记录属性值;

建立所述第一表列、所述第二表列和所述第三表列的第一属性关联关系,以便当接收到所述第一数据库实体对应的属性查询请求时根据所述第一属性关联关系生成查询结果。

结合本申请第一方面的第一种实施方式,在本申请第一方面的第二种实施方式中,所述在属性名表中添加所述第一实体属性对应的第二表列包括:

确定所述第一实体属性对应的目标属性模板,根据所述目标属性模板在所述属性名表中添加所述第一实体属性对应的第二表列。

结合本申请第一方面的第二种实施方式,在本申请第一方面的第三种实施方式中,还包括:

在第一映射关系表添加第一目标关系,在第二映射关系表添加第二目标关系;

其中,所述第一目标关系为所述第二表列与第四表列的对应关系,所述第四表列为所述目标属性模板在属性模板表中对应的列,所述第二目标关系为所述第一表列与所述第四表列的对应关系。

结合本申请第一方面的第三种实施方式,在本申请第一方面的第四种实施方式中,所述属性名表中的列与所述属性模板表中的列的对应关系为多对一关系。

结合本申请第一方面的第二种实施方式,在本申请第一方面的第五种实施方式中,确定所述目标属性对应的目标属性模板包括:

判断所述属性模板表中是否包括所述目标属性对应的目标属性模板;

若否,则在用户界面上生成新属性添加提示;

当接收到新添加的属性名时,根据所述新添加的属性名生成所述目标属性模板。

结合本申请第一方面的第一种实施方式,在本申请第一方面的第六种实施方式中,还包括:

当接收到属性添加指令时,确定所述属性添加指令对应的第二数据库实体和第二实体属性;

根据所述第二实体属性分别在所述属性名表和所述属性值表中添加新的表列,以便记录所述第二数据库实体的新属性和新属性值;

根据所述新属性和所述新属性值更新第二属性关联关系,以便当接收到所述第二数据库实体对应的属性查询请求时根据所述第二属性关联关系生成查询结果。

结合本申请第一方面的第一种至第六种实施方式中任意一种实施方式,在本申请第一方面的第七种实施方式中,还包括:

在检测到实体创建信息之后,还包括:

利用强类型语言定义所述第一数据库实体的固定属性;

利用预设方式定义所述第一数据库实体的动态扩展属性;

其中,所述预设方式包括弱类型语言或键值对,所述第一实体属性包括所述固定属性和所述动态扩展属性。

为实现上述目的,本申请第二方面提供了一种数据库实体管理装置,该装置包括:

实体添加模块,用于当检测到实体创建信息时,根据所述实体创建信息确定第一数据库实体和第一实体属性,并在实体表中添加第一数据库实体对应的第一表列;

属性名称记录模块,用于在属性名表中添加所述第一实体属性对应的第二表列,以便记录属性名称;

属性值记录模块,用于在属性值表中添加所述第一实体属性对应的第三表列,以便记录属性值;

关联模块,用于建立所述第一表列、所述第二表列和所述第三表列的第一属性关联关系,以便当接收到所述第一数据库实体对应的属性查询请求时根据所述第一属性关联关系生成查询结果。

为实现上述目的,本申请第三方面提供了一种电子设备,包括:

处理器和存储器;

其中,所述处理器用于执行所述存储器中存储的程序;

所述存储器用于存储程序,所述程序至少用于:

当检测到实体创建信息时,根据所述实体创建信息确定第一数据库实体和第一实体属性,并在实体表中添加第一数据库实体对应的第一表列;

在属性名表中添加所述第一实体属性对应的第二表列,以便记录属性名称;

在属性值表中添加所述第一实体属性对应的第三表列,以便记录属性值;

建立所述第一表列、所述第二表列和所述第三表列的第一属性关联关系,以便当接收到所述第一数据库实体对应的属性查询请求时根据所述第一属性关联关系生成查询结果。

为实现上述目的,本申请第四方面提供了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上任一项所述数据库实体管理方法的步骤。

可见,本申请采用数据库表组的形式设置数据库实体的实体属性,数据库表组可以包括实体表、属性名表和属性值表。当检测到实体创建信息时,分别在实体表中为第一数据库实体建立第一表列,在属性名表中为第一实体属性建立第二表列,在属性值表中建立第三表列,使得创建新数据库实体时所有的属性信息都是以列的形式添加至表中,而不是新增行的字段,可以避免数据库实体添加带来的数据库表结构调整的问题。因此本申请能够避免新增数据库实体属性对于数据库表结构的影响,提高数据库的稳定性。本申请同时还提供了一种数据库实体管理装置、一种存储介质和一种电子设备,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例的一种数据库实体管理装置的一种组成架构示意图;

图2为本申请实施例的第一种数据库实体管理方法的流程示意图;

图3为本申请实施例的一种属性查询方法的流程图;

图4为本申请实施例的一种数据库表组更新方法的流程示意图

图5为本申请实施例的第二种数据库实体管理方法的流程示意图;

图6为本申请实施例的第三种数据库实体管理方法的流程示意图;

图7为本申请实施例的第四种数据库实体管理方法的流程示意图;

图8为本申请实施例的一种数据库的实体联系图;

图9为本申请实施例的一种数据库实体管理装置的结构示意图;

图10为本申请实施例一种电子设备的一种组成结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在一些数据库业务下,业务涉及的数据库实体由于业务调整操作需要进行属性调整。但是在使用强类型语言进行开发的数据库中,实体库属性固定,无法打破属性固定的约束。针对于相关技术存在的种种缺陷,本申请通过以下几个实施例提供新的数据库实体管理方案,能够达到避免强类型语言开发的数据库对于属性固定的约束,实现数据库实体属性的灵活调整的目的。

为了便于理解本申请的设备故障处理方法,下面对于本申请的数据库实体管理方法所适用的系统进行介绍。参见图1,其示出了本申请实施例的一种数据库实体管理装置的一种组成架构示意图。

如图1所示,本申请实施例提供的数据库实体管理装置系统包括:数据库服务器10、开发人员办公机20和web服务器30,数据库服务器10、开发人员办公机20和web服务器30之间通过网络实现通信连接。

其中,本实施例中的web服务器30为网站服务器,web服务器30在接收到用户发送的业务请求后,可以向浏览器等web客户端提供数据浏览和数据下载服务。数据库服务器10可以由计算机和数据库实体管理装置软件共同构成,数据库服务器可以为web服务器提供数据存储和传输服务。开发人员办公机20为用于管理并维护数据库服务器30的装置。用户可以通过开发人员办公机20开发数据库,采用强类型语言定义数据库实体的固定属性,采用弱类型语言或键值对定义数据库实体的动态属性。当接收到数据库实体调整指令时,能够对数据库实体的属性进行灵活调整。本实施例能够避免强类型语言开发的数据库对于属性固定的约束,实现数据库实体属性的灵活调整。

参见图2,其示出了本申请实施例的第一种数据库实体管理方法的流程示意图,本实施例的方法可以包括:

具体步骤可以包括:

s101,当检测到实体创建信息时,根据实体创建信息确定第一数据库实体和第一实体属性,并在实体表中添加第一数据库实体对应的第一表列;

其中,本实施例可以应用于关系型数据库,本步骤中提到的实体创建信息具体为用户下发的用于创建新的数据库实体的指令。数据库实体为数据库中的管理对象,实体可以为某类事物的集合,本实施例将每一类数据对象的个体称为实体。每个数据库实体可以具有任意数量个实体属性。实体属性的属性值是实体属性的具体化表示。

在检测到实体创建信息时,可以存在解析实体创建信息的操作,根据解析结果确定第一数据库实体和第一实体属性,第一数据库实体为需要新创建的数据库实体,第一实体属性为第一数据库实体的属性。本实施例不限定第一实体属性的数量,第一实体属性可以包括多个属性名称及每一属性名称对应的属性值。

本实施例中的数据库可以包括实体表,用于记录用户在数据库中创建的数据库实体。请见参见表1,表1展示了实际应用中一种实体表的设置方式。

表1实体表

当需要新增数据库实体时,可以新增一列信息,该列信息中实体id可以根据该列的位置自动生成,例如在表1中第六列的实体id可以为015,实体名称根据新建的数据库实体确定,例如当用户在数据库中创建关于学历信息的数据库实体时,可以在第六列的实体名称记录为学历信息。通过上述方式即可完成创建数据库实体时关于实体表的更新,由于上述过程没有新增行的字段,因此数据库表结构关系不发生变化。当然,表1示出的实体表为本实施例的一种可行的实施方式,可以根据实际应用场景设置实体表的具体格式。

s102,在属性名表中添加第一实体属性对应的第二表列,以便记录属性名称;

其中,在接收到实体创建信息时,说明数据库中已经创建第一数据库实体的,需要在数据库中更新第一数据库实体的实体属性。属性名表为用于记录第一数据库实体的属性名称的表,在本步骤中可以在属性名表中添加第二表列用于记录第一实体属性的属性名称。本实施例不限定第一实体属性包括的属性名称的数量,当存在多个属性名称时可以添加多个第二表列。继续表1中的例子进行说明,当地址信息中包括三个属性名称,分别为:国家、省市和街道,因此可以在属性名表中添加国家、省市和街道对应的第二表列,请参见表2:

表2属性名表

当需要添加属性名时,可以在属性名表中新增第二表列,第二表列中的属性名id可以根据第二表列的位置自动生成,例如表2的属性名id可以按照021、022、023、024、025……的顺序依次类推进行设置,当需要添加新的属性名时可以按照该顺序添加属性名id。作为一种可行的实施方式,属性名表中还可以除了属性名id和属性名的行字段外还可以包括表达式regex和使能状态enable的字段。其中,表达式regex用于限制属性名对应的属性值的字符长度,在表2对应的实施场景中,限制国家属性对应的属性值应小于或等于10个汉字,省市属性对应的属性值应小于或等于15个汉字,街道属性对应的属性值应小于或等于20个汉字。使能状态enable用于表示是否启用该属性名,当使能状态enable为1时表示启用该属性名,当使能状态enable为0时表示不启用该属性名。

可以理解的是,属性名表中用记录多个数据库实体的多个属性名。由于上述更新属性名表的过程没有新增行的字段,因此数据库表结构关系不发生变化。当然,表2示出的属性名表为本实施例的一种可行的实施方式,可以根据实际应用场景设置属性名表的具体格式。

s103,在属性值表中添加第一实体属性对应的第三表列,以便记录属性值;

其中,本步骤是对第一数据库实体的属性值进行设置的操作,本实施例不限定s102与s103的执行顺序。属性值表为用于记录属性名表中每一属性的值,可以通过在属性值表中添加第三表列,实现属性值的记录。继续以第一数据库实体“地址”包括国家、省市和街道三个属性为例,说明在属性值表中添加第三表列的操作,请参见表3:

表3属性值表

属性值表为用于记录每一项属性的值,当需要近路新的属性值时,可以在属性值表中新增任意数量列的第三表列,第三表列中的属性值id可以根据第三表列在属性值表中的位置自动生成,例如在表3的属性值id可以按照031、032、033、034、035……的顺序依次类推进行设置。结合表2和表3可知,属性名为021的属性“国家”对应属性值为“中国”,属性名为022的属性“省市”对应属性值为“上海”,属性名为023的属性“街道”对应属性值为“人民路”。可以理解的是,属性值表中可以记录一个数据库实体的任意数量个属性的值,也可以记录多个数据库实体的任意数量个属性的值,在此不进行限定。由于上述更新属性值表的过程没有新增行的字段,因此数据库表结构关系不发生变化。当然,表3示出的属性值表为本实施例的一种可行的实施方式,可以根据实际应用场景设置属性值表的具体格式。

s104,建立第一表列、第二表列和第三表列的第一属性关联关系,以便当接收到第一数据库实体对应的属性查询请求时根据第一属性关联关系生成查询结果。

其中,本步骤建立在已经在实体表中记录实体名称、在属性名表中记录属性名称并在属性值表中记录属性值的基础上,建立第一表列、第二表列和第三表列的第一属性关联关系。例如,建立表1的第一表列、表2的第二表列和表3的第三表列的第一属性关联关系可知地址信息包括国家、省市和街道三个属性,国家属性对应的属性值为中国,省市属性对应的属性为上海,街道属性对应的属性值为人民路。

作为一种可行的实施方式,在属性值表中可以包括用于记录第一属性关联关系的行字段,请参见表4:

表4优化后的属性值表

属性值表中可以包括实体id和属性名id,属于同一列的实体、属性和属性值相对应,以便记录第一属性关联关系。通过表4可知,实体id为011的数据库实体包括属性名id分别为021、022和023三种属性,021对应的属性值为中国,022对应的属性值为上海,023对应的属性值为人民路。

在创建第一数据库实体之后,接收到第一数据库实体对应的属性查询请求时,可以根据构建的第一属性关联关系生成查询结果。具体的,请参见图3,其示出了本申请实施例的一种属性查询方法的流程图,具体可以包括以下步骤:

s201,当接收到属性查询请求时,解析属性查询请求,并根据解析结果确定实体id;

s202,从实体表中查询实体id所在的第一表列;

s203,根据第一属性关联关系确定第一表列对应的第二表列和第三表列;

s204,分别确定第二表列中记录的属性名和第三表列中记录的属性值;

s205,根据属性名和属性值生成属性查询请求对应的查询结果。

当然,本实施例中属性名表或实体表中也可以包括用于记录第一属性关联关系的行字段,也可以在开发数据库时单独创建用于存储第一属性关关系的表,在此不进行限定。

可见,本实施例采用数据库表组的形式设置数据库实体的实体属性,数据库表组可以包括实体表、属性名表和属性值表。当检测到实体创建信息时,分别在实体表中为第一数据库实体建立第一表列,在属性名表中为第一实体属性建立第二表列,在属性值表中建立第三表列,使得创建新数据库实体时所有的属性信息都是以列的形式添加至表中,而不是新增行的字段,可以避免数据库实体添加带来的数据库表结构调整的问题。因此本申请能够避免新增数据库实体属性对于数据库表结构的影响,提高数据库的稳定性。

作为对于图2对应实施例的进一步补充,在检测到实体创建信息之后且在确定第一实体属性之前,还可以包括以下操作:利用强类型语言定义第一数据库实体的固定属性;利用预设方式定义第一数据库实体的动态扩展属性;其中,预设方式包括弱类型语言或键值对,第一实体属性包括固定属性和动态扩展属性。

强类型语言又称为强类型定义语言,属于一种强制类型定义的语言,强类型语言要求变量的使用要严格符合定义,所有变量都必须先定义后使用。强类型语言可以包括java、python或c/c++。利用强类型语言定义数据库实体的固定属性,能够提高数据库的可靠性。

上述提到的预设方式可以包括利用弱类型语言定义数据库实体的动态扩展属性,还可以包括利用键值对定义数据库实体的动态扩展属性,键值对包括属性名和属性值。本实施例可以采用上述任意一种预设方式定于数据库实体的动态扩展属性。当使用键值对定义动态扩展属性时,能够屏蔽语言差异,所有高级语言均可实现。当使用弱类型语言定义动态扩展属性时,属性引用可通过ide(integrateddevelopmentenvironment,集成开发环境)提示编写。

数据库实体的属性包括固定属性和动态扩展属性,本实施例通过弱类型语言或键值对定义动态扩展属性可以允许类型隐式转换,可以打破强类型语言对于属性固定的约束,实现数据库属性的更改。在定义数据库实体的属性之后,可以根据定义属性后的固定属性和动态扩展属性更新数据库表组。数据库表组中可以包括多张表,作为一种可行的实施方式,数据库表组中包括属性名表、属性值表和实体表,进一步的,数据库表组还可以包括属性模板表、第一映射表和第二映射表,第一映射表为用于记录属性名和属性模板映射关系的表,第二映射表为用于记录数据库实体与数据模板映射关系的表。

上述方式采用强类型语言定义数据库实体的固定属性,采用弱类型语言或键值对定义数据库实体的动态属性。采用强类型语言定义固定属性可以保证数据库的可靠性,采用弱类型语言或键值对定义动态属性可以实现灵活调整数据库实体属性,本申请能够避免强类型语言开发的数据库对于属性固定的约束,实现数据库实体属性的灵活调整。

参见图4,其示出了本申请实施例的一种数据库表组更新方法的流程示意图,可以将本实施例与图2对应的实施例相结合得到更为优选的实施方式,本实施例可以包括以下步骤:

s301,确定第一实体属性对应的目标属性模板。

其中,本实施例中可以与实现设置属性模板,属性模板中可以存储有特定类型实体对应的属性,本实施例中可以设置任意数量中属性模板以便根据属性模板在属性名表中添加第二表列。作为一种可行的实施方式,本实施例可以根据第一数据库实体的实体id确定对应的目标属性模板。例如当第一数据库实体为评价信息时,其对应的目标属性模板可以为包括文本评价、图片评价和视频评价三个属性的属性模板;当第一数据库实体为时间信息时,其对应的目标属性模板可以为包括年、月、日、时、分和秒六个属性的属性模板;当第一数据库实体为分类信息时,其对应的目标属性模板可以为包括电影名称、电视剧名称、动漫名称、广播剧名称四个属性的属性模板。

作为一种可能的情况,当预先设置的属性模板中不存在与第一实体属性对应的目标属性模板时,本实施例可以创建目标属性模板并进行保存,具体过程可以包括以下步骤:

步骤1,判断属性模板表中是否包括目标属性对应的目标属性模板;若是,则直接确定目标属性模板;若否,则进入步骤2;

步骤2,在用户界面上生成新属性添加提示;

步骤3,当接收到新添加的属性名时,根据新添加的属性名生成目标属性模板。

在上述生成目标属性模板的过程中,新属性添加提示用于提示用户输入第一数据库实体的属性名。用户可以输入任意数量个第一数据库实体的属性名,即输入新添加的属性名。在接收到新添加的属性名时,可以根据新添加的属性名生成目标属性模板。作为一种可行的实施方式,在生成目标属性模板之后,可以存储新创建的目标属性模板,以便在后续数据库实体创建过程中继续使用。

s302,根据目标属性模板在属性名表中添加第一实体属性对应的第二表列。

其中,本步骤建立在已经确定目标属性模板的基础上,根据目标属性模板包括的属性吗,可以在属性名表中添加第一实体属性对应的第二表列,以便记录第一数据库实体对应的属性名。

作为对于图4对应实施例的进一步补充,本实施例的数据库中还可以包括属性模板表,请参见表5:

表5属性模板表

每一种属性模板都可以记录在属性模板表的第四表列中,当创建新属性模板时,可以在属性模板表中添加新的第四表列以便记录新属性模板的模板id和模板名称。属性模板表中的enable代表是否启用对应列的属性模板,1代表启动,2代表不启用。

进一步的,本实施例中还可以包括第一映射关系表和第二映射关系表。因此在向属性名表中添加第二表列之后,本实施例还可以在第一映射关系表添加第一目标关系,第一目标关系为第二表列与第四表列的对应关系,第四表列为目标属性模板在属性模板表中对应的列。在向属性名表中添加第二表列之后,本实施例还可以在第二映射关系表添加第二目标关系,第二目标关系为第一表列与第四表列的对应关系。通过上述方法,能够实现根据第一映射关系表查询属性与属性模板的对应关系,也能够实现根据第二映射关系表查询实体与属性模板的对应关系。

作为一种可行的实施方式,在确定第一实体属性对应的目标属性模板时,目标属性模板的数量可以为1,以便属性名表中的列与属性模板表中的列的对应关系为多对一关系或一对一关系。当属性名表中的列与属性模板表中的列的对应关系为多对一关系或一对一关系时,能够提高数据库表组的稳定性,可以避免若一个属性名表中的列与多个属性模板表中的列存在耦合关系,属性定义改变带来的模板拆分的问题。基于相同的理由,实体表中的列与属性模板表中的列的对应关系可以为多对一关系或一对一关系。

参见图5,其示出了本申请实施例的第二种数据库实体管理方法的流程示意图,本实施例提供了为已有数据库实体添加属性的实施方法,本实施例可以包括以下步骤:

s401,当接收到属性添加指令时,确定属性添加指令对应的第二数据库实体和第二实体属性;

s402,根据第二实体属性分别在属性名表和属性值表中添加新的表列,以便记录第二数据库实体的新属性和新属性值;

s403,根据新属性和新属性值更新第二属性关联关系,以便当接收到第二数据库实体对应的属性查询请求时根据第二属性关联关系生成查询结果。

上述实施例在接收到属性添加指令时,可以先通过解析属性添加指令的方式确定需要添加属性的第二数据库实体和需要添加的第二实体属性。本实施例可以在属性名表和属性值表中添加相应的第二表列和第三表列,以便记录第二实体属性对应的新属性和新属性值。s402中添加表列的操作与图2对应的实施例中s202和s203基本一致,可以相互参见,在此不再赘述。

可以理解的是,第二数据库实体可以经历过图2对应实施例的相应操作,因此可以存在与第二数据库实体对应的第二属性关联关系。在执行s402之后可以更新第二属性关联关系。当接收到第二数据库实体对应的属性查询请求时,可以根据更新后的第二属性关联关系生成查询结果。

参见图6,其示出了本申请实施例的第三种数据库实体管理方法的流程示意图,本实施例提供了为已有数据库实体删除属性的实施方法,本实施例可以包括以下步骤:

s501,当接收到属性删除指令时,确定属性添加指令对应的第三实体属性;

s502,在属性名表和属性值表中删除第三实体属性对应的表列,以便删除第三实体属性对应的属性名和属性值;

s503,根据删除表列后的属性名表和属性值表更新第三属性关联关系,以便当接收到第三数据库实体对应的属性查询请求时根据第三属性关联关系生成查询结果。

上述实施例在接收到属性删除指令时,可以先通过解析属性删除指令的方式确定需要删除的第三实体属性。本实施例可以在属性名表和属性值表中删除相应的第二表列和第三表列,以便删除第三实体属性对应的新属性和新属性值。

可以理解的是,第三数据库实体可以经历过图2对应实施例的相应操作,因此可以存在与第三数据库实体对应的第三属性关联关系。在执行s502之后可以更新第三属性关联关系。当接收到第三数据库实体对应的属性查询请求时,可以根据更新后的第三属性关联关系生成查询结果。

参见图7,其示出了本申请实施例的第四种数据库实体管理方法的流程示意图,本实施例提供了为已有数据库实体修改属性的实施方法,本实施例可以包括以下步骤:

s601,当接收到属性修改指令时,确定属性修改指令对应的第四实体属性;

s602,在属性名表和属性值表中修改第四实体属性对应的表列,以便修改第四实体属性对应的属性名和/或属性值;

s603,根据修改表列后的属性名表和/或属性值表更新第四属性关联关系,以便当接收到第四数据库实体对应的属性查询请求时根据第四属性关联关系生成查询结果。

上述实施例在接收到属性修改指令时,可以先通过解析属性修改指令的方式确定需要删除的第四实体属性。本实施例可以在属性名表和属性值表中删除相应的第二表列和第三表列,以便修改第四实体属性对应的属性和/或属性值。

可以理解的是,第四数据库实体可以经历过图2对应实施例的相应操作,因此可以存在与第四数据库实体对应的第四属性关联关系。在执行s502之后可以更新第四属性关联关系。当接收到第四数据库实体对应的属性查询请求时,可以根据更新后的第四属性关联关系生成查询结果。

下面通过在实际应用中的一种关系型数据库说明上述实施例描述的流程。请参见图8,其示出了本申请实施例的一种数据库的实体联系图,实体联系图,又称e-r(entityrelationshipdiagram)图。

本实施例中,可以基于强类型语言开发数据库,数据库实体和数据库列规则可以为一一对应关系。具体的,可以采用以下两种方案实现数据库实体属性的定义:

方案一:通用强类型对象加属性名和属性值组成的键值对属组完成属性组合,即:将固定属性放强类型里面,动态类型放键值对里面。

方案二:通过强类型对象加弱类型对象完成属性组合,即:将固定属性放强类型里面,动态扩展属性放弱类型里面。

其中,方案一能够屏蔽语言差异,所有高级语言均可实现。方案二可以动态对象属性,动态拓展。更贴切与代码设计风格,属性引用可通过ide提示编写。

本实施例中,数据库可以包括属性名表、属性值表、属性模板表、实体表、数据模板表与属性名表映射关系表(即第一映射表)、数据模板表与实体表映射关系表(即第二映射表)。

属性名表用于存储拓展属性字段,属性名表的列属性包括:自增id标识、属性名称、是否启用和入库正则。入库正则的作用为判断对应属性的属性值入库限制,最基础的限制方式是通过正则表达式,若业务复杂或其他特殊要求,可将字段拆分为两个,分表为验证方式/验证规则。不同字段值既可以采用正则方式验证,也可以拓展其他方式如配置文件方式验证。

属性模板表存储多个属性组合关系的定义,属性模板表列属性的包括自增id,模板名称和是否启用。

数据模板表与属性名表映射关系表,用于实现属性模板与属性关联关系,数据模板表与属性名表映射关系表的列属性包括自增id、属性名id、属性模板id和是否启用作为一种更可行的实施方式,在数据模板表与属性名表映射关系表中,属性模板和属性名表可以设置为一对多的关系。当一个属性存在多个模板当,与多个模板存在耦合关系。当属性定义发生变化时,是否还能满足两个模板的定义。如果不满足,拆分属性还是重新当前属性的改动,对整个属性模板的关联关系的调整复杂度是未知的,一个属性存在多个模板里面。属性的调整引发的后果非常严重。操作人员可能因为对其他模板的疏忽,都有可能对已有属性的修改出现不合理的情况,概率很大,且维护和理解成本较大。因此本实施例使属性和属性模板保持多对一的树状结构,便于维护和理解。

实体表用于存储当前业务的实体数据和原始的无拓展属性数据存储结构,实体表可以根据系统业务定义不同的列属性。

属性模板表与实体表映射关系表,用于关联实体与数据模板的关联关系,还用于关联实体与数据模板关联关系。属性模板表与实体表映射关系表的列属性包括自增id标识、属性模板id和实体类型标识。作为一种可行的实施方式,在属性模板表与实体表映射关系表中,属性模板表和属性名表可以设置为一对多的关系或者一对一的关系,论证原因如数据模板表与属性名表映射关系表的相关描述相同。

属性值表用于存储实体拓展属性的属性值,属性值表的列属性可以包括自增id标识、属性模板id、属性名id、属性值、实体类型标识和实体id。属性值表的列可以存在一定冗余情况,以便实现跨表查询及对多对多关系存在的理论结构进行支持。

本实施例通本方案基于属性名称可拓展方式设计,对单个属性的属性数据分析存在优势,对动态属性数据分析无需任何调整,使得数据库的数据结构强一致。

下面通过一个更具体的实施例说明图8对应的数据库的实体属性管理方法,例如当前业务为:数据库中需要存user用户信息表需要存一个地址信息,国家为中国,省为深圳,区为南山。具体执行步骤如下:

步骤1,向属性模板表(propertygroup)添加name为address的一条记录,往property表格里面添加name为address的模板,enable控制当前模板是否需要启用,id为自增标识,假设id=3。

步骤2,向属性名表(propertyname)里面添加三个记录,分别name为country,state,district。regex字段控制当前字段对应录入值格式的限制(例如country只允许1到9位数字,regex则为^\d{1,9}$),所存值放在属性值表里面。

步骤3,向属性/属性模板映射表(property_mapping)表里面关联属性与属性组字段。address属性组关联三个属性country,state,district。

步骤4,向属性值表(propertyvalue)中插入三条记录,id为自增id,propertygroupid关联当前记录所属的属性组,propertynameid关联当前记录所属的属性值,value为当前属性值,本实例有“中国”,“深圳”,“南山”。entitytype和objectid用关联对应的实体表,当前实体表为用户表(user)。则entitytype为1标识对应的是user表,objectid对应用户表具体的记录id.

步骤5,生成一条记录id自增,propertygroupid为属性组记录的id,entitytype表示关联的是user表,以便通过实体/属性模板关联表管理实体表关联的多个属性组。

请参见图9,其示出了本申请实施例的一种数据库实体管理装置的结构示意图;

该装置可以包括:

实体添加模块100,用于当检测到实体创建信息时,根据实体创建信息确定第一数据库实体和第一实体属性,并在实体表中添加第一数据库实体对应的第一表列;

属性名称记录模块200,用于在属性名表中添加第一实体属性对应的第二表列,以便记录属性名称;

属性值记录模块300,用于在属性值表中添加第一实体属性对应的第三表列,以便记录属性值;

关联模块400,用于建立第一表列、第二表列和第三表列的第一属性关联关系,以便当接收到第一数据库实体对应的属性查询请求时根据第一属性关联关系生成查询结果。

可见,本实施例采用数据库表组的形式设置数据库实体的实体属性,数据库表组可以包括实体表、属性名表和属性值表。当检测到实体创建信息时,分别在实体表中为第一数据库实体建立第一表列,在属性名表中为第一实体属性建立第二表列,在属性值表中建立第三表列,使得创建新数据库实体时所有的属性信息都是以列的形式添加至表中,而不是新增行的字段,可以避免数据库实体添加带来的数据库表结构调整的问题。因此本申请能够避免新增数据库实体属性对于数据库表结构的影响,提高数据库的稳定性。

进一步的,属性名称记录模块200包括:

模块确定单元,用于确定第一实体属性对应的目标属性模板;

记录单元,用于根据目标属性模板在属性名表中添加第一实体属性对应的第二表列的模块,以便记录属性名称。

进一步的,还包括:

映射添加模块,用于在第一映射关系表添加第一目标关系,在第二映射关系表添加第二目标关系;

其中,第一目标关系为第二表列与第四表列的对应关系,第四表列为目标属性模板在属性模板表中对应的列,第二目标关系为第一表列与第四表列的对应关系。

进一步的,属性名表中的列与属性模板表中的列的对应关系为多对一关系。

进一步的,模块确定单元包括:

判断子单元,用于判断属性模板表中是否包括目标属性对应的目标属性模板;

模板创建子单元,用于当属性模板表中不包括目标属性对应的目标属性模板时,创建目标属性对应的目标属性模板。

进一步的,还包括:

实体确定模块,用于当接收到属性添加指令时,确定属性添加指令对应的第二数据库实体和第二实体属性;

属性添加模块,用于根据第二实体属性分别在属性名表和属性值表中添加新的表列,以便记录第二数据库实体的新属性和新属性值;

关联更新模块,用于根据新属性和新属性值更新第二属性关联关系,以便当接收到第二数据库实体对应的属性查询请求时根据第二属性关联关系生成查询结果。

进一步的,还包括:

属性定义模块,用于在检测到实体创建信息之后,利用强类型语言定义第一数据库实体的固定属性,还用于利用预设方式定义第一数据库实体的动态扩展属性;

其中,所述预设方式包括弱类型语言或键值对,所述第一实体属性包括所述固定属性和所述动态扩展属性。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

另一方面,本申请还提供了一种电子设备,如参见图8,其示出了本申请实施例一种电子设备的一种组成结构示意图,本实施例的电子设备2100可以包括:处理器2101和存储器2102。

可选的,该电子设备还可以包括通信接口2103、输入单元2104和显示器2105和通信总线2106。

处理器2101、存储器2102、通信接口2103、输入单元2104、显示器2105、均通过通信总线2106完成相互间的通信。

在本申请实施例中,该处理器2101,可以为中央处理器(centralprocessingunit,cpu),特定应用集成电路,数字信号处理器、现成可编程门阵列或者其他可编程逻辑器件等。

该处理器可以调用存储器2102中存储的程序。具体的,处理器可以执行以下数据库实体管理方法的实施例中电子设备侧所执行的操作。

存储器2102中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令,在本申请实施例中,该存储器中至少存储有用于实现以下功能的程序:

当检测到实体创建信息时,根据所述实体创建信息确定第一数据库实体和第一实体属性,并在实体表中添加第一数据库实体对应的第一表列;

在属性名表中添加所述第一实体属性对应的第二表列,以便记录属性名称;

在属性值表中添加所述第一实体属性对应的第三表列,以便记录属性值;

建立所述第一表列、所述第二表列和所述第三表列的第一属性关联关系,以便当接收到所述第一数据库实体对应的属性查询请求时根据所述第一属性关联关系生成查询结果。

在一种可能的实现方式中,该存储器2102可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、以及至少一个功能(比如话题检测功能等)所需的应用程序等;存储数据区可存储根据计算机的使用过程中所创建的数据。

此外,存储器2102可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。

该通信接口2103可以为通信模块的接口,如gsm模块的接口。

本申请还可以包括显示器2104和输入单元2105等等。

图10示出了本申请实施例一种电子设备的一种组成结构示意图,当然,图10所示的电子设备的结构并不构成对本申请实施例中电子设备的限定,在实际应用中电子设备可以包括比图10所示的更多或更少的部件,或者组合某些部件。

另一方面,本申请实施例还提供了一种存储介质,该存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,用于实现如上任意一个实施例中所描述的数据库实体管理方法。

在一些实施例中,上述电子设备可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(p2p,peertopeer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1