关联数据的存储方法及装置与流程

文档序号:14396371阅读:213来源:国知局

本发明涉及数据处理技术领域,尤其是涉及到关联数据的存储方法及装置。



背景技术:

随着计算机与互联网的快速发展,各行各业每天都会产生上亿条数据,甚至更多,如何能够利用这些数据为企业的战略决策和后续发展提供数据支持在企业发展中起着至关重要的作用。对于拥有过亿用户以及大量商品的购物网站来说,在查找目标人群的过程中,需要参考大量的历史数据,例如,用户曾关注过的品牌、浏览过的商品、平均购买商品的价格、哪些商品收藏了没有购买或者买了有再次购买等用户历史行为数据。而这些历史数据以不同的属性分散在实体表的各种字段中,在进行数据查找时,需要将实体表的各个属性进行大量的关联操作,才能获取目标人群。

现有技术在将数据表的各个属性字段进行关联操作的过程中,每一步产生的关联结果都会用一张临时表进行保存,进而将生成的临时表与实体表存储至数据库中。然而,在数据较多的情况,涉及到的数据表中各个字段的关联操作也会随之增多,使得生成的临时表数量过多,占用存储资源,并且影像数据库的运行效率。



技术实现要素:

本发明实施例提供了关联数据的存储方法及装置,解决了相关技术中临时表占用存储空间的问题。

根据本发明实施例的一个方面,提供一种关联数据的存储方法,包括:获取需要关联操作的实体表,所述实体表中记录有不同的属性信息;根据用户发送的查询请求确定所述实体表中各个属性信息之间的关联关系,所述查询请求中携带有用户需要获取数据的查询条件;以所述用户需要获取数据的查询条件为查询字段,创建各个属性信息之间的关联关系的视图,并保存创建的视图。

进一步,所述根据用户发送的查询请求确定所述实体表中各个属性信息之间的关联关系包括:根据所述查询条件从所述实体表中筛选出需要关联的属性信息;以所述筛选出需要关联的属性信息为关系节点,确定各个属性信息之间的关联关系。

进一步,所述查询条件包括多个层级,各个层级内的查询条件之间具有关联关系,所述以所述筛选出需要关联的属性信息为关系节点,确定各个属性信息之间的关联关系包括:以各个层级的查询条件为关系节点,从所述实体表中筛选出各个层级需要关联的属性信息;根据各个层级需要关联的属性信息,建立各个属性信息之间的关联关系。

进一步,所述各个属性信息之间的关联关系为树形结构,所述以所述用户需要获取数据的查询条件为查询字段,创建各个属性信息之间的关联关系的视图包括:从所述用户需要获取数据的查询条件中提取出涉及各个属性信息之间的关联关系的查询字段;以所述查询字段为树形结构的关系节点,创建各个属性信息之间的关联关系的视图。

进一步,在所述以所述用户需要获取数据的查询条件为查询字段,创建各个属性信息之间的关联关系的视图,并保存创建的视图之后,所述方法还包括:接收用户发送的查询请求,根据所述视图中存储的查询字段从所述实体表中查找具有关联关系的查询结果数据。

根据本发明实施例的另一方面,提供一种关联数据的存储装置,包括:获取单元,用于获取需要关联操作的实体表,所述实体表中记录有不同的属性信息;确定单元,用于根据用户发送的查询请求确定所述实体表中各个属性信息之间的关联关系,所述查询请求中携带有用户需要获取数据的查询条件;创建单元,用于以所述用户需要获取数据的查询条件为查询字段,创建各个属性信息之间的关联关系的视图,并保存创建的视图。

进一步,所述确定单元包括:筛选模块,用于根据所述查询条件从所述实体表中筛选出需要关联的属性信息;确定模块,用于以所述筛选出需要关联的属性信息为关系节点,确定各个属性信息之间的关联关系。

进一步,所述查询条件包括多个层级,各个层级内的查询条件之间具有关联关系;所述确定模块,具体用于以各个层级的查询条件为关系节点,从所述实体表中筛选出各个层级需要关联的属性信息;所述确定模块,具体还用于根据各个层级需要关联的属性信息,建立各个属性信息之间的关联关系。

进一步,所述各个属性信息之间的关联关系为树形结构,所述创建单元包括:提取模块,用于从所述用户需要获取数据的查询条件中提取出涉及各个属性信息之间的关联关系的查询字段;创建模块,用于以所述查询字段为树形结构的关系节点,创建各个属性信息之间的关联关系的视图。

