CN102402626A - 版本继承数据的动态查询系统和方法 - Google Patents
版本继承数据的动态查询系统和方法 Download PDFInfo
- Publication number
- CN102402626A CN102402626A CN2011104487569A CN201110448756A CN102402626A CN 102402626 A CN102402626 A CN 102402626A CN 2011104487569 A CN2011104487569 A CN 2011104487569A CN 201110448756 A CN201110448756 A CN 201110448756A CN 102402626 A CN102402626 A CN 102402626A
- Authority
- CN
- China
- Prior art keywords
- data
- type
- version
- base view
- parent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种版本继承数据的动态查询系统和方法,该系统包括:类型创建单元,根据多个数据对象的版本继承关系,将多个数据对象进行分类,生成多个数据类型;数据库创建单元,为每个数据类型的数据对象生成对应的数据库表,其中包含数据对象的版本数据;数据库视图创建单元,根据版本继承关系,生成数据库视图;实时处理单元,在数据对象被编辑时,将对应的数据库表进行实时更改,以实时更改对应的数据库视图;以及查询单元,生成对应于数据库视图的查询语句,并通过运行查询语句获取对应的数据对象。通过本发明的技术方案,可以有效地改进有父子关系类型的数据查询性能,降低开发人员对查询进行的SQL字符串程序编写难度。
Description
技术领域
本发明涉及数据存储和查询技术领域,具体而言,涉及一种版本继承数据的动态查询系统和方法。
背景技术
本发明面向设计和制造的相关企业和设计单位,当我们谈到数据模型时,大家很自然的联想到模型数据和数据表,通常的数据模型是将现实的数据抽象为对象,对象分类后归纳为类型,类型的存储通常是数据表,制造业的数据主要是产品结构、零件、文档、工艺信息等,经研究和分析后发现零件、文档、文件对象是基础和最小单元,这三类对象都有两类特性,版本和状态,其中在状态的范围里生命周期状态是基础,我们通常建立两个维度,第一个维度是版本维度,第二个维度是生命周期状态维度,这三类对象可抽象为一种类型,这种类型的适用分类树的方式进行组织,类型之间支持继承关系。
继承举例:
我们通常将生活在某个省的人叫省名+人,例如:湖南人、河北人等,为什么这么叫,其实大家很容易发现,某地的人有很多相同的特性,例如:方言、饮食等,这种大类加小类的方法很容易形成继承关系的类型组合,一个人我们可以从国家的分类叫他某国人,从地区可以叫他某地人,这样一个人就可以这样定位了,中国.河北石家庄人。
当前数据模型中类型的继承关系定义基本相同,包括类型主体和属性集两部分,数据存储的方式种类比较多,本发明主要针对的方式是:类型和属性一一对应于数据表和字段的存储方式。
在这种存储方式中,类型名称和数据表名存在映射关系,类型和数据表的数量关系是1:1,类型属性和数据字段之间存在映射关系,它们之间的数量关系是1:1,类型属性和数据表字段的数据类型存在如下对应关系:
字符串型对应varchar;
数字型对应number(n);
小数型对应number(n,n);
日期型对应datetime;
时间型对应datatime;
大文本型对应clob;
图像型对象blob。
然而对于这种存储方式,在查询父子关系的相关数据时,需要对数据表进行逐一查询,汇总后才能得到全部的数据。
另外,对于版本数据,目前国际通用的版本机制是二级版本机制,即
无版本情况;
一级版本情况;
二级版本情况;
版本实例通常由三种基础单元组成:
主单元;
版本单元;
版次单元;
版本实例和基础单元之间的关系如下:
无版本:只有主单元,没有版本单元和版次单元;
一级版本:有主单元和版本单元;
二级版本:有主单元、版本单元、版次单元;
通过系统抽象为类型,包含下列类型:
无版本类型;
一级版本类型;
二级版本类型;
版本数据有如下特征属性:
主标识;
版本标识;
版本号;
当前版本号;
版次标识;
版次号;
当前版次号;
三种版本情况,主体、版本、版次分别赋予唯一标识,不同情况下这三者间的变化如下:
如图1所示,在无版本的情况,此时一个对象一个主体,一个主体对应一个版本,一个版本对应一个版次,对外版本和版次信息不显示。
如图2所示,是一级版本的情况,此时一级版本机制主体唯一,主体和版本的关系是一对多,版本和版次的关系是一对一。
如图3所示,在二级版本的情况,此时的二级版本机制中,主体唯一,主体和版本的关系是一对多,版本和版次的关系是一对多。
无论对象为何种版本机制,类型对应的数据表分为主体数据、版本数据、版次数据三部分,必须有如下字段:
版本数据中包含当前版本号
主体数据包含最新版本号;
版次数据包含当前版次号;
版本数据包含最新版次号;
版本实例是由三部分组成:
主体master;
版本revision;
版次version;
主体master中包含主体标识和最新版本号属性;
版本revision中包括版本标识和最新版次号属性;
在version中的AttrValue是一个哈希表,它存储着属性名和值的信息,orgAttrValue也是一个哈希表,初始加载时为空,当用户改变了某个属性值时,对象工厂将原始的属性名和值复制到orgAttrValue中,而且只复制一次,然后将AttrValue中的属性值改变,用户多次改变同一个属性值时,只改变AttrValue中的值;
相关技术中,问题主要在二级版本的动态查询数据上,不同的用户对数据查询有不同的需求,大体分为如下几类:
1)获取二级版本的所有版本的所有版次的数据(AllRevisionAllVersion);
2)获取二级版本的指定版本的所有版次的数据(CurrentRevisionAllVersion);
3)获取二级版本的指定版本的最新版次的数据(CurrentRevisionLastestVersion);
4)获取二级版本的指定版本的制定版次的数据(CurrentRevisionCurrentVersion);
5)获取二级版本的最新版本的最新版次的数据(LastestRevisionLastestVersion)。
因此,需要一种新的版本继承数据的动态查询技术,可以有效地改进有父子关系类型的数据查询性能,降低开发人员对查询进行的SQL字符串程序编写难度。
发明内容
本发明正是基于上述问题,提出了一种新的版本继承数据的动态查询技术,可以有效地改进有父子关系类型的数据查询性能,降低开发人员对查询进行的SQL字符串程序编写难度。
有鉴于此,本发明提出了一种版本继承数据的动态查询系统,包括:类型创建单元,根据多个数据对象的版本继承关系,将所述多个数据对象进行分类,并生成对应的多个数据类型;数据库创建单元,为每个数据类型的数据对象生成对应的数据库表,其中,所述数据库表中包含所述数据对象的版本数据;数据库视图创建单元,根据所述版本继承关系,生成对应于每个所述数据库表的数据库视图;实时处理单元,在数据对象被编辑时,将对应的数据库表进行实时更改,以实时更改对应的数据库视图;以及查询单元,生成对应于所述数据库视图的查询语句,并通过运行所述查询语句获取对应的数据对象。
在该技术方案中,通过为每个类型对应的数据库表生成数据库视图,使得用户可以在界面上对该类型及其中的数据对象,以及数据对象之间的版本继承关系得到直观的了解,从而以更简单的方式,生成相应的查询语句,并获取对应的查询对象。同时,在数据对象发生变化时,可以将对应的数据库表进行实时变化,而对应于该数据库表的数据库视图也会实时发生变化,从而达到对数据对象的变化的实时体现。
在上述技术方案中,优选地,所述版本数据包括:数据对象的至少一个版本信息、以及对应于每个所述版本信息的至少一个版次信息。在该技术方案中,对于无版本数据,其版本和版次是唯一的,则对应的版本数据可以认为是“空”,或是预设的数值;对于一级版本数据,其版次是唯一的,则也可以认为是“空”,或是预设的数值;对于二级数据,则一定存在对应的版本信息和版次信息。
在上述技术方案中,优选地,所述类型创建单元还包括:父类型确认子单元,确定所述数据类型的父类型;属性移植子单元,复制所述父类型的所有数据属性,并导入所述数据类型。在该技术方案中,当生成新的类型时,对于存在版本继承关系的类型,即父类型,需要将父类型中的所有数据属性复制过来,用在新生成的类型中。
在上述技术方案中,优选地,还包括:编辑单元,对所述数据类型进行编辑操作,所述编辑操作包括修改或删除所述数据类型。
在上述技术方案中,优选地,数据库视图创建单元还包括:父类型删除子单元,在生成对应于所述数据库表的所述数据库视图之后,删除所述数据类型对应的父类型的数据库视图,并递归删除所述数据类型的祖先类型对应的数据库视图;以及父类型创建子单元,为所述数据类型的祖先类型递归创建对应的数据库视图。在该技术方案中,在生成新的类型或是对已存在的类型进行编辑操作时,由于导致产生了新的继承关系,因此,需要通过递归的方式,找到原来的父类型、父类型的父类型、父类型的父类型的父类型等等,进行删除对应的视图后,按照新的继承关系进行生成对应的视图,从而实现视图上的关系能够随着对应的类型或数据对象的变化而更新。
根据本发明的又一方面,还提出了一种版本继承数据的动态查询方法,包括:步骤202,根据多个数据对象的版本继承关系,将所述多个数据对象进行分类,并生成对应的多个数据类型;步骤204,为每个数据类型的数据对象生成对应的数据库表,其中,所述数据库表中包含所述数据对象的版本数据;步骤206,根据所述版本继承关系,生成对应于每个所述数据库表的数据库视图;步骤208,在对数据对象进行编辑时,将对应的数据库表进行实时更改,以实时更改对应的数据库视图;步骤210,生成对应于所述数据库视图的查询语句,并通过运行所述查询语句获取对应的数据对象。
在该技术方案中,通过为每个类型对应的数据库表生成数据库视图,使得用户可以在界面上对该类型及其中的数据对象,以及数据对象之间的版本继承关系得到直观的了解,从而以更简单的方式,生成相应的查询语句,并获取对应的查询对象。同时,在数据对象发生变化时,可以将对应的数据库表进行实时变化,而对应于该数据库表的数据库视图也会实时发生变化,从而达到对数据对象的变化的实时体现。
在上述技术方案中,优选地,所述版本数据包括:数据对象的至少一个版本信息、以及对应于每个所述版本信息的至少一个版次信息。在该技术方案中,对于无版本数据,其版本和版次是唯一的,则对应的版本数据可以认为是“空”,或是预设的数值;对于一级版本数据,其版次是唯一的,则也可以认为是“空”,或是预设的数值;对于二级数据,则一定存在对应的版本信息和版次信息。
在上述技术方案中,优选地,在所述步骤202中,还包括:步骤2002,确定所述数据类型的父类型;步骤2004,复制所述父类型的所有数据属性,并导入所述数据类型。在该技术方案中,当生成新的类型时,对于存在版本继承关系的类型,即父类型,需要将父类型中的所有数据属性复制过来,用在新生成的类型中。
在上述技术方案中,优选地,还包括:对所述数据类型进行编辑操作,所述编辑操作包括修改或删除所述数据类型。
在上述技术方案中,优选地,所述步骤206之后,还包括:步骤2006,删除所述数据类型对应的父类型的数据库视图,并递归删除所述数据类型的祖先类型对应的数据库视图;步骤2008,为所述数据类型的祖先类型递归创建对应的数据库视图。在该技术方案中,在生成新的类型或是对已存在的类型进行编辑操作时,由于导致产生了新的继承关系,因此,需要通过递归的方式,找到原来的父类型、父类型的父类型、父类型的父类型的父类型等等,进行删除对应的视图后,按照新的继承关系进行生成对应的视图,从而实现视图上的关系能够随着对应的类型或数据对象的变化而更新。
通过以上技术方案,可以有效地改进有父子关系类型的数据查询性能,降低开发人员对查询进行的SQL字符串程序编写难度。
附图说明
图1示出了相关技术的无版本数据的机制示意图;
图2示出了相关技术的一级版本数据的机制示意图;
图3示出了相关技术的二级版本数据的机制示意图;
图4示出了根据本发明的实施例的版本继承数据的动态查询系统的框图;
图5示出了根据本发明的实施例的版本继承数据的动态查询方法的流程图;
图6示出了根据本发明的实施例的创建类型的流程图;
图7示出了根据本发明的实施例的修改类型的流程图;
图8示出了根据本发明的实施例的删除类型的流程图;
图9示出了根据本发明的实施例的对象、数据库表和数据库视图的关系的示意图;
图10示出了根据本发明的实施例的编辑数据对象的示意图;
图11示出了根据本发明的实施例的数据对象的查询结果的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
图4示出了根据本发明的实施例的版本继承数据的动态查询系统的框图。
如图4所示,根据本发明的实施例的版本继承数据的动态查询系统100,包括:类型创建单元102,根据多个数据对象的版本继承关系,将多个数据对象进行分类,并生成对应的多个数据类型;数据库创建单元104,为每个数据类型的数据对象生成对应的数据库表,其中,数据库表中包含数据对象的版本数据;数据库视图创建单元106,根据版本继承关系,生成对应于每个数据库表的数据库视图;实时处理单元108,在数据对象被编辑时,将对应的数据库表进行实时更改,以实时更改对应的数据库视图;以及查询单元110,生成对应于数据库视图的查询语句,并通过运行查询语句获取对应的数据对象。
在该技术方案中,通过为每个类型对应的数据库表生成数据库视图,使得用户可以在界面上对该类型及其中的数据对象,以及数据对象之间的版本继承关系得到直观的了解,从而以更简单的方式,生成相应的查询语句,并获取对应的查询对象。同时,在数据对象发生变化时,可以将对应的数据库表进行实时变化,而对应于该数据库表的数据库视图也会实时发生变化,从而达到对数据对象的变化的实时体现。
在上述技术方案中,版本数据包括:数据对象的至少一个版本信息、以及对应于每个版本信息的至少一个版次信息。在该技术方案中,对于无版本数据,其版本和版次是唯一的,则对应的版本数据可以认为是“空”,或是预设的数值;对于一级版本数据,其版次是唯一的,则也可以认为是“空”,或是预设的数值;对于二级数据,则一定存在对应的版本信息和版次信息。
在上述技术方案中,类型创建单元102还包括:父类型确认子单元1020,确定数据类型的父类型;属性移植子单元1022,复制父类型的所有数据属性,并导入数据类型。在该技术方案中,当生成新的类型时,对于存在版本继承关系的类型,即父类型,需要将父类型中的所有数据属性复制过来,用在新生成的类型中。
在上述技术方案中,还包括:编辑单元112,对数据类型进行编辑操作,编辑操作包括修改或删除数据类型。
在上述技术方案中,数据库视图创建单元106还包括:父类型删除子单元1060,在生成对应于数据库表的数据库视图之后,删除数据类型对应的父类型的数据库视图,并递归删除数据类型的祖先类型对应的数据库视图;以及父类型创建子单元1062,为数据类型的祖先类型递归创建对应的数据库视图。在该技术方案中,在生成新的类型或是对已存在的类型进行编辑操作时,由于导致产生了新的继承关系,因此,需要通过递归的方式,找到原来的父类型、父类型的父类型、父类型的父类型的父类型等等,进行删除对应的视图后,按照新的继承关系进行生成对应的视图,从而实现视图上的关系能够随着对应的类型或数据对象的变化而更新。
图5示出了根据本发明的实施例的版本继承数据的动态查询方法的流程图。
如图5所示,根据本发明的实施例的版本继承数据的动态查询方法,包括:步骤202,根据多个数据对象的版本继承关系,将多个数据对象进行分类,并生成对应的多个数据类型;步骤204,为每个数据类型的数据对象生成对应的数据库表,其中,数据库表中包含数据对象的版本数据;步骤206,根据版本继承关系,生成对应于每个数据库表的数据库视图;步骤208,在对数据对象进行编辑时,将对应的数据库表进行实时更改,以实时更改对应的数据库视图;步骤210,生成对应于数据库视图的查询语句,并通过运行查询语句获取对应的数据对象。
在该技术方案中,通过为每个类型对应的数据库表生成数据库视图,使得用户可以在界面上对该类型及其中的数据对象,以及数据对象之间的版本继承关系得到直观的了解,从而以更简单的方式,生成相应的查询语句,并获取对应的查询对象。同时,在数据对象发生变化时,可以将对应的数据库表进行实时变化,而对应于该数据库表的数据库视图也会实时发生变化,从而达到对数据对象的变化的实时体现。
在上述技术方案中,版本数据包括:数据对象的至少一个版本信息、以及对应于每个版本信息的至少一个版次信息。在该技术方案中,对于无版本数据,其版本和版次是唯一的,则对应的版本数据可以认为是“空”,或是预设的数值;对于一级版本数据,其版次是唯一的,则也可以认为是“空”,或是预设的数值;对于二级数据,则一定存在对应的版本信息和版次信息。
在上述技术方案中,在步骤202中,还包括:步骤2002,确定数据类型的父类型;步骤2004,复制父类型的所有数据属性,并导入数据类型。在该技术方案中,当生成新的类型时,对于存在版本继承关系的类型,即父类型,需要将父类型中的所有数据属性复制过来,用在新生成的类型中。
在上述技术方案中,还包括:对数据类型进行编辑操作,编辑操作包括修改或删除数据类型。
在上述技术方案中,步骤206之后,还包括:步骤2006,删除数据类型对应的父类型的数据库视图,并递归删除数据类型的祖先类型对应的数据库视图;步骤2008,为数据类型的祖先类型递归创建对应的数据库视图。在该技术方案中,在生成新的类型或是对已存在的类型进行编辑操作时,由于导致产生了新的继承关系,因此,需要通过递归的方式,找到原来的父类型、父类型的父类型、父类型的父类型的父类型等等,进行删除对应的视图后,按照新的继承关系进行生成对应的视图,从而实现视图上的关系能够随着对应的类型或数据对象的变化而更新。
图6示出了根据本发明的实施例的创建类型的流程图。
如图6所示,根据本发明的实施例的创建类型的业务逻辑如下:
步骤302,创建类型。这里主要是指获取对应的类型模型、确定类型的名称等。
步骤304,选择父类型。对于存在版本继承关系的数据对象,多个数据对象之间即为“父子”关系,由于创建新的类型时,必然导致原来的父类型已存在的继承关系、生成的视图等发生改变,因此需要对其进行操作,保证在对于的视图上实时显示出最新的数据关系和版本继承信息。
步骤306,复制父类型的所有属性。这里是指将父类型的所有属性复制后,存储至新的类型中。
步骤308,保存类型并生成数据表。这里的数据表,即为数据库表,是为类型生成的对应的物理表。
步骤310,创建当前类型的视图。根据生成的数据表,生成对应的视图,从而使得用户可以直观地得到对应的类型、数据对象的版本关系和情况。
步骤312,删除父类型对应的视图。原来的视图对应着原来的旧的版本继承关系,可以进行删除。
步骤314,递归查找父类型,判断之前的父类型是否递归地存在多级父类型,若存在,则进入步骤316,否则进入步骤318。
步骤316,定位父类型,并进一步进入步骤312,删除对应的视图。
步骤318,创建所有父类型的视图,这里包括对所有之前递归删除了旧的视图的父类型进行的操作。
图7示出了根据本发明的实施例的修改类型的流程图。
如图7所示,根据本发明的实施例的修改类型的流程如下:
步骤402,选中要修改的类型。
步骤404,修改后保存。
步骤406,判断属性是否进行了修改,若是,则进入步骤408,否则进入步骤418。这里的修改是指对类型的属性的编辑,如新增属性、删除属性、修改属性的数据类型,而如果只是修改类型的特性属性值,可直接保存数据到数据库相应的数据表中。
步骤408,删除类型对应的视图。
步骤410,创建修改后的类型的数据库表和视图。
步骤412,递归删除所有父类型对应的视图。
步骤414,递归生成所有父类型对应的视图。
步骤416,保存当前类型。
步骤418,将数据存储至数据库中。
图8示出了根据本发明的实施例的删除类型的流程图。
如图8所示,根据本发明的实施例的删除类型的流程如下:
步骤502,选中要删除的类型。
步骤504,删除类型相关的数据。
步骤506,删除类型对应的视图。
步骤508,递归删除所有父类型对应的视图。
步骤510,递归生成所有父类型对应的视图。
图9示出了根据本发明的实施例的对象、数据库表和数据库视图的关系的示意图。
如图9所示,为根据本发明的实施例的对象、数据库表和数据库视图的关系。
数据模型和数据表之间的关系:
数据模型的类型对应的数据表的定义规范前缀+类型名,属性名和字段名名称一致,数据表中的字段相对完整且独立;
类型继承和类型视图的关系:
类型在数据库中生成数据视图,通过Union ALL方式将该类型下的所有子类型和该类型联合在一起,字段集以当前类型的属性集为准;
举例说明:
类型有:part、mpart、epart三个类型;
类型之间的关系是:
Part是mpart和epart的父类;
下面的内容是类型part对应的视图产生语句
CREATE VIEW[dbo].[plm_view_part](checkinby,checkintime,checkoutby,checkouttime,creatime,
creator,lcstate,lctemplate,material,modifor,modiftime,oid,owner,roid,sourceversion,
versionlabel,versionnum,versionrule,ts,dr,classname)as SELECTa0.checkinby,a0.checkintime,
a0.checkoutby,a0.checkouttime,a0.creatime,a0.creator,a0.lcstate,a0.lctemplate,a0.material,
a0.modifor,a0.modiftime,a0.oid,a0.owner,a0.roid,a0.sourceversion,a0.versionlabel.
a0.versionnum,a0.versionrule,a0.ts,a0.dr,
′part′AS classname
FROM plm_cus_part a0
UNION ALL
SELECT a1.checkinby,a1.checkintime,a1.checkoutby,a1.checkouttime,a1.creatime,a1.creator,a1.lcstate
,a1.lctemplate,a1.material,a1.modifor,a1.modiftime,a1.oid,a1.owner,a1.roid,a1.sourceversion,
a1.versionlabel,a1.versionnum,a1.versionrule,a1.ts,a1.dr,
′mpart′AS classname
FROM plm_cus_mpart a1
UNION ALL
SELECT a2.checkinby,a2.checkintime,a2.checkoutby,a2.checkouttime,a2.creatime,a2.creator,a2.lcstate
,a2.lctemplate,a2.material,a2.modifor,a2.modiftime,a2.oid,a2.owner,a2.roid,a2.sourceversion,
a2.versionlabel,a2.versionnum,a2.versionrule,a2.ts,a2.dr,
′epart′AS classname
FROM plm_cus_epart a2
查询模块和类型视图的关系:
前缀+“VIEW_”+类型名的视图。
而从图9中来看,
类型包括:ITEM、PART、MPART
类型之间的关系是:
ITEM的子类型是PART;
PART的子类型是MPART;
类型和数据表之间的关系是:
类型ITEM对应的数据表为PLM_CUS_ITEM;
类型PART对应的数据表为PLM_CUS_PART;
类型和视图表之间关系是:
类型ITEM对应的视图表为PLM_VIEW_ITEM;
类型PART对应的视图表为PLM_VIEW_PART。
对象实例数据创建、修改、删除、查询的逻辑如表1所示:
表1
图10示出了根据本发明的实施例的编辑数据对象的示意图;图11示出了根据本发明的实施例的数据对象的查询结果的示意图。
如图10所示,编辑时必须锁定类型实例的某个版本和某个版次数据,比如对于图中示出的“检出者”以及“修改者”,都要进行实时记录,以便对视图进行实时更新。
在对版本数据进行获取时,如图11所示,为两种模式All所有版本模式和Lastest最新版本最新版次模式的对比,其中,
All模式,是指查询的结果是多条包括所有版本和所有版次的信息;
Lastest模式,是指查询的结果只有一条指向最新的版本和最新的版次。
统一的查询条件定义
本发明的技术方案中,以类型数据为基础,定义的元素来自于类型数据,为了方便解析,查询的元素可做如下抽象:
1)条件可以定义
例如:查询零件的名称包含A的所有零件;
表达式为C.PART.I.NAME LIKE‘%A%’;
●C表示类;
●PART是零件的类名;
●I表示本属性为扩展属性;
●NAME表示属性名;
●LIKE表示查询条件的关系操作符;
●‘%A%’表示查询条件的值。
2)条件之间的关系可定义
上面是一个查询条件举例,假设我们有三个查询条件,分别是condition1、condition2、condition3,我们有如下的查询条件关系表达式(condition1 OR condition2)AND condition3
我们可以抽象此查询条件关系表示式为树形结构:
条件关系(AND)
+condition3
+条件关系(OR)
+condition1
+condition2
3)关系类型可定义
多级关系类型可定义为树形关系,节点和节点之间是关系类型,节点是类型。
4)结果输出可定义
输出可以支持对象输出和数据表形式的输出,数据表形式可定义输出的属性位置,和以什么属性进行排序。
5)查询关键字
AllRevisionAllVersion:获取二级版本的所有版本的所有版次的数据;
CurrentRevisionAllVersion:获取二级版本的指定版本的所有版次的数据;
CurrentRevisionLastestVersion:获取二级版本的指定版本的最新版次的数据;
CurrentRevisionCurrentVersion:获取二级版本的指定版本的制定版次的数据;
LastestRevisionLastestVersion:获取二级版本的最新版本的最新版次的数据。
6)统一的查询引擎解释:
查询引擎分为:查询检查、查询解释、查询执行三部分;
查询检查的功能是检查查询定义的条件中包含的属性信息和类型中的属性的一致性;
查询解释是将查询定义转换为sql;
查询执行是将执行sql并将结果转换为用户需要的结果返回;
举例说明如下:
类型:part、mpart、epart
类型间的继承关系为:part是mpart和epart的父类型
视图表中的关键字段如表2所示:
表2
情况一:
所有版本所有版次(AllRevisionAllVersion)
sql为:select*from plm_view_part where name like‘%a%’;
情况二:
指定版本的所有版次(currentRevisionAllVersion)
sql为:select*from plm_view_part where name like‘%a%’
and roid=’000112’
情况三:
指定版本的最新版次(currentRevisionLastestVersion)
sql为:select*from plm_view_part where name like‘%a%’
and roid=’000112’
and vernumber=lastvernum
情况四:
指定版本的指定版次(currentRevisionCurrentVersion)
sql为:select*from plm_view_part where name like‘%a%’
and roid=’000112’
and void=’000114’
情况五:
最新版本的最新版次(LastestRevisionLastestVersion)
sql为:select*from plm_view_part where name like‘%a%’
and revnum=lastrevnum
and vernumber=lastvernum
以上结合附图详细说明了本发明的技术方案,考虑到相关技术中,对于存在版本继承关系的数据,无法进行清楚的显示,无法向用户提供较为清楚、明显的展示,因此,本发明提供了一种版本继承数据的动态查询系统和方法,可以有效地改进有父子关系类型的数据查询性能,降低开发人员对查询进行的SQL字符串程序编写难度。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种版本继承数据的动态查询系统,其特征在于,包括:
类型创建单元,根据多个数据对象的版本继承关系,将所述多个数据对象进行分类,并生成对应的多个数据类型;
数据库创建单元,为每个数据类型的数据对象生成对应的数据库表,其中,所述数据库表中包含所述数据对象的版本数据;
数据库视图创建单元,根据所述版本继承关系,生成对应于每个所述数据库表的数据库视图;
实时处理单元,在数据对象被编辑时,将对应的数据库表进行实时更改,以实时更改对应的数据库视图;以及
查询单元,生成对应于所述数据库视图的查询语句,并通过运行所述查询语句获取对应的数据对象。
2.根据权利要求1所述的版本继承数据的动态查询系统,其特征在于,所述版本数据包括:数据对象的至少一个版本信息、以及对应于每个所述版本信息的至少一个版次信息。
3.根据权利要求1或2所述的版本继承数据的动态查询系统,其特征在于,所述类型创建单元还包括:
父类型确认子单元,确定所述数据类型的父类型;
属性移植子单元,复制所述父类型的所有数据属性,并导入所述数据类型。
4.根据权利要求3所述的版本继承数据的动态查询系统,其特征在于,还包括:
编辑单元,对所述数据类型进行编辑操作,所述编辑操作包括修改或删除所述数据类型。
5.根据权利要求4所述的版本继承数据的动态查询系统,其特征在于,数据库视图创建单元还包括:
父类型删除子单元,在生成对应于所述数据库表的所述数据库视图之后,删除所述数据类型对应的父类型的数据库视图,并递归删除所述数据类型的祖先类型对应的数据库视图;以及
父类型创建子单元,为所述数据类型的祖先类型递归创建对应的数据库视图。
6.一种版本继承数据的动态查询方法,其特征在于,包括:
步骤202,根据多个数据对象的版本继承关系,将所述多个数据对象进行分类,并生成对应的多个数据类型;
步骤204,为每个数据类型的数据对象生成对应的数据库表,其中,所述数据库表中包含所述数据对象的版本数据;
步骤206,根据所述版本继承关系,生成对应于每个所述数据库表的数据库视图;
步骤208,在对数据对象进行编辑时,将对应的数据库表进行实时更改,以实时更改对应的数据库视图;
步骤210,生成对应于所述数据库视图的查询语句,并通过运行所述查询语句获取对应的数据对象。
7.根据权利要求6所述的版本继承数据的动态查询方法,其特征在于,所述版本数据包括:数据对象的至少一个版本信息、以及对应于每个所述版本信息的至少一个版次信息。
8.根据权利要求6或7所述的版本继承数据的动态查询方法,其特征在于,在所述步骤202中,还包括:
步骤2002,确定所述数据类型的父类型;
步骤2004,复制所述父类型的所有数据属性,并导入所述数据类型。
9.根据权利要求8所述的版本继承数据的动态查询方法,其特征在于,还包括:
对所述数据类型进行编辑操作,所述编辑操作包括修改或删除所述数据类型。
10.根据权利要求9所述的版本继承数据的动态查询方法,其特征在于,所述步骤206之后,还包括:
步骤2006,删除所述数据类型对应的父类型的数据库视图,并递归删除所述数据类型的祖先类型对应的数据库视图;
步骤2008,为所述数据类型的祖先类型递归创建对应的数据库视图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104487569A CN102402626A (zh) | 2011-12-28 | 2011-12-28 | 版本继承数据的动态查询系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104487569A CN102402626A (zh) | 2011-12-28 | 2011-12-28 | 版本继承数据的动态查询系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102402626A true CN102402626A (zh) | 2012-04-04 |
Family
ID=45884826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104487569A Pending CN102402626A (zh) | 2011-12-28 | 2011-12-28 | 版本继承数据的动态查询系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102402626A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473311A (zh) * | 2013-09-11 | 2013-12-25 | 北京新学堂网络科技有限公司 | 一种在html5应用中引入外部数据库的方法及装置 |
CN103823755A (zh) * | 2014-02-21 | 2014-05-28 | 北京金山网络科技有限公司 | 一种版本管理系统的数据处理方法和装置 |
CN104050264A (zh) * | 2014-06-19 | 2014-09-17 | 华为技术有限公司 | 一种生成sql语句的方法和装置 |
CN104346662A (zh) * | 2013-07-26 | 2015-02-11 | 镇江雅迅软件有限责任公司 | 一种业务数据继承的实现方法 |
CN105791242A (zh) * | 2014-12-24 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 对象类型的识别方法、服务器、客户端和系统 |
CN106202008A (zh) * | 2016-06-28 | 2016-12-07 | 武汉斗鱼网络科技有限公司 | 一种MySQL数据库结构化文档生成方法及装置 |
CN110808924A (zh) * | 2019-11-12 | 2020-02-18 | 迈普通信技术股份有限公司 | 芯片环回报文处理方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661508A (zh) * | 2009-09-29 | 2010-03-03 | 金蝶软件(中国)有限公司 | 一种应用于多技术平台的生成表单的方法及装置 |
CN101901265A (zh) * | 2010-07-29 | 2010-12-01 | 中国运载火箭技术研究院 | 一种虚拟试验数据对象化管理系统 |
US20110093486A1 (en) * | 2009-10-15 | 2011-04-21 | Institute For Information Industry | Data query method, data query system and computer readable and writable recording medium |
-
2011
- 2011-12-28 CN CN2011104487569A patent/CN102402626A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661508A (zh) * | 2009-09-29 | 2010-03-03 | 金蝶软件(中国)有限公司 | 一种应用于多技术平台的生成表单的方法及装置 |
US20110093486A1 (en) * | 2009-10-15 | 2011-04-21 | Institute For Information Industry | Data query method, data query system and computer readable and writable recording medium |
CN101901265A (zh) * | 2010-07-29 | 2010-12-01 | 中国运载火箭技术研究院 | 一种虚拟试验数据对象化管理系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346662A (zh) * | 2013-07-26 | 2015-02-11 | 镇江雅迅软件有限责任公司 | 一种业务数据继承的实现方法 |
CN103473311A (zh) * | 2013-09-11 | 2013-12-25 | 北京新学堂网络科技有限公司 | 一种在html5应用中引入外部数据库的方法及装置 |
CN103473311B (zh) * | 2013-09-11 | 2016-10-12 | 北京新学堂网络科技有限公司 | 一种在html5应用中引入外部数据库的方法及装置 |
CN103823755A (zh) * | 2014-02-21 | 2014-05-28 | 北京金山网络科技有限公司 | 一种版本管理系统的数据处理方法和装置 |
CN104050264A (zh) * | 2014-06-19 | 2014-09-17 | 华为技术有限公司 | 一种生成sql语句的方法和装置 |
CN105791242A (zh) * | 2014-12-24 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 对象类型的识别方法、服务器、客户端和系统 |
CN105791242B (zh) * | 2014-12-24 | 2019-02-26 | 阿里巴巴集团控股有限公司 | 对象类型的识别方法、服务器、客户端和系统 |
CN106202008A (zh) * | 2016-06-28 | 2016-12-07 | 武汉斗鱼网络科技有限公司 | 一种MySQL数据库结构化文档生成方法及装置 |
CN106202008B (zh) * | 2016-06-28 | 2019-04-05 | 武汉斗鱼网络科技有限公司 | 一种MySQL数据库结构化文档生成方法及装置 |
CN110808924A (zh) * | 2019-11-12 | 2020-02-18 | 迈普通信技术股份有限公司 | 芯片环回报文处理方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102402626A (zh) | 版本继承数据的动态查询系统和方法 | |
US9436779B2 (en) | Techniques of efficient XML query using combination of XML table index and path/value index | |
Petit et al. | Using queries to improve database reverse engineering | |
US7191182B2 (en) | Containment hierarchy in a database system | |
Braganholo et al. | From XML view updates to relational view updates: old solutions to a new problem | |
US10423623B2 (en) | Hierarchy modeling and query | |
EP1081610A2 (en) | Methods for transforming metadata models | |
KR20070001781A (ko) | 데이터에 대한 함수 적용의 결과에 대한 구조화된 인덱스 | |
Lee et al. | Signature file methods for indexing object-oriented database systems | |
Popa et al. | Mapping XML and relational schemas with Clio | |
CN102591960A (zh) | 农业经济电子地图数据服务接口方法 | |
CN110737729A (zh) | 基于知识图谱理念和技术的工程图谱数据信息管理方法 | |
US7130856B2 (en) | Map and data location provider | |
Wile et al. | Worlds: an organizing structure for object-bases | |
Finis et al. | DeltaNI: An efficient labeling scheme for versioned hierarchical data | |
Akoka et al. | Dimension hierarchies design from UML generalizations and aggregations | |
M Maatuk et al. | Translating relational database schemas into object-based schemas: university case study | |
Nabli et al. | Towards an automatic data mart design | |
US20070220033A1 (en) | System and method for providing simple and compound indexes for XML files | |
Mueck et al. | Index data structures in object-oriented databases | |
Ling et al. | Towards an intelligent keyword search over XML and relational databases | |
Herden | A design methodology for data warehouses | |
Dyreson et al. | Using XMorph to transform XML data | |
CN103136374A (zh) | 一种对象代理数据库的模式规范化方法 | |
Sarkar et al. | Implementation of graph semantic based multidimensional data model: An object relational approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120404 |