首页> 中国专利> 基于范畴纤维丛模型的面向对象数据库系统及其构建方法

基于范畴纤维丛模型的面向对象数据库系统及其构建方法

摘要

本发明提供一种基于范畴纤维丛模型的面向对象数据库系统及其构建方法,包括范畴纤维丛模型处理机、范畴构造定义语言、范畴构造预处理机等,本发明第一步设计并构建基于范畴论的范畴纤维丛模型,然后在此基础上设计与实现范畴纤维丛数据库系统的总体框架,以实现数据库系统对范畴纤维丛模型的完全支持。设计与制定了一个统一的数学模型以实现同时有效地解决传统关系数据库难以直接存取、管理多层次数据构造和多维关系等面向对象的数据结构的弱点,而另一方面现代面向对象数据库由于缺少数学模型基础,所以缺乏正式的数据库定义与操作语言且难以保证对象添加、更新、删除后数据库的完整性、一致性与正确性的缺点。

著录项

  • 公开/公告号CN105447143A

    专利类型发明专利

  • 公开/公告日2016-03-30

    原文格式PDF

  • 申请/专利权人 许源平;

    申请/专利号CN201510822144.X

  • 发明设计人 许源平;

    申请日2015-11-24

  • 分类号G06F17/30(20060101);

  • 代理机构成都正华专利代理事务所(普通合伙);

  • 代理人李蕊

  • 地址 610000 四川省成都市武侯区广福路1号5栋1单元11号

  • 入库时间 2023-12-18 15:12:07

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-12-21

    专利权的转移 IPC(主分类):G06F17/30 登记生效日:20181203 变更前: 变更后:

    专利申请权、专利权的转移

  • 2018-11-02

    授权

    授权

  • 2016-04-27

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20151124

    实质审查的生效

  • 2016-03-30

    公开

    公开

说明书

技术领域

本发明涉及数据库技术领域,具体涉及一种基于范畴纤维丛模型的面向对象数据 库系统及其构建方法。

背景技术

数据库是“按照数据结构来组织、存储和管理数据的仓库”。在经济管理的日常工 作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。 例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性 别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。有了这个“数据仓 库”我们就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职 工人数等等。这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高 的水平。随着人类社会信息化水平的飞速发展,数据库系统已经成为各行各业不可或缺的 工具与工作、生活的基础。J.Martin给数据库下了一个比较完整的定义:数据库是存储在 一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服 务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一 种公用的和可控制的方式进行。

数据库系统的发展大致经历了三个主要的阶段:1)层次和网状数据库,它们分别 以层次模型和网络模型来表示实体构造及其实体之间的关系;它们在七、八十年代非常流 行,在当时数据库系统产品中占主导地位,被合称为第一代数据库,但是它们的数据定义语 言(DDL)和数据操作语言(DML)的过程化程度较高且由于记录之间的联系是通过存取路径 实现的,应用程序在访问特定的数据时必须选择适当的存取路径,这就要求用户必须了解 并操作数据库系统的物理结构的细节,因此学习起来十分复杂,一般用户难以使用;2)关系 数据库(RelationalDatabase-RDB),它以关系演算和关系代数为其数学基础建立了关系 模型,以二维表为其数据结构的组织形式,利用非过程化数据操纵语言(StructuredQuery Language-SQL)进行数据库管理,采用内/外/概念模式的三层模式结构,具有较高数据独立 性,但是关系数据库的外概念模型和内数据模型完全不同,所以在数据存取时需要将现实 世界的对象实体转化为二维关系表,这个转化过程完全凭借数据库工程师的经验且往往非 常复杂,容易出错。3)面向对象的数据库,它通过面向对象的程序设计技术与数据库技术相 结合的方法建立对象模型,其将现实世界中的实体封装为对象及对象之间的关系,并利用 面向对象的程序语言,特别是其中的抽象、封装、继承和多态性来在面向对象数据库系统中 实现、操作对象模型,这样大大提高了对现实世界中复杂科学与工程应用领域中的各种数 据、信息和知识实体的表达、存取和管理能力及软件的可重用性;其主要特点为数据库中的 核心元素是对象,需要将具有共同特征的对象归纳成类,组织类之间的层次关系,构造类 库,所以数据库的整个模式的建模目标是对象类而操作目标是实例对象。在应用时,在类库 中选择相应的类,但面向对象的数据库缺乏严谨的数学基础,操作能力较弱,难以实现查询 结果的闭合。