进一步,所述装置还包括:查找单元,用于接收用户发送的查询请求,根据所述视图中存储的查询字段从所述实体表中查找具有关联关系的查询结果数据。

通过本发明,以用户需要获取数据的查询条件为查询字段,创建各个属性信息之间的关联关系的视图,并保存创建的视图来替代实体表,减少了数据存储空间的占用,同时还保留了数据之间的关联关系。与现有技术中全部关联数据以实体表形式进行存储的关联数据的存储方法相比,本发明实施例利用关联数据中各个属性信息之间的关联关系作为关系节点,在保存基本的实体表的同时,舍去了实体表之间关联的临时表,保留了实体表之间关联关系的查询条件,通过以查询条件查询字段创建视图,通过视图来替代临时表,提高了数据的存储速度,保证了数据库的运行效率。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的关联数据的存储方法的流程图一;

图2是根据本发明实施例的关联数据的存储方法的流程图二

图3是根据本发明实施例的关联数据的存储装置的结构框图一;

图4是根据本发明实施例的关联数据的存储装置的结构框图二。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

在本实施例中提供了一种关联数据的存储方法,图1是根据本发明实施例的关联数据的存储方法的流程图一,如图1所示,该流程包括如下步骤:

步骤s101,获取需要关联操作的实体表;

其中,实体表为对应实际对象的表,记录有不同的属性信息,如用户名、用户年龄、用户性别等,需要说明的是,在创建数据表的时候,如果没有特殊的指明,所创建的数据表为实体表,数据表中是数据库中最重要的组成部分之一,例如,教学管理系统中,教学管理数据库中包含分别围绕特定主题的6个数据表,教师表、课程表、成绩表、班级表和授课表,用来管理教学过程中学生、教室、课程等信息。当然数据库中的各个独立的数据表通过建立关系被联系起来,如与教师a相关联的数据表有班级表,还有该班级的成绩表等。

对于本发明实施例,数据库中各个数据表均具有关联关系,为了避免数据输入错误,并能使数据库高效工作,数据表设计应该按照一定原则对信息进行分类,同时为确保数据表结构设计的合理性,通常保证一个表围绕一个主题,使数据表容易维护,例如,将教师基本信息保存在教师表中,如果这些信息保存在授课表中,则在删除某教师的授课信息时可能会连同教师基本信息一同删除。

本实施例中,通过获取需要关联操作的实体表,在需要将具有关联关系的实体表关联到一起时,可以基于数据库中存储的实体表进行后续操作,同时也方便后续从实体表中查找具有关联关系的数据。

步骤s102,根据用户发送的查询请求确定所述实体表中各个属性信息之间的关联关系;

其中,用户发送的查询请求为用户需要查询数据表中的数据,并且查询请求中携带有用户需要获取数据的查询条件,如用户需要查询性别属性信息为女性,并且年龄属性信息为80后的数据,或者用户需要查询购买属性信息为购买过格力电器,或者浏览属性信息为浏览过格力电器的数据,本发明对查询条件不进行限定,可以为单独的查询条件,如查询某个属性信息的数据,也可以为多个查询条件的结合,如查询符合多个属性信息交集的数据,或者查询符合多个属性信息并集的数据。

对于本发明实施例,各个属性信息之间的关联关系可以为一对一关联、一对多关联或者多对多关联,例如员工档案管理系统项目主要包括的实体表有基本信息表、部门表、项目组表、银行卡表,这些实体表中的各个属性信息之间的关联关系有:每个员工必然对应员工档案资料,属于一对一关系,每个员工可以有多个银行卡,但每个银行卡只可能属于一个员工,属于一对多的关系,每个员工可以同时在多个项目组,每个项目组同时有多个员工,属于多对多关系,在分析各个属性信息的关联关系后,才可以对具有关联关系的实体表进行关联操作。

在本发明实施例中,通过确定实体表中各个属性信息之间的关联关系,可以了解数据库中实体表之间数据的相互依赖和影响关系,进而方便用户进行数据查找。

步骤s103,以所述用户需要获取数据的查询条件为查询字段,创建各个属性信息之间的关联关系的视图,并保存创建的视图。

