数据库跨类查询方法

文档序号:6459885阅读:277来源:国知局
专利名称:数据库跨类查询方法
技术领域
本发明涉及数据库查询处理领域,特别是一种用对象间的双向指针技术实现数据库跨 类査询的方法。
背景技术
随着数据库技术的不断进步,数据库的应用范围也更加广泛。 一些新的应用领域如跨 媒体应用、数字图书馆和生物信息管理等,对数据库提出了更多的要求。在这些应用中, 往往涉及到非传统形式的、复杂的数据。面向对象数据库、对象关系数据库和对象代理数 据库能较好地支持各种非传统的数据类型,对各种复杂的数据进行管理,而且在表现复杂 语义和关系方面具有较强的能力。在数据库中,复杂数据之间存在着丰富的语义关系,数 据库一方面需要支持定义这些复杂的联系,另一方面也需要支持基于复杂数据之间的语义
关系进行查询。
面向对象数据库支持行类型和抽象数据类型定义,对象关系数据库通过类型构造器来 创建复杂类型,对象代理数据库引入类和代理类来定义复杂数据。在这些数据库中,数据 类型与数据类型之间、类与类之间存在着各种关系和复杂语义,伴随着的是对象与对象之 间也存在相互关系或者语义联系。随着数据模型对语义进行扩充,数据库支持复杂类型和 复杂对象,由此要求对数据库查询进行扩充,以支持对复杂对象进行查询以及进行跨类查 询。
在数据库中实现跨类査询,丰富了数据库的查询处理能力。针对相互关联的类型或类, 允许用户从一个类型或类中的对象出发,对相互关联的其他类型或类中的对象进行查询。 在面向对象数据库系统和对象关系数据库系统中,如果抽象数据类型的属性引用其它类型 的对象,那么允许在相互联系的类型之间进行导航査询,即访问单个对象时根据对象之间 的联系从一个对象导航到另一个对象。遍历的类型通过遍历路径进行说明,类型之间只能 是单向的关系,即路径只能从引用者出发,指向被引用者。而在对象代理数据库系统中, 类之间的代理关系在逻辑上形成了一个相互连接的网状结构,这种类之间的联系在对象层 次上则表现为相关对象之间的连接,因此可以根据类层次的导航,从一个类中的对象出发 査询其它相关类中的对象。

发明内容
本发明所要解决的技术问题是提供一种用对象间的双向指针技术实现数据库跨类查 询的方法,该方法能够在数据库中实现有效的跨类査询,进一步丰富数据库的查询处理能 力。
本发明按下述技术方案解决其技术问题
本发明提供的是一种用对象间的双向指针方法实现数据库的跨类査询,具体是采用包 括以下步骤的方法(1) 数据库跨类査询机制的设计
在面向对象数据库、对象关系数据库和对象代理数据库中,采用包括对象间的双向指 针连接、跨类查询描述以及跨类査询处理,实现数据库跨类査询,具体是
将数据库中的每一个对象赋予一个OID, OID是对象标识符,根据对象所拥有的OID 以及不同对象间所具有的关系,建立起不同对象间的双向指针,以刻画不同对象间的联系。
在数据库查询语言中,为支持跨类查询描述定义相关语法。
数据库跨类查询处理时,从某个初始类中的对象出发,根据对象间的双向指针,找到 目标类中相关的对象,并应用跨类查询的目标表达式,对目标类中的对象采用数据库表达 式计算的方法进行计算,最后返回跨类查询的结果;
(2) 数据库跨类査询机制的实现
其步骤包括根据数据组织形式,采用上述数据库跨类查询机制的设计,在数据库系 统中实现跨类查询。
本发明具有以下主要有益效果
其一.能够方便有效地表现对象间的各种语义关系。
在面向对象数据库和对象关系数据库中,抽象数据类型的定义使得类型之间存在着相 互关联;在对象代理数据库中,代理类的定义使得类之间存在着代理关系。以上联系在对 象层次则表现为对象之间的相互关联。针对数据库中对象具有唯一对象标识符的特点,本 发明提出在相互关联的对象之间采用对象标识符建立双向指针连接。利用双向指针能方便 有效地表现对象间的各种复杂关系。
其二.能够在数据库中实现有效的跨类查询操作。
对象间双向指针连接的存在以及类型与类型之间、类与类之间所存在的各种语义关 系,使得在数据库内部具有了进行跨类査询的基础。本发明通过在现有数据库査询语言基 础上进一步扩充语义操作,使得数据库査询语言具有描述跨类査询的能力;通过扩展数据 库查询处理模块,采用一种基于对象间的双向指针连接的数据库跨类査询机制,能够在数 据库中实现有效的跨类査询操作。
其三.为目前正在兴起的跨媒体应用提供有效支持。
随着网上数字媒体信息呈爆炸性增长,人们已不满足通过文本之间的简单连接进行信 息检索,而希望通过挖掘和利用媒体信息之间的各种语义关联进行更广泛更深层次的跨媒 体交叉检索。通过建立各种媒体之间的双向连接,表现各种语义关系,进行有效的存储和 管理,跨类査询能够为实现高效跨媒体查询提供有效支持。