因此,现在亟需一种能解决上述问题的数据库系统。

发明内容

本发明的目的在于针对现有技术的不足,提供一种基于范畴纤维丛模型的面向对 象数据库系统及其构建方法,该基于范畴纤维丛模型的面向对象数据库系统及其构建方法 可以很好地解决上述问题。

为达到上述要求,本发明采取的技术方案是:提供一种基于范畴纤维丛模型的面 向对象数据库系统及其构建方法,该基于范畴纤维丛模型的面向对象数据库系统包括:

范畴纤维丛模型处理机,用于维护范畴纤维丛模型表示的实体及实体之间的各种复杂 关系,用于提取实体及支持实体和关系的操作,用于翻译关系、约束和推理规则的语义;

范畴构造定义语言模块,利用XML语言来定义范畴纤维丛模型处理机输出的实体和实 体之间的多维关系;

范畴构造预处理机,用于将XML语言定义的实体文件翻译为Java的类声明;

Java语言绑定模块,将Java类定义源代码与所述Java的类声明进行绑定;

Java编译器,对所述类声明、定义和实例范畴进行编译;

输入处理机,对数据库管理文件进行维护,从而维护实例范畴在数据库物理存储模块 中的存储;

数据库物理存储模块,用于对实例范畴进行存储;

范畴对象查询语言,用于将形式化查询语句翻译为Java查询语句;

输出处理机,利用Java的反射机制来指导实例范畴的查询和输出,以及约束与支持所 有实例范畴内部允许的操作,进而在数据库层面上支持各种知识推理规则的运行;

XML解析器,对XML语言进行解析。

进一步的,该基于范畴纤维丛模型的面向对象数据库系统还包括:

实例范畴的处理器,对实例范畴进行存取时用于序列化和恢复实例范畴;

事务支持器,用于维护数据库的原子性、一致性、隔离性及持久性;

物理存储文件的输入/输出流,用于将序列化的实例范畴以二进制的方式输入到物理 文件中。

进一步的,范畴纤维丛模型处理机为范畴化的ODMG3.0标准处理机。

基于范畴纤维丛模型的面向对象数据库系统的构建方法,其特征在于,包括以下 步骤:

S1、构建基于范畴论的范畴纤维丛模型来可视化表达各种复杂对象结构及它们之间的 复杂关系,同时用范畴数学的各种数学构造的代数定义来实现对象的操作和确保各种操作 后数据库的完整性和一致性;

S2、将可视化建模的所述图式翻译为与具体面向对象编程语言相独立的模式代码;

S3、根据所述模式代码生成Java的类声明;

S4、将Java类定义源代码与所述类声明进行绑定,并在所述类声明之上创建一系列实 例范畴;

S5、对所述Java的类声明和所述实例范畴进行编译,并将所述实例范畴存储至所述数 据库中。

进一步的,数据库系统利用Java的反射机制来指导实例范畴的存储,以及约束与 支持实例范畴内部允许的操作。

进一步的,范畴纤维丛模型利用拉回构造表示不同类范畴之间的多层次、多维关 系。

该基于范畴纤维丛模型的面向对象数据库系统及其构建方法具有的优点如下:

(1)设计与制定了一个统一的数学模型,它既能有效地解决了传统关系数据库难以直 接存取、管理多层次数据构造和多维关系等面向对象的数据结构的弱点,也能利用与模型 匹配的本发明中的基于范畴学代数推导的对象定义和查询语言,很好地解决其它面向对象 数据库产品缺乏正式的数据定义与操作语言,在对象更新和查询后难以回存新对象或查询 结果且容易破坏数据库模式的参照完整性和产生前后不一致的对象或它们之间的关系等 问题;

(2)利用范畴论中各种构造的数学特性,将图式表达和形式化规约融合一体,支持各种 复杂物理数据结构的直接存取,避免了传统数据库中对对象的人为拆分和重组问题,从而 大大减小了数据库模式设计过程中的不确定度和产生错误的可能性,确保了在整个过程中 不会有语义和物理结构丢失的问题。而且,且其配套的对象定义与查询语言简单易学(例 如,可以用一套语句存储任意多维关系或多层级生物应用中的基因链)。经过测试它的存取 速度比传统关系数据库(MySQL和SQLServer)快三倍,而存储容量与主流商业数据库产品大 体相当;

