(计算机应用技术专业论文)sddood系统中继承的方法与实现.pdf_第1页
(计算机应用技术专业论文)sddood系统中继承的方法与实现.pdf_第2页
(计算机应用技术专业论文)sddood系统中继承的方法与实现.pdf_第3页
(计算机应用技术专业论文)sddood系统中继承的方法与实现.pdf_第4页
(计算机应用技术专业论文)sddood系统中继承的方法与实现.pdf_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

承诺书承话吊 本人郑重声明:所呈交的学位论文, 是在导师指导下独立完成的,学位论文的 知识产权属于山西大学。如果今后以其他 单位名义发表与在读期间学位论文相关的 内容,将承担法律责任。除文中已经注明 引用的文献资料外,本学位论文不包括任 何其他个人或集体已经发表或撰写过的成 果。 稚论文储啉j 始低、 2 0 0 鼻局蜘 摘要 演绎数据库与面向对象数据库是对关系数据库技术的两大扩展。 演绎数据库既扩展了关系数据库的查询能力,又保持了关系数据库的 数学基础。面向对象数据库能够提供丰富的数据建模能力。因此,它 们在数据库系统的发展中都占据着很重要的地位。而演绎对象数据库 不仅具有演绎数据库的推理能力,而且具有面向对象数据库强大的建 模能力,也就是说它结合了二者的优点,现在已经成为数据库发展的 一个新方向。 本文主要在以前我们自行设计的演绎对象数据库实验系统 s d d 0 0 d 和演绎对象数据库语言s d d o o l 基础上,对系统进行了 改进和扩充,进一步探寻面向对象数据库与演绎数据库技术相结合的 途径。本文所做的主要工作如下: l 、给出了演绎对象数据库s d d o o d 的系统结构图,然后对系统图 中涉及到的每一个模块的功能进行了详细的解释。 2 、提出了演绎对象数据库的数据模型所涉及的概念和语言的语 法。给出了数据库中一个具体模式和实例的例子以及它们所对应的结 构图。 3 、研究演绎对象数据库的重要特性之一一一继承性。主要提出实 现继承的多种方法和解决多继承时冲突的方法。即:覆盖继承、继承 路径的选择、外在的重命名、用户定义优先、全部继承和规则继承的 回退。 4 、给出了上述问题的详细实现算法。包括模式输入时产生实例表 结构算法、输入实例算法、查询算法和系统的三种更瓶算法,即:更 新属性算法、更新规则算法和更新实例算法。并对每个算法的时间复 杂度进行了简单的分析。 s d d 0 0 d 系统是在w i n d o w s 2 0 0 0 环境下,采用l e x & y a c c 对 s d d o o l 语言进行分析,利用s q ls e r v e r2 0 0 0 作为外延数据库,使 用v c + + 6 o 的单文档,实现了一个集成的窗口环境。这个窗口是一 个图形用户接口( g u i ) 。通过这个窗口,用户可以进行创建类和它的 对象以及查询、更新数据库中已经存在的信息等操作。 实验表明,s d d o o d 系统不仅支持面向对象数据库的核心概念, 如:类、类层次、对象、属性、规则、继承和封装等,而且具有演绎 数据库的推理功能。文中提出的继承方法一一规则继承的回退,实验 结果显示出这种方法对提高系统的查询能力是有效的。 关键词:演绎对象数据库;类层次;继承;回退 a b s t r a c t d e d u c t i v ed a t a b a s ea n do b j e c t o n e n t e dd a t a b a s ea r et w oe x t e n s l o n s t ot h er e l a t i o nd a t a b a s et e c h n o l o g y d e d u c t i v ed a t a b a s eb o t he x t e n d sm e q u e r ya b i l 时o fr e l a t i o n d a t a b a s ea n dk e 印st h ef o u n d a t i o no fi t s m a t h e m a t i c s 0 b j e c t o r i e n t e d d a t a b a s ec a i l p r o v i d e a b u l l d a n td a t a m o d e l i n ga b i l i t y s o t h e y t a k e u pv e r yi m p o r t a m s t a t i o n si nt h e d e v e l o p m e mo fd a t a b a s es y s t e m b u td e d u c t i v eo b j e c t - o r i e n t e dd a t a b a s e n o to n l yh a sr e a s o n i n ga b i l i t yo fd e d u c t i v ed a t a b a s e ,b u t “s oh a sp o w e r 如l m o d e l i n ga b i i i t yo fo b j e c t - o r i e n t e dd a t a b a s e i tc o m b i n e st h e i ra d v a n t a g e s a n dh a sb e c o m ean e wd i r e c t i o ni nt 1 1 ed e v e l o p m e n to fd a t a b a s e t h ep r i m a r yw o r ko fm et h e s i si st o i r n p r o v e a 1 1 de x t e n do n s d d 0 0 de x p e r i m e n ts y s t e ma i l di t sl a n g u a g ed o o lt h a tw a sd e s i g t l e d b yu sb e f o r e w eg om r t h e rt os e a r c h 印p r o a c h e st oc o m b i n ed e d u c t i v e d a t a b a s ea n do b j e c t o r i e n t e dd a t a b a s e t h ec e n t r a lw o r ko fm em e s i si sa s f 0 1 l o w s : 1 p r o v i d et h es y s t e ms t r u c t u r ef i g u r eo fd e d u c t i v eo b j e c o o r i e n t e d d a t a b a s es d d 0 0 da n ds p e c i f i c a i l ye x p l a i nm ef u n c t i o no fe a c hm o d u l e i n i t 2 p u tf o n v a r dt h ec o n c e p t sa n dg r a m m a ro fm el a n g u a g ei n v o l v e di n t h ed a t am o d e lo ft 1 ed e d u c t i v eo b j e c t o r i e n t e dd a t a b a s e p r o v i d es p e c i f l c d a t a b a s ee x a m p l e so fs c h e m aa n di n s t a n c ea n dc o r r e s p o n d i n gs t m c t u r e f i g u r e 3 r e s e a r c hi n h e r i t a n c et h a ti so n eo fi m d o r t a n c ec h a r a c t e r i s t i c si n d e d u c t i v eo b j e c t o r i e n t e dd a t a b a s e p u tf o r w a r dm a n ym e t h o d st or e a l i z e i n h e r i t a n c ea 1 1 ds o l v ec o n n i c ti nm u l t i i 1 1 1 1 e r i t a n c e t h e s em e t h o d sa r e : o v e r r i d i n gi n h e r i t a n c e ,i n h e r i t a n c ep a t hs e l e c t i o n ,e x p l i c i tr e n a m i n g ,u s e r s p e c i f i e dp r i o r i t y , t o t a li n h e r i t a n c ea n dt h e b a c k t r a c k i n go fi u l e i n h e r i t a n c e 4 g i v et h e r e a l i z i n ga l g o r i t h m s a b o v ep r o b l e m s t h e yi n c l u d e s c h e m aa l g o r h 也a tc a np r o d u c es t m c t u r eo fm s t a i l c et a b l e ,i n p 删i n g i n s t a n c ea l g o r i t h n l ,q u e r y “g o r i m ma n da l g o r i 衄f o ru p d a t m gt h es y s t e m t h el a s ta l g o r i 衄c o n s i s t so ft l l r e ep a r t s :u p d a t 抽ga t t r i b u t e ,u p d a t i n gr u l e a n d u p d a t i n gi n s t a n c e l a s t l y t i m ec o m p l e x i t y f o re a c h a l g o r i t l l m i s s i m p l ya n a l y z e d t h e s y s t e m i sr e a l i z e di nw i n d o w s 2 0 0 0c i r c u m s t a n c e i tu s e s l e x & y a c ct oa n a l y z es d d o o li a n g u a g e s q ls e r v e r2 0 0 0i sa d o p t e d a se x t e n s i o nd a t a b a s e a ni 1 1 t e 目a t e dw i n d o wi sr e a l i z e du s i n gs i n g l e d o c u m e n to fv c + + 6 o i ti sag r a p hu s e ri n t e r f a c e ( g u i ) t h r o u 曲w h i c h u s e rc a ne s t a b l i s hn e wc l a s sa 1 1 di t so b j e c t s ,q u e r ya n du p d a t ei n f o n n a t i o n t h a tw a ss t o r e di nt h ed a t a b a s e e x p e r i m e n ts h o w sm a ts d d 0 0 ds y s t e mn o to n l ys u p p o r t st h e c e m r a lc o n c 印t so fo b j e c t - o r i e n t e d ,s u c ha sc l a s s ,c l a s sh i e r a r c h y o b j e c t , a t t r i b u t e ,m l e ,i n h e r i t a n c ea n de n c 印s u l a t i o n ,b u ta l s oh a sr e a s o n i n ga b i l i t y o fd e d u c t i v ed a t a b a s e t h ei n h e r i t a n c em e m o do fm l eb a c h r a c k i n gi s p r o p o s e di nt h e t h e s i s ni s p r o v e de f i e c t i v e l yt h r o u g he x p e r i m e n t i t i m p r o v e sm eq u e r y i n ga b i l i t yo f t h es y s t e m k e y w o r d s :d e d u c t i v e o b j e c t o r i e n t e dd a t a b a s e ; c l a s s h i e r a r c h y ; i n h e r i t ;b a c k t r a c k i n g s d d o o d 系统中继承的方法与实现 第一章引言 1 1 论文的研究背景 自从二十世纪7 0 年代以来,关系数据模型 1 】以其概念简单、结构清晰,并且 具有用户容易理解和使用的特性而蓬勃发展起来,在实际的商用数据库产品中得 到了广泛的应用。关系数据模型具有严格的数学基础和简洁性,以它为数据模型 的关系数据库( r e l a t i o nd a t a b a s e ,简称r i ) b ) 对于长期的数据存储、数据检索和受 限的数据共享来说是足够的。但是,在计算机辅助设计、软件工程、办公自动化、 图形和图像处理、人工智能以及许多其它领域的应用中,使用关系数据模型会受 到许多限制,在文献 2 中有详细说明。例如:从一个“真实世界”的模型向一个 “具体实现”的数据模型转化时会遇到困难:查询语言不是完全独立的语言,经 常需要嵌入到一个程序语言中;在查询语言和应用语言的数据结构之间存在差异, 通常称作“阻抗不匹配问题”;无法定义新的数据类型等。从二十世纪8 0 年代中 期开始,研究者们提出了不同的扩展关系数据模型的方案口叫。这些方案的目标虽 然不同,但是大多数的努力都是为了提供一个更丰富的数据模型或者通过提供一 种集成语言来表示数据、视图、约束、查询和应用。 从当前的发展来看,面向剥象数据模型提供了丰富的数据建模能力,在数据 库系统中占据着很重要的地位;演绎数据库扩展了关系数据库的查询能力,并且 保持了关系数据库的数学基础。因此,面向对象数据库 ”( o b j e c t o r i e n t e d d a t a b a s e ,简称o o d b ) 和演绎数据库1 8 j ( d e d u c t i v ed a t a b a s e ,简称d d b ) 成为对关 系数据库技术的两大扩展。现有的发展趋势表明:现代数据库应该能够管理数据、 对象和知识。然而关系数据库只能管理数据,面向对象的数据库对组织和管理结 构化的对象提供了一个很好的方式,把结构和行为部分结合成一个统一的框架, 但缺乏查询的逻辑基础,因而不能管理知识;演绎数据库提供了基于逻辑的推理 和查询,有固定的逻辑基础,但它缺乏面向对象数据库所能提供的强大的建模能 力,因而不能管理对象。所以数据库技术与人工智能技术、面向对象程序设计技 术相互渗透,相互结合而形成了演绎的面向对象数据库f d e d u c t i v eo b j e c t o r i e n t e d d a f a b a s e ,简称d o o d ,以下简称为演绎对象数据库) 。这种数据库已经成为当前 数据库技术发展的主要特征1 9 】。 当然,演绎数据库和面向对象数据库的结合不是将两个模型的简单组合,而 是在深层次的耦合。因此演绎对象数据库不可能完全保留演绎数据库和面向对象 山西大学2 0 0 5 届硕士研究生学位论文 数据库的所有优势,只要性能比合理就达到了目的。但是如何有机地将二者结合 起来,仍然是一个具有挑战性的任务【1 0 】。在对象的形式化定义上需要做进一步的 研究。尽管目前的标准化工作已经展开,o d m g 9 3 文本的推出显示了人们在这方 面所做的努力。演绎数据库由于具有成熟的理论基础,已经取得了一致的认识: 而面向对象数据库本身并不存在成熟的理论基础,因而缺少这样的共识。这使得 演绎对象数据库还存在许多问题需要解决,当前的各种研究方案也很难为所有的 人接受。 另方面,由于目前还没有成熟的商品化的演绎数据库系统,大多数的研究 成果只是一些原型系统。在这些原型系统上进行面向对象的扩充需要大量的改写 工作并且必须保持原系统的性能。所以,演绎对象数据库离实用化还有很长一段 路要走。 1 2 实现演绎对象数据库的原则和方法 1 2 1 实现演绎对象数据库的基本原则 实现一个演绎对象数据库系统时,应该考虑以下的三条基本原则: ( 1 ) 支持演绎。系统必须提供一个演绎规则语言,它能够对存储的数据进行 推理。在规则语言中,变量匹配,递归谓词定义等标准特性是有效的。 ( 2 ) 支持面向对象。系统必须提供个面向对象模型( o b j e c t o r i e n t e dm o d e l ) 。 该模型包括结构和行为两个方面。模型的基本特性如继承、类和对象标识应该由 规则语言处理。 ( 3 ) 支持数据库管理系统( d a t a b a s em a n a g es y s t e m ) 。系统必须提供一个 d b m s 系统需要的核心功能。在系统中应该实现a c i d 事务和数据独立性。 1 2 2 实现演绎对象数据库的方法 演绎对象数据库的实现方法分为以下四种1 3 】: f 1 ) 扩充r d b 系统。由于目前市场上广泛使用关系数据库,所以从关系数据 库平稳过度到d o o d 显然是一个很好的方法。 f 2 ) 扩充d d b 系统。目前大部分演绎数据库系统是基于d a t a l o g 的系统,其 优点是实现了递归查询求值和许多查询优化技术。从技术的观点来看,主要的问 题是在引入面向对象特征的同时如何保持系统良好的性能。具体的解决方法是在 演绎器中引进c + + 中使用的那种面向对象的优化技术。 ( 3 1 扩充o o d b 系统。由于对象数据库系统都与一个面向对象的程序设计语 s d d 0 0 d 系统中继承的方法与实现 言密切相关,所以对象数据库比演绎数据库更容易被人们接受,事实上它也更实 用。因此扩充对象库的方法是比较可行的。目前已有“对象关系数据库”出 现,这类系统再加上对简单递归( 如传递闭包) 的s q l 语言的支持,即实现了 d o o d 的部分特征。 ( 4 ) 从头设计。从头开始构建d o o d 的难度比较大,但是如果做得好,则 是最有效的。 从目前提出的理论模型来看,大量的工作是采用扩充d d b 方法来进行的。可 以形象地将d o o d 表示为:d o o d = d e d u c t i o n + 0 0 + d b m s 【14 1 。 1 3 国内外的发展动态 关于演绎对象数据库的研究最早可以追溯到二十世纪八十年代后期。它与面 向对象数据库的研究是紧密相关的,甚至可以说二者是平行交叉发展的。目前对 演绎对象数据库的研究呈现多样性,各种方案也大致刻画了对象的主要特征。目 前国内外已经出现了不少原型系统和具有影响力的理论模型。例如:r o c k & r o l l , c h i m e r a ,d a t a l o g + + ,r o l & r o l 2 ,d o d m 以及s d d o o d 等。下面简要地介绍 一下这些系统。 ( 1 ) r o c k & r o l l 15 】( 1 9 9 5 ) r o c k ( r u l eo b j e c tc o m p u t a t i o nk e m e l ) & r o l l ( r u l eo b j e c tl o g i cl a n g u a g e ) 用对象管理器来管理用一阶逻辑定义的数据模型,使用永久c + + 类作为类型定义。 r o c k 是专门针对这种数据模型的编程语言,它可以定义对象、类和方法,是唯 一可以更新数据库状态的编程语言。r o l l 是针对数据模型的查询语言。它与传 统的一阶逻辑程序表达形式一样,可以定义规则并在外延库上进行查询。该系统 包含三个紧密集成的模块:对象存储,r o l l 解释器和r o c k 解释器。 ( 2 ) c h i m e r a 【1 6 ( 1 9 9 8 ) c h j m e m 是一种面向对象数据模型语言。这种语言支持面向对象数据模型的一 般特征,如:对象标识、复杂对象、用户定义操作、类、继承等。该语言既可以 利用演绎规则定义约束,也可以规定属性的来源。把引入规则后带来的几个问题变 成了面向对象的数据。 ( 3 ) d a t a l o g + + ( 19 9 9 ) d a t a l o g + + 是d a t a l o g 在面向对象方面的扩展。该系统在一个纯逻辑的框架内, 具有大多数面向对象的特征,如:封装,带忽略的继承,多继承中冲突的解决等。 山西大学2 0 0 5 届硕士研究生学位论文 在d a t a l o g + + 中,用户可以编写类和对象来模拟其应用领域。系统中使用一种变 形的算法将类和对象写成逻辑子句的形式。它的演绎数据库系统可以接收这种形 式。 f 4 ) r ol 18 2 1 1 & r o l 2 【2 2 【2 3 1f 1 9 9 8 ) r o l ( r u l e b a s e do b j e c tl a i l g u a g e ) r o l 2 是加拿大r e g i n a 大学开发的一个 演绎对象数据库系统。r o l 2 是在r o l 基础上发展起来的,它被称为是一个真正 的演绎对象数据库系统。r o l 把面向对象技术与演绎技术结合的比较完善。系统 不仅支持对象标识、复杂对象等概念,而且也支持引用与函数依赖。系统中用函 数子来构造结构化的值和集合。在文献【2 4 】中提供了r o l 较完整的语义。r o l 2 中 提供了解决多继承冲突的方法。如:子类的约束是它的超类约束的交集或重新定 义属性而忽略掉继承冲突,继承路径的选择等。 ( 5 ) d o d m 2 5 】 d o d m 是上海交通大学开发的,其数据模型是d o d m 。在该系统中引入了 事务的概念,这对于将对象的结构、行为与演绎数据库集成具有重要的意义。系 统中提出了一种继承的方法,即:显式地区别类和型的概念,也就是将类和型分 离。通过型间的偏序关系来刻画继承性,体现出继承的语义,使得继承统一到型 间的偏相似关系上。 ( 6 ) s d d o o d s dd 0 0 d 是山西大学研究的一个演绎对象数据库实验系统。2 ”。在系统中首先 定义了一种演绎对象数据库语言s d d 0 0 l 【2 7 ;随后提出了一种得到派生类的方法 f 2 ”,即利用规则生成子类,并给出了具体的实现算法。后来又提出了在系统中解 决非单调的多值结构和行为规则的各种继承方法【2 9 1 。 1 4 本文的工作 综上所述,在过去的十年中,研究者们提出了许多演绎对象数据库语言。在 那些系统中,继承性作为对象设计的重要特征之一而受到广泛关注。但是至今还 没有合适地解决下面的两个问题 2 4 】:一个是非单调的多值结构和行为规则的继 承;另一个是在所定义的类里,基于规则的行为的封装。本文要做的工作是在讲 述数据模型应该涉及到的概念和语法的基础上,对以前设计的演绎对象数据库实 验系统s d d o o d 和对应的s dd o o l 语言进行改进和扩充。针对继承问题进行充分 地研究,存系统中实现文献【2 8 】中提出的多种继承方法,其中包括了多继承时解决 s d d o o d 系统中继承的方法与实现 冲突的方法。本文提出的一种新的继承方法一一行为继承的回退,更加完善了 s d d o o d 系统,提高了系统的查询能力。 s d d o o d 系统是在w i n d o w s 2 0 0 0 环境下,采用l e x & y a c c 对s d d o o l 语言进行词法、语法分析,利用s q l s e r v e r 2 0 0 0 作为外延数据库,使用v c + + 6 o 【” 的单文档界面来开发的。本系统具有一个集成的窗口环境,在该窗口中输入 s d d o o d 系统的模式、实例、查询和更新语句,可以用来操纵系统, 并对系统运行情况以及操纵结果进行显示。 本文的组织如下: 第二章介绍演绎对象数据库系统s d d o o d 数据模型所涉及的概念和s d d 0 0 l 语言的语法。 第三章介绍s d d o o d 系统的结构图以及结构图中各模块的功能。 第四章提出了在模式输入过程中要实现的各种继承方法,包括解决多继承冲 突的方法。 第五章介绍模式、实例、查询和更新的具体实现算法,并对算法进行了简单 分析。 第六章介绍具体的模式和实例输入数据库后,对该数据库进行查询和更新, 进一步说明了系统的功能。 第七章对s d d o o d 系统进行了评估,总结本文的工作,提出进一步研究的考 虑,探讨了有关的发展方向。 山西大学2 0 0 5 届硕士研究生学位论文 第二章相关的概念和语言的语法 2 1 s d d 0 0 d 系统所涉及的几个概念 ( 1 ) 对象标识:对象标识是用来标识现实世界中某个类的一个具体实例,相 当于面向值的数据库中的主码。在演绎对象数据库中,每个对象由系统分配一个 唯一的对象标识,对象标识与对象之间的关系是固定不变的。对象标识可以产生、 删除,却不能更改。 ( 2 ) 对象:现实世界中的一个实例称为一个对象,用对象标识和它的属性值 一起来描述。 ( 3 ) 类:一些具有相同内部结构的对象组成的集合称为类。也就是说,类是 这些对象具有的属性和方法的抽象。对象属于的类被称为对象的直接所属的类。 类可以分为五种:值类、对象标识类、算符类、元组类和集合类。 值类是指原始类,如整型i n t 、实型n o a t 、字符串型s 仃i n g 等,它们是预先定 义的类。对象标识类规定了现实世界实体的集合,如:p e r s o n 。算符类是算符对 象的集合,表示现实世界中实体之间的联系。例如:i l y ( p e r s o n ) ) 表示f 抽i l y 类是由p e r s o n 类的集合组成。元组类表示元组的集合。例如:a d r e s s :( c i t y s t r i n g , s t r e e t s t r i n g ) 是元组类,表示a d r e s s 由c i t y 和s t r e c t 两个属性组成。集合类表示同 类集合的聚集,例如:p a r e n t s : p e r s o n ) 表示p “e n t s 是由p e r s o n 组成。为了简单, 本文通常使用对象标识类。 f 4 ) 类属性:类中抽象出来的对象具有的共同特征称为类属性。属性值所属 的类同样可以有值类、对象标识类、算符类、元组类和集合类。为了简单,本文 通常使用值类。 f 5 ) 类方法:类中定义的行为规则称为类方法。包括其名字、参数以及具体 实现。方法的名字和参数提供了方法的一个外部接口,类的对象可以调用类方法。 f 6 1 类层次和继承:特殊类的对象可以拥有其一般类的属性和方法,称为特 殊类对一般类的继承。通过继承,类和它的子类之间构成了类层次。这样,子类 的一个对象逻辑上属于它的超类,成为超类的一个f i j j 接实例。 r 7 1 封装:类的属性和方法结合成一个独立的系统单位,尽可能隐藏类内部 的细节。通过类的对象来调用类的方法,称为系统支持封装。封装性为对象提供 了个抽象的接口,使得对象达到了某种程度上的数据依赖。 s d d 0 0 d 系统中继承的方法与实现 2 2s d d 0 0 l 的语法 ( 1 ) 模式:模式是系统中定义的类和它的直接子类的集合。类用来描述对象 的结构和行为,它的结构部分由一组属性定义组成,它的行为部分由一组用规则 定义的方法组成。其基本格式如下: c li s ac 2 ,c 3 ,c n a 1 ,a m ,r l ,r n ; 其中,c l 是定义的类名, c 2 ,c 。是c i 的超类。a 1 ) ,a 。( m 0 ) 是类里定义 的属性,r l ,心( n o ) 是类里定义的行为规则。 a ( o i m ) 的具体形式是:a j :c 。; 其中,a 。是属性名,c 。是该属性所属的类型。 r i ( o i n ) 是类里定义的规则,它由两部分组成:规则名和所执行的操作。其 定义形式为: r t ( c i ,c 。) :c r r u j e _ d e f i l l i t i o n s ) ; 其中,r 是规则名,。h ,c 。是规则用到的属性及其所属的类,其形式为: a 。:c 。( o i n ) c r 表示规则执行后得到的值所属的类。花括号中的部分是规则的具体实现形 式。其格式为: 规则头:规则体; 规则头与规则名相同,都是r ,规则体是规则的具体实现形式。 ( 2 ) 实例:实例是对象的集合。在实例数据库中,对象用对象标识和它的属性值 表示。它在以该类类名为关系名的表中,以一个元组的形式存在。对象属于的类 被称为它的直接所属类。一个对象只有唯一所属的直接类,超类是它的间接类。 所以继承性使得一个对象逻辑上属于多个类。这里,只给出实例直接所属类的定 义形式: c :o 【a 1 :c i ,a n :c n 】 其中,o 是对象标识,c 是对象所属的直接类,a :c 。( o i n ) 是实例的属性 值定义。由于继承,每个实例具有它所属类以及它的超类的属性定义,所以可以 给出它的超类的属性值定义,如果没有给出,系统会自动给属性值赋空值n u l l 。 ( 3 ) 查询:查询是对数据库的操纵语言。在s d d o o l 语言中使用统一的查询表 达形式: ? :查询内容: 山西大学2 0 0 5 届硕士研究生学位论文 其中,? :一是查询表达式的头部,查询内容是待查询的d o o l 语句。 ( 4 ) 更新:更新命令用来操纵数据库,s d d 0 0 l 语言提供了两种基本的更新命 令,其格式如下: i n s e r tl 1 ,l 2 ,l n ; d e l e t ei 1 ,l 2 ,l n ; 其中,i n s e r t 表示向数据库中插入信息,d e l e t e 表示从数据库中删除信息,l 1 , l 2 ,l n 是待更新内容的语句表达式。这两条简单的语句可以进行组合后,可以 形成更加复杂的更新形式。 23 模式和实例的具体例子 例ls d d o o l 语言的模式定义 c l a s sp e r s o n b i n h y e a r :i n t ;,出生年份 a g e ( b i r t h y e a r :i n t ) :i n t ( a g e :一2 0 0 5 _ b i r t i l y e a r ) ; 】 c l a s se m p l o y e ei s 8p e r s o n r o o m :i n t :房间号 n u m b e r :b i g i n t ; 雇员号 w o r k y e a r :i n t : 工龄 p h o n e :i n l ;,办公电话 s u b s i d y ( w o r k y e a r :i n t ) :i n t s u b s j d y :一w o r k y e a r 1 0 ) ;s u b s d y 表示津贴 】 c l a s ss t u d e n ti s ap e r s o n m o m :v a f c h a r ;房间号 n u m b e r :i n t :学号 e n r o l l y e a r :i n t ;入学时间 p h o n e :b i g i n t ; 联系电话 d e p a f t m e n t :v a r c h a r ;,惭属的系 c o n t a c t n u m ( p h o n e :b i g i n t ) :i n t c o n l a c f n u m :一p h o n e ) ;c o m a c t n u m 表示联系方式 】 c i a s sw s t u d e n ti s ae m p l o y e e ,s t u d e n t 【 w s t u d e n t 表示在职学生 c r e d i t h o u r :i n t :学分 d e p a r t m e m :n o n e ;不继承“系”属性 p h o n ef r o ms t u d e n t ,电话属性从s t u d e n i 类中继承 e m p l o y e e n u m b e ra se n u m b e e ,雇员号属性取别名e n u m b e r s t u d e n t n u m b e ra ss n u m b e r ; 学号属性取别名s n u m b e r s u b s i d y ( w o r k y e a r :i n t ) :n o a t s u b s i d y :- w o r k y e a r 5 ,w o r k y e a r 2 0 ) ; 在例子的模式中,系统定义了四个类,即p e r s o n ,e m p l o y e e ,s t u d e n t 和w s t u d e n t ! 里:里竺! ! 墨竺主茎璺塑查鲨兰塞翌一 ( 、v o r k i n gs t u d e n t ) 。 类口e r s o n 中定义了一个属性b i r t h y e a r ,它的属性值为整型i n t ;一条规则a g e ( ) ,这条规则返回一个人的年龄值。表示年龄值是由2 0 0 5 和出生年份的差得到 的。 类e m p l o y e e 是类p e r s o n 的直接子类。该类定义了属性r 0 0 m 、w o r k y e a r 、 口h o n e ,它们的属性值类型为i n t :定义了属性n u i i 【b e r ,属性值类型为b i g i n t ;还 定义了规则研l b s i d y ,表示雇员的津贴是工龄的l o 倍。当然,该类也从它的超类 p e r s o n 中继承了属性b i n h y e a r 和规则a g e ( ) 定义。 类s m d e n t 也是类p e r s o n 的直接子类。该类定义了属性r o o m 、d e p a r t m e n t , 其属性值类型为v a r c h a r ;定义了属性n 啪b e r 、e n r o l l y e a r ,其属性值类型为i n t ; 定义了属性p h o n e ,其属性值类型为b i g i n t ;还定义了一条规则c o n t a c m u m ( ) ,表 示学生的联系方式是他的电话。该类又从他的超类p e r s o n 中继承了属性b i r d l y e a r 和规则a g e ( ) 。 类w s t u d e n t 是类e m p l o y e e 和s t u d e n t 的子类,属于多值继承。类中定义了属 性c r e d i t h o u r ,其属性值类型为i n t ;还定义了规则s u b s i d y ( ) ,表示当雇员的工龄 大于5 年时,其津贴为工龄的2 0 倍。该类从它的超类s t u d e n t 中继承了属性p h o n e 及属性值类型b 西n t ;重命名了e n l p l o y e e 中的n u m b e r 属性名为e n u m b e r ,继承了 属性值类型b i 2 i n t ;重命名了s t u d e n t 中的n u m b e r 属性为s n u m b e r ,继承了属性值 类型i n t ;最后依次继承了超类e m p l o y e e 的属性定义r o o m ,w o r k y e a r 及其属性值 类型;s t u d e n t 的属性e n r o l l y e a r 及其属性值类型;忽略了学生s t u d e m 中的属性定 义d e p a r n e n t 而不再继承。并从间接超类p e r s o n 中继承了属性b i r m y e a r 和规则a g e ( ) 。 例2 例1 中定义的类的直接实例及其具有的属性值 p e r s o n :t o m b i n h y e a r :1 9 6 8 】; e m p i o ”ej a c k r o o m :2 0 3 ,n u m b e f :9 2 0 5 ,w o r k y e a r :9 ,p h o n e :8 2 8 2 7 8 5 , b i r t h y e a r :1 9 7 0 】; s t u d e n t :j o n e r o o m :5 0 6 ,n u m b e r :0 2 3 7 5 5 ,e n r o l l y e a r :2 0 0 2 ,p h o n e :7 0 1 7 1 1 9 ,d e p a r t m e m :c s b i n h y e a r :1 9 8 4 ,】; w s t u d e n t :s a m c r e d i t h o u r :1 8 ,p h o n e :7 0 1 7 2 5 0 ,e n u m b e r :9 3 0 4 ,s n u m b e r :0 2 3 7 5 6 , r o o m :2 0 4 ,w o r k y e a r :8 ,e n r o l | y e a r :2 0 0 2 ,b i n h y e a r :1 9 7 1 ; w s t u d e n t :p a m c r e d i t h o u r :1 6 ,p h o n e :7 0 1 7 2 5 l ,e n u m b e r :9 7 0 4 ,s n u m b e r :0 2 3 7 5 7 , r o o m :2 0 4 ,w o r k y e a r :4 ,e n r o l i y e a r :2 0 0 2 ,b i r t h y e a r :19 7 5 】; 这个例子是数据库的实例的一部分,其中给出了四个类具有的五个对象,每 山西大学2 0 0 5 届硕士研究生学位论文 个对象与一个类有关。对象标识为t o m ,j a c k ,j o n e ,s 锄,p a m 对象的属性被赋值。 t o m 是p e r s o n 的直接实例,他的属性b i n h y e a r 的值为1 9 6 8 年。 j a c k 是e m p l o y e e 的直接实例,他的直接属性和继承的属性值为:r o o m 的值 为2 0 3 ,n u m b e r 的值为9 2 0 5 ,w o r k y e a r 的值为9 ,p h o n e 的值为8 2 8 2 7 8 5 b i r t h y e a r 的值为1 9 7 0 。 j o n e 是s t u d e n t 的直接实例,他的直接属性和继承属性值为:r o o m 的值为5 0 6 , n u m b e r 的值为0 2 3 7 5 5 ,e n m l l y e a r 的值为2 0 0 2 ,p h o n e 的值为7 0 1 7 1 1 9 ,d e p a r t m e n t 的值为c s 以及b i r 出y e a r 的值为1 9 8 4 。 s a m 是w s t u d e t 的直接实例,他的直接属性和继承属性值为:c r e d i t h o u r 的值为 1 8 ,p h o n e 的值为7 0 1 7 2 5 0 ,e n u m b e r 的值为9 3 0 4 ,s n u m b e r 的值为0 2 3 7 5 6 ,m o m 的 值为2 0 4 ,w o r k y e a r 的值为8 ,e n m l l y ea 1 的值为2 0 0 2 ,b i n h y e a r 的值为1 9 7 1 。 p a m 是w s t u d e n t 的直接实例,他的直接属性和继承属性值为:c r e d i t h o u r 的值为 1 6 ,p h o n e 的值为7 叭7 2 5 l ,e n u m b e r 的值为9 7 0 4 ,s n u m b e r 的值为0 2 3 7 5 7 ,r o o m 的 值为2 0 4 ,w o r k y e a r 的值为4 ,e n r 0 1 i y e a r 的值为2 0 0 2 ,b i n b y e a r 的值为1 9 7 5 。 卜述的两个例

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论