由于用户需要获取数据一般为从需要关联操作的实体表进行关联操作后所得到的查询数据,所以查询条件可以用来作为关联实体表的查询字段,例如,实体表1中记录有教师a对应学生编号的属性信息,实体表2记录有学生的信息,用户需要获取数据为教师对应学生信息,则将教师a对应学生信息作为查询字段,对于本发明实施例,不同的查询条件可以作为不同的查询字段,当然查询条件之间也可以具有上下级关系,进一步创建哥哥属性信息之间的关联关系的视图。

对于本发明实施例,利用各个属性信息之间的关联关系可以用来从数据库中查找相应的数据,现有技术中在查询相应数据时,会将具有关联关系的实体表进行关联操作,生成临时表后获取到用户需要查询的数据,而本发明实施例无需生成临时表,而是将需要关联操作的查询字段保存在视图中,在查询相应数据时,通过视图中存储的查询字段来从具有关联关系的数据中获取用户需要查询的数据。

本发明实施例提供的一种关联数据的存储方法,以用户需要获取数据的查询条件为查询字段,创建各个属性信息之间的关联关系的视图,并保存创建的视图来替代实体表,减少了数据存储空间的占用,同时还保留了数据之间的关联关系。与现有技术中全部关联数据以实体表形式进行存储的关联数据的存储方法相比,本发明实施例利用关联数据中各个属性信息之间的关联关系作为关系节点,在保存基本的实体表的同时,舍去了实体表之间关联的临时表,保留了实体表之间关联关系的查询条件,通过以查询条件查询字段创建视图,通过视图来替代临时表,提高了数据的存储速度,保证了数据库的运行效率。

图2是根据本发明实施例的关联数据的存储方法的流程图二,如图2所示,该流程包括如下步骤:

步骤s201,获取需要关联操作的实体表;

在数据库中,常常包括多个实体表,这些实体表之间也不是相互独立的,不同的实体表之间需要建立一种关联关系,例如,在关系型的家中,你与其他的成员一起存在这许多关系,你和你的母亲是有关系的,你只有一位母亲,但是你的母亲可能会有好几个孩子,你和你的兄弟姐们有关系,你可能有很多兄弟姐妹。有了关联关系才能将实体表之间的数据相互沟通,而在这个沟通过程中,就需要实体表中有一个属性信息作为标志,不同的记录对应的属性信息取值不能相同,也不能是空白的,通过这个属性信息中不同的值可以区别各条记录,就像我们区别不同的人,每个人都有名字,但它却不能作为主键,因为人名很容易出现重复,而身份证号是每个人都不同的,所以可以根据它来区别不同的人,数据库的表中作为主键的字段就要像人的身份证号一样,必须是每个记录的值都不同,这才能根据主键的值来确定不同的记录。

对于本发明实施例,在实际数据存储的过程中,存在多个实体表的关联关系,不可能在一个实体表中查询出用户所需要的数据,如果没有实体表之间的关联操作,则需要很多查询操作才能实现,例如,需要从a表中查询限制性条件来从b表中查询数据,需要对两个表进行查询操作,影响系统运行效率。

步骤s202,根据所述查询条件从所述实体表中筛选出需要关联的属性信息;

在设计关系型数据库时,最主要的一部分工作是将各个属性信息如何分配到具有关联关系的实体表中。一旦完成了对这些属性信息的分配,对于实体表之间的关联操作将依赖于需要关联的属性信息,通过需要关联的属性信息,就可以将需要关联操作的实体表通过某种有意义的方式联系在一起。例如,如果你不知道哪个用户下了订单,那么单独的订单信息是没有任何用处的。但是,你没有必要在同一个数据表中同时存储顾客和订单信息。你可以在两个关系数据表中分别存储顾客信息和订单信息,这样顾客信息和订单信息就相当于需要关联的属性信息,然后使用两个数据表之间的关联关系,可以同时查看数据表中每个订单以及其相关的客户信息。如果正规化的实体表是关系型数据库的基础的话,那么这些数据表之间的关联操作则是建立这些基础的基石。

对于本发明实施例,需要关联的属性信息相当于实体表进行关联操作的纽带,例如在实体表a中记录有学生的姓名和学号属性,实体表b中记录有学生的学号和成绩属性,这里的学号属性即为实体表a与实体表b之间需要关联的属性信息。