(3)范畴纤维丛模型的研制为专业科学与工程应用领域的信息集成、知识融合和它们 的数据库存取难题提供了新的高效解决思路,具有一定的创新价值;

(4)其主要的技术优点还包括:

不需要任何数据结构转换和映射,本数据库支持对所有范畴构造的直接存储与操作 (例如,实例对象范畴和拉回关系构造等);

实例范畴的保存过程中不需要更改任何其对应类范畴的定义;

只用一行代码就可以存储任何复杂的实例范畴,并且可以持久化任何层级的实例范 畴;

可以很容易的被内嵌入任何科学或复杂专业领域的软件系统应用中(整个范畴纤维丛 数据库只有30M大小);

支持Java泛型;

支持ACID事务;

支持复杂链表和树型结构,例如BTree;

支持Client/Server模式;

支持数据库模式(databaseschema)的独立与自动内嵌管理;

支持实例对象的缓存和集成Java原生回收机制;

与Java及C#语言进行了无缝绑定;

基于范畴代数推导方法,研发了专门的实例范畴查询语言;

支持移植和跨平台部署。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,在这 些附图中使用相同的参考标号来表示相同或相似的部分,本申请的示意性实施例及其说明 用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本发明一个实施例的系统构架图;

图2为本发明一个实施例的可视化建模图式;

图3为本发明一个实施例的查询结果的可视化显示示意图;

图4为本发明一个实施例的改造后的拉回构造示意图;

图5为本发明学生选修课程例子的拉回构造建模示意图;

图6为本发明学生选修课程例子的查询过程的范畴自然变换建模示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本 申请作进一步地详细说明。

在以下描述中,对“一个实施例”、“实施例”、“一个示例”、“示例”等等的引用表明 如此描述的实施例或示例可以包括特定特征、结构、特性、性质、元素或限度,但并非每个实 施例或示例都必然包括特定特征、结构、特性、性质、元素或限度。另外,重复使用短语“根据 本申请的一个实施例”虽然有可能是指代相同实施例,但并非必然指代相同的实施例。

为简单起见,以下描述中省略了本领域技术人员公知的某些技术特征。

根据本申请的一个实施例,提供一种基于范畴纤维丛模型的面向对象数据库系 统,如图1所示,包括:

范畴纤维丛模型处理机,用于维护范畴纤维丛模型表示的实体及实体之间的各种复杂 关系,用于提取实体及支持实体和关系的操作,用于翻译关系、约束和推理规则的语义;本 实施例中,范畴纤维丛模型处理机为范畴化的ODMG3.0标准处理机;

范畴构造定义语言,利用XML语言来来结构化、数据化定义范畴纤维丛模型处理机输出 的实体和实体之间的多维关系;

范畴构造预处理机,用于将XML语言定义的实体文件翻译为Java的类声明;

Java编译器,对所述类声明、定义和实例范畴进行编译;

输入处理机,对数据库管理文件进行维护,从而维护实例范畴在数据库物理存储模块 中的存储;

数据库物理存储模块,用于对实例范畴进行存储;

范畴对象查询语言,用于将形式化查询语句翻译为Java查询语句;

XML解析器,对XML语言进行解析。

Java类定义源文件、Java编译器和输入处理机一起实现了实例范畴和它们对应的 类范畴之间的维护机制,主要是维护一个实例对象引用体系。该数据库系统利用Java的反 射机制来指导实例范畴的存储与获取,以及约束与支持实例范畴内部允许的操作,进而在 数据库层面上支持各种知识推理规则的运行,Java反射机制可以在编译期之外的运行期检 查类、接口、变量以及方法的信息,还可以在运行期实例化对象、调用方法、通过调用get/ set方法获取变量的值。

根据本申请的一个实施例,该基于范畴纤维丛模型的面向对象数据库系统还包 括:

实例范畴的处理器,对实例范畴进行存取时用于序列化和恢复实例范畴;

事务支持器,用于维护数据库的原子性、一致性、隔离性及持久性。原子性是指整个事 务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节,事务在执 行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样;一 致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏,具体来说就 是,比如在关系数据库中表与表之间存在外键约束关系,那么你对数据库进行的修改操作 就必需要满足约束条件,即如果你修改了一张表中的数据,那你还需要修改与之存在外键 约束关系的其他表中对应的数据,以达到一致性;隔离性是指隔离状态执行事务,使它们好 像是系统在给定时间内执行的唯一操作,如果有两个事务,运行在相同的时间内,执行相同 的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统,这种属性有 时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅 有一个请求用于同一数据;持久性在事务完成以后,该事务所对数据库所作的更改便持久 的保存在数据库之中,并不会被回滚。