图1为对象之间的代理关系及双向指针连接的示意图。
具体实施例方式
本发明是一种用对象间的双向指针技术实现数据库跨类查询的方法。包括数据库跨类 查询机制的设计和实现数据库跨类查询机制的步骤。具体是一. 数据库跨类查询机制的设计
在面向对象数据库和对象关系数据库中,允许用户定义抽象数据类型。类型与类型之 间存在着二元关系,二元关系又可以分为一对一关系、 一对多关系、多对多关系等。由此 而产生的是类型实例间,即对象间也存在着二元关系。在对象代理数据库中,源类与代理 类之间存在着代理关系, 一个源类可以同时定义多个代理类, 一个代理类也不仅限于代理 一个源类。伴随着类之间代理关系的是对象间的代理关系。 一个类中的对象可以是多个不 同代理类中的代理对象的源对象,同时一个类中的对象也可以作为多个不同源类中的源对 象的代理对象而存在。
由于在面向对象数据库、对象关系数据库和对象代理数据库中,系统为每一个对象分 配一个唯一的对象标识符,对象间的关系可以通过对象标识符相互关联来记录。 一旦对象 之间建立了联系,就为数据库进行跨类査询提供了基础。通过在数据库查询语言中支持跨 类查询描述,以及在查询处理过程中利用对象间的联系支持跨类査询处理,从而达到数据 库跨类查询的目的。
在面向对象数据库、对象关系数据库和对象代理数据库中,采用包括对象间的双向指 针连接、跨类査询描述以及跨类查询处理,实现数据库跨类查询,具体是
将数据库中的每一个对象赋予一个OID, OID是对象标识符,根据对象所拥有的OID
以及不同对象间所具有的关系,建立起不同对象间的双向指针,以刻画不同对象间的联系。 在数据库查询语言中,为支持跨类査询描述定义相关语法。数据库查询语言中包含描 述跨类査询的语法,其是路径表达式或者是和路径表达式相类似的形式,包括跨类查询的 初始类、目标类,跨类査询所经历的类路径,以及跨类査询目标类上的表达式。
数据库跨类査询处理时,从某个初始类中的对象出发,根据对象间的双向指针,找到 目标类中相关的对象,并应用跨类査询的目标表达式,对目标类中的对象采用数据库表达 式计算的方法进行计算,最后返回跨类查询的结果。所述数据库中对象间的双向指针连接,
包括对象间双向指针的建立和对象间双向指针的删除,具体如下
建立对象间双向指针的方法是对于属于不同的类、且彼此之间具有相互关系的对象, 当这些对象在数据库中被创建时,数据库系统根据对象所具有的对象标识符,构造两个对 象间的双向指针连接,以记录两个对象间的关系。
删除对象间双向指针的方法是当某个对象被删除时,数据库系统自动删除与该对象 有关的所有双向指针连接。
二. 数据库跨类査询机制的实现
根据数据组织形式,采用上述数据库跨类查询机制的设计,在数据库系统中实现跨类 査询。跨类查询处理采用包括以下步骤的方法
1. 根据跨类查询描述,确定由初始类G到达目标类Cd所经历的类路径,该类路径不 存在回路;
2. 对于初始类中的每一个对象Os,由其出发,根据数据库系统维护的对象间双向指针 连接,在跨类查询路径所涉及的所有类之间,按照深度优先遍历算法查找相互关联的对象,直到找到属于目标类的相关对象;
3.根据跨类査询所指定的目标类上的表达式,采用数据库表达式计算的方法,对S标 类上的对象进行计算,从而完成跨类査询执行。
三.上述数据库跨类査询的方法的应用
本发明提供的上述数据库跨类查询的方法,可在面向对象数据库系统、对象关系数据 库系统和对象代理数据库系统中实现数据库跨类査询的应用。
用双向指针连接来记录相关联对象之间的语义关系;在面向对象数据库、对象关系数 据库和对象代理数据库査询语言中采用路径表达式来描述跨类査询;面向对象数据库系 统、对象关系数据库系统和对象代理数据库系统在进行跨类查询处理时,对路径表达式进 行计算,从而实现面向对象数据库、对象关系数据库和对象代理数据库的跨类査询。
1. 面向对象数据库系统、对象关系数据库系统和对象代理数据库系统自动维护相关联 对象之间的双向指针连接,包括
(1)相关联对象之间双向指针的自动创建 面向对象数据库系统、对象关系数据库系统和对象代理数据库系统自动创建相关联对 象间的双向指针连接,其歩骤是
当一个类中的对象被创建的时候,找到其所有相关联的对象,
根据数据库为每个对象所分配的OID,在数据库系统中记录下新创建对象与其所关联 对象之间的双向指针,新创建对象与其每一个相关联对象间的双向指针由新创建对象的
OID、其所属类的OID、相关联对象的OID和相关联对象所属类的OID等组成。对象间 口J能存在着一对一或一对多的关系,对于一对一的关系,可以通过一对双向指针来记录对 象间的关系,对于一对多(l:m)的关系,则可通过多对(m对)双向指针来记录对象间 的关系;
(2 )相关联对象之间的双向指针连接的自动删除 当一个类中的对象被删除的时候,找到数据库记录的与该对象有关的所有双向指针, 并将它们从数据库系统中删除。
2. 跨类查询的描述。在描述跨类査询时,至少需要包括以下几点跨类查询的起点 类、跨类杳询的终点类,跨类杳询所要经历的路径,跨类查询的目标表达式。跨类查询只 要求査询路径所经历的类之间具有联系,而且査询的方向可以是双向的。描述跨类查询的 路径表达式为
{<class〉~>}+<target〉.<expression>,
上述路径表达式是基于目标类属性的任意表达式,其中"lass〉为路径中各个类的名 称,〈target〉为目标类,〈expression〉为目标表达式。
3. 跨类杳询的执行是从初始类的一个对象出发,按照跨类査询制定的路径找到它 在目标类中对应的对象,并返回目标对象的某个计算表达式。其具体步骤是
(1)根据跨类査询命令,确定由初始类G到达目标类Cd所经历的类路径;对跨类 查询所经历的路径进行正确性检査,首先要求该类路径不存在回路;其次类路径中前后两个类之间必须具有某种语义联系;
(2) 对于初始类中的每一个对象Os,由其出发根据数据库系统所维护的对象间双向 指针连接,在跨类查询路径所涉及的所有类之间,査找相互关联的对象,直到找到属于目 标类的相关对象。
由于跨类査询类路径中前后两个类之间彼此关联,对象间可能存在一对一或一对多的 关系,根据对象间的双向指针,对于一对一的关系,可以由前一个类中的一个对象直接找 到后一个类中的一个对象;对于一对多的关系,则由前一个类中的一个对象找到与其相关 的后一个类中的多个对象。对于后一种情况,将由找到的后一个类的一个对象出发,沿着 类路径直到找到属于目标类中的对象;之后回溯到该类,取下一个未计算的对象,继续查 询处理过程。
(3) 根据跨类查询所指定的目标类上的表达式,采用数据库表达式计算的方法,对 目标类上的对象进行计算,从而完成跨类查询处理。
4.路径表达式的正确性检验的标准是路径表达式中前后两个类之间必须具有直接 关联关系,例如在对象代理数据库中;或者前一个类是后一个类的代理类,或者前一个类 是后一个类的源类。
下面结合在对象代理数据库中实现跨类查询,对本发明作进一歩说明。
在对象代理数据库中可以定义类和代理类。对象代理数据库存在四种类型的代理类, 包括选择,合并,连接和分组,用于支持特化,泛化,聚集和分组。对于每一个代理类, 根据其代理类型的不同,存在着一定数量的源类;此外在代理类之上,也可以进一步定义 代理类。由于类与代理类之间的代理关系,使得对象代理数据库中的类在逻辑上形成了一 个网状结构。例如,在图l中,通过定义三个选择型代理类,可以扩展学生类使其分别具 有相关联的文档,视频和相冊。
在对象层次上,由于代理类中的对象扮演源类中的源对象的不同角色。代理对象和源 对象之间也存在着代理关系,根据代理类型的不同, 一个代理对象可以有一个或多个源对 象;同样,对于同一个源对象,也可以拥有一个或多个代理对象。
在对象代理数据库中进行跨类查询,即对于相互之间具有代理关系的类,可以从其 中一个类的一个对象出发,按照某种路径找到它在目标类中相关的对象,并返回目标对象 的某个计算表达式。例如,在图1中,可以从学生张三的一个文档出发,通过跨类查询, 可以找到与他关联的视频和相册。
1.对象代理数据库对象间的双向指针连接维护的具体步骤 (1)源对象和代理对象之间双向指针连接的自动创建
当创建一个代理类时,根据其代理规则,由源类中的对象自动派生代理对象到该代理 类中。此外,更新迁移机制使得对源类进行操作时,满足代理规则的新代理对象被派生到 代理类中。因此,当代理类中的对象被派生时,数据库根据为每个对象所分配的对象标识 符OID,在数据库系统中记录下新产生代理对象与其所有源对象之间的双向指针,新派生 的代理对象与其每一个源对象间的双向指针由新派生的代理对象的OID、其所属类的OID、源对象的OID和源对象所属类的OID等组成。 (2)源对象和代理对象之间双向指针的自动删除 当一个类中的对象被删除的时候,数据库系统将找到与该对象有关的所有双向指针, 并将它们从数据库系统中删除。
2. 路径表达式描述跨类査询
在对象代理数据库查询语言中,定义了路径表达式来表达跨类查询。
路径表达式的形式化定义为
{<class>~>}+<target>.<expression>
其中〈class〉为路径中各个类的名称,〈target〉为目标类,〈expression〉为目标表达式, 它可以是基于曰标类属性的任意表达式。例如,上记跨类査询的路径表达式可表示为 文档》学生今视频.*;文档+学生+相册.*
3. 路径表达式计算
对象代理数据库査询处理模块通过对路径表达式进行计算,从而实现跨类査询。在计 算路径表达式时,数据库依赖跨类查询命令所给出的路径表达式进行导航,根据对象间的 双向指针进行追踪查询。其具体步骤是
(1) 检查路径表达式的正确性。路径表达式的正确性耍求路径所经历的所有类之间 具有这样的关系,即前后两个类之间具有直接的代理关系,或者前一个类是后一个类的代 理类,或者前一个类是后一个类的源类。此外,路径表达式的目标表达式是基于路径目标 类的属性的一个计算表达式。
(2) 扫描初始类中的每一个对象,根据路径表达式的3航,由其出发,根据数据库 系统所维护的对象间双向指针连接,在路径表达式所涉及的所有类之间,按照深度优先遍 历算法査找相互具有代理关系的对象,直到找到目标类h的相关对象。
路径表达式的表达是双向的,即可以从源类出发査询代理类,也可以由代理类出发査 询源类。对于路径表达式类路径中的前后两个类,如果他们的代理关系是选择、合并或连 接型代理关系,那么由甜一个类中的一个对象出发,只能査询到其对应的后一个类的一个 对象,即对象间的关系是一对一的关系;如果他们的代理关系是分组型代理关系,且能一 个类是后一个类的分组型代理类,那么由前一个类中的一个对象出发,将查询到其对应的 后一个类的多个对象,即对象间的关系是一对多的关系。当遇到后一种情况时,在找到后 一个类的所有对象之后,将选择由其中的一个对象出发,沿着类路径继续进行查询,直到
找到属于目标类中的对象;之后再回溯到该类,取下一个为计算的对象,继续查询处理过 程。
(3) 对于上述找到的目标类上的对象,应用路径表达式的目标表达式,按照数据库 表达式计算方法,对目标表达式进行计算,并最终返回计算结果。
权利要求
1.数据库跨类查询方法,其特征是一种用对象间的双向指针方法实现数据库的跨类查询,具体是采用包括以下步骤的方法(1)数据库跨类查询机制的设计在面向对象数据库、对象关系数据库和对象代理数据库中,采用包括对象间的双向指针连接、跨类查询描述以及跨类查询处理,实现数据库跨类查询,具体是将数据库中的每一个对象赋予一个OID,OID是对象标识符,根据对象所拥有的OID以及不同对象间所具有的关系,建立起不同对象间的双向指针,以刻画不同对象间的联系。在数据库查询语言中,为支持跨类查询描述定义相关语法。数据库跨类查询处理时,从某个初始类中的对象出发,根据对象间的双向指针,找到目标类中相关的对象,并应用跨类查询的目标表达式,对目标类中的对象采用数据库表达式计算的方法进行计算,最后返回跨类查询的结果;(2)数据库跨类查询机制的实现其步骤包括根据数据组织形式,采用上述数据库跨类查询机制的设计,在数据库系统中实现跨类查询。
2. 根据权利要求1所述的数据库跨类査询方法,其特征在于数据库中对象间的双 向指针连接,包括对象间双向指针的建立和对象间双向指针的删除,建立对象间双向指针的方法是对于属于不同的类、且彼此之间具有相互关系的对象, 当这些对象在数据库中被创建时,数据库系统根据对象所具有的对象标识符,构造两个对 象间的双向指针连接,以记录两个对象间的关系,删除对象间双向指针的方法是当某个对象被删除时,数据库系统自动删除与该对象 有关的所有双向指针连接。
3. 根据权利要求1所述的数据库跨类査询方法,其特征在于数据库查询语言中包含 描述跨类查询的语法,其是路径表达式或者是和路径表达式相类似的形式,包括跨类查询 的初始类、目标类,跨类查询所经历的类路径,以及跨类査询目标类上的表达式。
4. 根据权利要求1所述的数据库跨类査询方法,其特征在于跨类查询处理采用包括 以下步骤的方法(1) 根据跨类査询描述,确定由初始类G到达目标类Cd所经历的类路径,该类路 径不存在回路;(2) 对于初始类中的每一个对象Os,由其出发,根据数据库系统维护的对象间双向 指针连接,在跨类查询路径所涉及的所有类之间,按照深度优先遍历算法查找相互关联的 对象,直到找到属于目标类的相关对象;(3) 根据跨类查询所指定的目标类上的表达式,采用数据库表达式计算的方法,对目标类上的对象进行计算,从而完成跨类查询执行。
5. —种将权利要求1至4中任一权利要求所述的数据库跨类查询的方法,在面向对 象数据库系统、对象关系数据库系统和对象代理数据库系统中实现数据库跨类査询的应 用。
6. 根据权利要求5所述的应用,其特征在于用双向指针连接来记录相关联对象之 间的语义关系;在面向对象数据库、对象关系数据库和对象代理数据库查询语言中采用路 径表达式来描述跨类查询;面向对象数据库系统、对象关系数据库系统和对象代理数据库 系统在进行跨类查询处理时,对路径表达式进行计算,从而实现面向对象数据库、对象关 系数据库和对象代理数据库的跨类査询。
7. 根据权利要求6所述的应用,其特征在于面向对象数据库系统、对象关系数据 库系统和对象代理数据库系统自动维护相关联对象之间的双向指针连接,包括(1) 相关联对象之间双向指针的自动创建面向对象数据库系统、对象关系数据库系统和对象代理数据库系统自动创建相关联对 象间的双向指针连接,其步骤是当一个类中的对象被创建的时候,找到其所有相关联的对象,根据数据库为每个对象所分配的OID,在数据库系统中记录下新创建对象与其所关联 对象之间的双向指针,新创建对象与其每一个相关联对象间的双向指针由新创建对象的 OID、其所属类的OID、相关联对象的OID和相关联对象所属类的OID等组成;(2) 相关联对象之间的双向指针的自动删除 当一个类中的对象被删除的时候,找到数据库记录的与该对象有关的所有双向指针,并将它们从数据库系统中删除。
8. 根据权利要求6所述的应用,其特征在于描述跨类查询的路径表达式为{<class〉》}+<target>.<expression>,上述路径表达式是基于目标类属性的任意表达式,其中〈class〉为路径中各个类的名 称,〈target〉为目标类,〈expression〉为目标表达式。
9. 根据权利要求8所述的应用,其特征在于路径表达式计算的具体步骤是(1) 检查路径表达式的正确性;(2) 按照路径表达式的导航,从初始类的每一个对象出发,根据数据库系统维护的 对象间双向指针连接,在路径表达式所涉及的所有类之间,查找相关联的对象,直到找到 目标类上的相关对象;(3) 对于上述找到的目标类上的对象,应用路径表达式的目标表达式,按照数据库 表达式计算方法,对目标表达式进行计算。
10. 根据权利要求9所述的应用,其特征在于路径表达式的正确性检验的标准是路 径表达式中前后两个类之间必须具有直接关联关系。
全文摘要
本发明是一种用对象间的双向指针技术实现数据库跨类查询的方法。本方法包括利用对象间的双向指针实现数据库跨类查询机制的设计,以及在对象代理数据库中实现数据库跨类查询的步骤。本发明针对面向对象数据库、对象关系数据库和对象代理数据库中对象具有唯一对象标识符(OID)的特点,能够将数据库中属于不同的类、且具有相互关系的对象借助对象标识符建立起双向指针连接,在数据库查询语言的设计上增加跨类查询描述,利用双向指针连接实现数据库跨类查询。对于对象代理数据库,用双向指针记录源对象和代理对象间的代理关系,同时在数据库查询语言中使用路径表达式来描述跨类查询,从而达到了在彼此具有代理关系的类之间进行跨类查询的目的。
文档编号G06F17/30GK101216844SQ200810046608
公开日2008年7月9日 申请日期2008年1月3日 优先权日2008年1月3日
发明者彭智勇 申请人:彭智勇
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1