通过筛选出需要关联的属性信息,以需要关联的属性信息作为纽带进行实体表之间的关联操作,保证实体表之间的关联操作可以给用户带来很大的灵活性,有效的提高查询效率。

步骤s203,以所述筛选出需要关联的属性信息为关系节点,确定各个属性信息之间的关联关系;

由于需要关联的属性信息相当于两个实体表之间关联操作的纽带,进一步以筛选出需要关联的属性信息作为关系节点,确定属性信息之间的关联关系,例如表a中记录用户名以及用户近期的购买信息,表2记录用户名以及用户的基本信息,这里需要关联的属性信息为用户名,各个属性信息之间的关联关系为用户名与用户基本信息为一对一关系,用户名与用户近期的购买信息可以为一对一关系或者一对多关系,进一步通过用户名可以将用户的基本信息与用户近期的购买信息关联起来。

需要说明的是,上述各个属性信息之间的关联关系可以根据实际查询需求来确定,如查询需求为用户基本信息中的年龄属性与用户近期购买信息中的某一商品属性的交集,则上述各个属性信息之间的关联关系为年龄属性与某一商品属性交集的关联关系,如查询需求为用户基本信息中的年龄属性与用户近期购买信息中的购买a商品属性或用户近期浏览信息中浏览a商品属性的交集,则上述各个属性信息之间的关联关系为购买a商品属性与浏览a商品属性的并集,后与年龄属性交集的关联关系,本发明实施例对各个属性信息之间的关联关系不进行限定。

步骤s204,从所述用户需要获取数据的查询条件中提取出涉及各个属性信息之间的关联关系的查询字段;

其中,查询条件包括多个层级,各个层级内的查询条件之间具有关联关系,通常情况下不同层级的查询条件对应实体表中不同层次的属性信息,如产品产地的属性信息中有国家属性、省份属性以及城市属性,时间属性信息中有年属性、月属性以及日属性,高层级的属性信息对应的取值范围通常较少且有限,对应高层级的查询条件,如查询国家属性,国家属性中所包含的国家数量较少,低层级的属性信息对应的取值范围通常较多且无限,对应低层级的查询条件,如查询城市属性,城市属性中所包含的城市数量较多。

对于本发明实施例,涉及各个属性信息之间的关联关系的查询字段通常从查询条件中抽离的多个属性关键词,例如,查询条件为学生性别女、平均分数超过90,则提取出的查询字段为性别、女、平均分、90,当然对于涉及多层级的查询条件时,提取出的查询字段中还可能包括重复的属性关键词,本发明实施例对查询字段的形式不进行限定。

步骤s205,以所述查询字段为树形结构的关系节点,创建各个属性信息之间的关联关系的视图,并存储创建的视图;

对于本发明实施例,各个属性信息之间的关联关系可以为树形结构,每个叶子节点表示实体表中的一个属性信息,由于查询字段为涉及各个属性信息之间的关联关系的属性关键词,进一步以查询字段为树形结构的关系节点,创建各个属性信息之间的关联关系的视图,进而将各个属性之间的关联关系保存在视图中。

对于本发明实施例,通过创建视图将各个属性信息之间的关联关系进行保存的方式无需对属性信息进行计算,也无需保存关联操作后的临时表,省去了临时表占用的存储空间,仅仅将实体表中各个属性信息之间的关联关系以逻辑公式的形式进行保存。

步骤s206,接收用户发送的查询请求,根据所述视图中存储的查询字段从所述实体表中查找具有关联关系的查询结果数据。

对于本发明实施例,在创建各个属性信息之间的关联关系的视图之后,视图中存储了各个属性信息之间的关联关系,而并非直接存储关联操作后的临时表,所以在接收用户发送的查询请求后,可以直接根据创建的视图中存储的查询字段从实体表中查找具有关联关系的查询数据,从而大幅度提高数据查询效率。

例如,在实际对于一份用户为2亿的测试数据进行存储的过程中,包括4个实体表,13个属性信息,根据各个属性信息之间的关联关系将实体表进行关联操作后进行存储的方式,占用数据库的存储内存为21g,整体消耗时间为39分钟,而本发明实施例不对实体表进行关联操作存储,而是将各个属性信息之间的关联关系以视图形式进行存储,将中间关联操作的过程替代为视图,占用数据库的存储内存为0.3g,整体消耗时间为5分钟,大大的减少了数据库中内存占用,提高了数据存储效率。