物理存储文件的输入/输出流,用于将序列化的实例范畴以二进制的方式输入到 物理文件中,可支持加密二进制数据输入。

下面结合例子介绍该基于范畴纤维丛模型的面向对象数据库系统的构建方法:如 果几何产品的关键表面部位是存在于两个固体之间的接触滚动,那么这个表面的关键功能 性指标就是耐磨损;

S1、构建基于范畴论的范畴纤维丛模型,利用其建模输出图式来可视化表达各种复杂 对象结构及它们之间的复杂关系,同时用范畴数学的各种数学构造的代数定义来实现对象 的操作和确保各种操作后数据库的完整性和一致性,如图2所示,其中F1和F2是两个忠实 函子,它们负责在将两个子类范畴CLSRelativeMotion和CLSMechanismOfWear注射入它们的父类范畴 CLSSurfaceToFunction的同时保持它们各自层级的所有约束关系;

S2、使用范畴构造定义语言将可视化建模的图式翻译为与具体面向对象编程语言相独 立的模式代码,即定义出类范畴、子类范畴和拉回类范畴,生成.odl文件;

S3、由范畴构造预处理机根据模式代码生成Java的类声明与定义,如下所示:

publicclassSurfaceToFunction{

publicArrowinterObjId_id;

publicArrowinterObjId_Element;

publicArrowinterObjId_RelativeMotion;

publicArrowinterObjId_TypeOfWear;

publicArrowinterObjId_MechanismOfWear;

publicvoidsetArrows(ArrowinterObjId_id,Arrow

interObjId_RelativeMotion,Arrow

interObjId_TypeOfWear,Arrow

interObjId_MechanismOfWear){

this.interObjId_id=interObjId_id;

this.interObjId_Element=interObjId_Element;

this.interObjId_RelativeMotion=interObjId_RelativeMotion;

this.interObjId_TypeOfWear=interObjId_TypeOfWear;

this.interObjId_MechanismOfWear=interObjId_MechanismOfWear;

}

publicvoidsetTargetForIdArrow(intid){

this.interObjId_id.setTarget(Integer.valueOf(id));

}

…………

//setandgetmethodsforarrows

}

另外两个子类范畴(CLSRelativeMotion和CLSMechanismOfWear)也可以同样定义。

S4、在该类声明与定义之上创建一系列实例范畴以承载实际数据;

S5、Java编译器对Java的类声明和实例范畴进行编译,输入处理机将维护一系列面向 对象的数据库管理文件来维护所有实例范畴在数据库物理存储模块中的存储。

该实例范畴存入数据库物理存储模块后,就可以使用范畴对象查询语言进行查询 (这个查询语言就是基于纤维化函子映射、结合、导通的代数推导过程的形式化语言自动翻 译得到的Java查询语句),程序如下所示:

query.constrain(RelativeMotion.class);

query.descend("interObjId_Element").descend("target").constrain(" Solidbody/Solidbody").and(query.descend("interObjId_ RelativeMotion").descend("target").descend("interObjId_Type").descend(" target").constrain("Slibing").and(query.descend("interObjId_ MechanismOfWear").descend("target").descend("interObjId_ImportantLevel") .descend("target").constrain("mostimportant");

本发明的数据库系统的整个数据建模和定义过程都是基于严谨的数学基础,所以其中 引入的人为主观经验性因素较少,避免了可能的出错步骤,所以整个过程相对于关系数据 库来说十分简洁。它可以直接支持客观世界的面向对象的建模与定义,不存在任何的拆分 和重组过程。其对象定义和查询都符合人类对客观世界的以对象为基本元素的理解,例如, 图3显示的查询结果依然保持了数据的物理上的多层次嵌套结构,所以十分容易理解且避 免了多种外键连接。

本发明中的范畴纤维丛模型是将现实世界抽象成若干个具有相同结构的类,即类 范畴Category,并通过多层次的范畴如内部对象、类范畴、子类范畴、实例对象范畴、拉回构 造范畴,以及多层次的态射如箭头态射、函子、纤维化函子、拉回构造、自然变换,来对问题 域内的各信息和知识实体进行详细描述。此外,范畴纤维丛模型利用拉回构造表示不同类 范畴之间的联系;利用纤维化函子变换、子类范畴和自然变换构造解决了模型的查询以及 查询结果的封闭性等问题。

由范畴论中态射的层次结构可知,范畴纤维丛模型中的态射可以按不同数据结构 的嵌套层次定义与表达不同层次的多维关系,各层次态射可以很好的支持复杂的多层次对 象之间的关系表达,同时它还提供了正式的、独立的关系构造,其也可以被定义为一个类范 畴,因此面向对象数据库中关系操作与查询问题得到了很好地解决。另一方面,本发明中定 义的态射类型机制不仅可以表示一对一、一对多和多对一的联系,还可以直接表示多对多 的联系。

拉回构造为本发明的核心建模构造,本发明对通用的拉回构造进行了改造,如图4 所示,图中的范畴建模图式中的范畴函子态射FfFd=FgFe必须导通以保证关系定义的参照 完整性约束,CLSA和CLSB是两个类范畴,RELi是它们之间的关系,CLSA×RELiCLSB是范畴积 CLSA×CLSB的一个实例集合的一个子集,即真实上的关系实例,r’是R’的冥集中的一个元 素(R’包含了所有因关系关联产生的额外信息,也就是除了CLSA和CLSB包含的其它信息)。 CLSRi是RELi的终结内部对象以使得关系类范畴RELi关闭。同时,因为这个内部对象实际 上在下一知识细化层级上被具体化为类范畴,所以它又确保了关系查询结果与操作的闭合 性。一个CLSRi的一个实例对象OBJ(j)CLSRi包含了CLSA和CLSB它们各自的所有态射的实 例的冥集,以及这些态射的相应恒等态射的实例和所有态射所对应的内部对象的实例对 象。此外,这些态射在CLSA和CLSB中的恒等状态、结合状态和导通状态必须在CLSRi中维持 和保留.对每一个范畴积CLSA×RELiCLSB的对象实例v,Fd(v)=a必须存在于CLSA的一个 实例对象集合中而Fe(v)=b必须存在于CLSB的一个对象实例中,以确保参照完整性约 束。本发明利用类型机制来使拉回构造可以很好的表达关系的语义:

(1)如果Ff的类型是1M(单态射,集合论中的单射),那么CLSA的任何一个实例对象 只可能参与一次RELi的实例对象。然而,如果Ff不是1M,那么CLSA的一个实例对象可能 参与了多次这个关系的不同实例对象。而且,CLSA的一些实例对象可以是没有参与任何一 个RELR实例对象的,所以CLSA的关系参与性(membership)是可选择的。函子Fg的类型如果 是1M则有相同特性。

(2)如果Ff的类型是1EP(满态射,集合论中的满射),那么CLSA的所有实例对象都 必须参与一次RELi的实例对象。这意味着CLSA关系参与性是强制的。函子Fg的类型如果 是1EP则有相同特性。

(3)如果Ff的类型是1ISO(同构态射,集合论中的双射),那么CLSA的所有实例对 象都必须参与一次且只有一次RELi的实例对象,因此CLSA的参与性是强制的。函子Fg的类 型如果是1ISO则有相同特性。

以学生选修课程为例,如图5所示,将学生和选修课程分别作为一类范畴CLSStudent和CLSCourse,这两个类范畴的内部始对象可以定义关系模型中的“主键”,但是在这里被定义 为对象的标识符,即学号attSN和课号attC#。这样,上表的选修关系可以用图5所示的拉 回构造PULStu_Course进行构造。该拉回构造也以独立的实例范畴的方式存储在数据库系统 中,称为拉回实例范畴。拉回范畴主要由拉回构造的所有态射与态射所涉及的类范畴、相关 范畴的标识符以及范畴之间的有约束积构成。设学生类范畴包括内部对象:学号attSN和 姓名attsname,选修课程类范畴包括课号attC#和课程名attcname两个范畴内部对象。则 拉回范畴PUL由以下类范畴、范畴内部对象和态射组成:

ATTPULStu_Course={attSN*PULStu_CourseattC#,attSN,attC#,attsname,attcname,attgrade}

ARRPULStu_Course={attSN*PULStu_CourseattC#→attSN,attSN*PULStu_CourseattC#→attC#, attSN→attsname,attC#→attcname}

其中,attSN*PULStu_CourseattC#表示学生类范畴和课程类范畴在选修约束下的积。在拉 回类范畴PULStu_Course中,还增加了一个对象,即选修课程的成绩attgrade

用多层次类范畴、内部对象、态射等构造对实体以及实体之间的关系进行表示与 定义得到的范畴化的对象建模图式,其查询结果可以通过范畴之间的忘却纤维化函子变换 得到。例如:“请输出选修高等数学课程且成绩在90分以上的学生姓名”。该项查询的查询模 式如下:

STEP1:OBJCLSCourse→OBJCLSOutput1

(TheselectedarrowsetinOBJCLSOutput1isHom={idCourse→attC#,idCourse→ attcname,idCourse→attgrade,attC#→attcname,attC#→attgrade};Theselectedinternal object(attribute)setinOBJCLSOutput1isATT={idCourse,attC#,attcname,attgrade|attcname=‘高等数学’)

STEP2:OBJRPULStu_Course→OBJCLSOutput2

(TheselectedarrowsetinOBJCLSOutput2isHom={idRSelect_Course→attcname, idRSelect_Course→attgrade,idRSelect_Course→attSN,idRSelect_Course→attsname};Theselected internalobject(attribute)setinOBJCLSOutput2isATT={idRSelect_Course,attcname, attgrade,attSN,attsname|attcname∈ATTofOBJCLSOutput1,attgrade>getGrade(90)}})

STEP3:OBJCLSOutput2→OBJCLSStudent

(TheselectedarrowsetinOBJCLSStudentisHom={idStudent→attSN,idStudent→ attsname};Theselectedinternalobject(attribute)setinOBJCLSStudentisATT= {idStudent,attSN,attsname|attSN=∈ATTofOBJCLSOutput2})

上述查询过程只是基于函子变换与结合的形式化语言描述,本发明的面向对象数据库 系统会自动将这个形式化语言翻译为范畴对象查询语句。此外,因为是面向对象的查询语 言,实际的查询过程还包含一个将范畴模式映射到实例范畴的函子变换,又称忠实函子。如 上述查询过程的STEP1和STEP2,有如下两个函子存在:

FCLSCourse-OBJCourse:CLSCLSCourse→OBJCLSCourse

FPULStu_Course-OBJStu_Course:PULStu_Course→OBJStu_Course

其中,PULStu_Course与OBJStu_Course分别用于定义拉回类范畴PUL的类范畴与其实例范 畴,纤维化函子FPULStu_Course-OBJStu_Course表示这两个范畴间的变换;CLSCLSCourse与OBJCLSCourse分别定义CLSCourse的类范畴与其实例范畴,纤维化函子FCLSCourse-OBJCourse表示这两个范畴间 的变换。

STEP1和2的实际查询过程还隐含约定了上述两个函子之间的自然变换σ: FCLSCourse-OBJCourse→FPULStu_Course-OBJStu_Course。对于设:

σa=FCLSCourse-OBJCourse(dom(f))→FPULStu_Course-OBJStu_Course(dom(f))

σb=FCLSCourse-OBJCourse(cod(f))→FPULStu_Course-OBJStu_Course(cod(f))

如图6所示的自然变换结构中,对于拉回范畴PUL中的所有态射f,由于dom(σaοF CLSCourse-OBJCourse(f))=dom(σbοFPULStu_Course-OBJStu_Course(f)),cod(σaοFCLSCourse-OBJCourse(f)) =cod(σbοFPULStu_Course-OBJStu_Course(f));则有σaοFCLSCourse-OBJCourse→FPULStu_Course-OBJStu_Courseο σb成立。由此可知,实际查询过程的每一步都可以看作是一个范畴的自然变换。

由上述查询形式化表达可知,查询在数据库模式上可以看作是一系列忘却纤维化 函子变换的合成,且每一步查询的结果总是原范畴的子范畴。由于子范畴和原范畴的结构 是继承关系,因此查询的结果是封闭性的,即可以对每一步的查询结果进行进一步查询,也 可以将其存回数据库系统中。为了从不同角度观察数据库中的数据,即得到数据库外模式 的不同视图,本发明也通过范畴纤维化模型中的子范畴来实现了面向对象数据库的视图功 能。

以上所述实施例仅表示本发明的几种实施方式,其描述较为具体和详细,但并不 能理解为对本发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离 本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明保护范围。因此本发 明的保护范围应该以所述权利要求为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号