对于本发明实施例,具体的应用场景可以如下所示,但不限于此,包括:获取需要关联的员工入职表1,包括属性信息有:员工编号、员工姓名、员工性别、员工的部门编号,需要关联的员工入职表2,包括属性信息有:员工的部门编号、部门名称,需要关联的属性信息为员工的部门编号,以员工的部门编号为关系节点,确定员工的部门编号与表1以及表2中各个属性信息的关联关系,并从用户需要获取数据的查询条件中提取出查询字段为员工编号、员工姓名、员工性别、员工的部门编号、部门名称,以查询字段为树形结构的关系节点,创建表1以及表2中各个属性信息之间的关联关系的视图,完成关联数据的存储。当接收到用户发送的部门名称为销售部门并且员工性别为女性的所有员工,进一步根据视图中存储的“部门名称”以及“员工性别”查询字段从实体表中查找部门名称属性信息为销售部门以及员工性别属性信息为性别女的数据,得到查询结果数据。

本发明实施例的另一种关联数据的存储方法,通过从用户需要获取数据的查询条件中提取出涉及各个属性信息之间的关联关系的查询字段,以查询字段为树形结构的关系节点,创建各个属性信息之间的关联关系的视图,并存储创建的视图,通过视图的方式保留了实体表之间关联关系的查询条件,减少了数据存储空间的占用,同时还保留了数据之间的关联关系。

图3是根据本发明实施例的关联数据的存储装置的结构框图一,如图3所示,该装置包括:

获取单元31,可以用于获取需要关联操作的实体表,所述实体表中记录有不同的属性信息;

确定单元32,可以用于根据用户发送的查询请求确定所述实体表中各个属性信息之间的关联关系,所述查询请求中携带有用户需要获取数据的查询条件;

创建单元33,可以用于以所述用户需要获取数据的查询条件为查询字段,创建各个属性信息之间的关联关系的视图,并保存创建的视图。

本发明实施例提供的一种关联数据的存储装置,以用户需要获取数据的查询条件为查询字段,创建各个属性信息之间的关联关系的视图,并保存创建的视图来替代实体表,减少了数据存储空间的占用,同时还保留了数据之间的关联关系。与现有技术中全部关联数据以实体表形式进行存储的关联数据的存储方法相比,本发明实施例利用关联数据中各个属性信息之间的关联关系作为关系节点,在保存基本的实体表的同时,舍去了实体表之间关联的临时表,保留了实体表之间关联关系的查询条件,通过以查询条件查询字段创建视图,通过视图来替代临时表,提高了数据的存储速度,保证了数据库的运行效率。

作为图3中所示关联数据的存储装置的进一步说明,图4是根据本发明实施例的关联数据的存储装置的结构框图二,如图4所示,该装置还包括:

查找单元34,可以用于接收用户发送的查询请求,根据所述视图中存储的查询字段从所述实体表中查找具有关联关系的查询结果数据。

进一步地,所述确定单元32包括:

筛选模块321,可以用于根据所述查询条件从所述实体表中筛选出需要关联的属性信息;

确定模块322,可以用于以所述筛选出需要关联的属性信息为关系节点,确定各个属性信息之间的关联关系。

进一步地,所述查询条件包括多个层级,各个层级内的查询条件之间具有关联关系;

所述确定模块322,具体可以用于以各个层级的查询条件为关系节点,从所述实体表中筛选出各个层级需要关联的属性信息;

所述确定模块322,具体还可以用于根据各个层级需要关联的属性信息,建立各个属性信息之间的关联关系。

进一步地,所述各个属性信息之间的关联关系为树形结构,所述创建单元33包括:

提取模块331,可以用于从所述用户需要获取数据的查询条件中提取出涉及各个属性信息之间的关联关系的查询字段;

创建模块332,可以用于以所述查询字段为树形结构的关系节点,创建各个属性信息之间的关联关系的视图。

本发明实施例提供的另一种关联数据的存储装置,通过从用户需要获取数据的查询条件中提取出涉及各个属性信息之间的关联关系的查询字段,以查询字段为树形结构的关系节点,创建各个属性信息之间的关联关系的视图,并存储创建的视图,通过视图的方式保留了实体表之间关联关系的查询条件,减少了数据存储空间的占用,同时还保留了数据之间的关联关系。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

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