(论文)从面向对象数据库模式到关系数据库模式的转换_第1页
(论文)从面向对象数据库模式到关系数据库模式的转换_第2页
(论文)从面向对象数据库模式到关系数据库模式的转换_第3页
(论文)从面向对象数据库模式到关系数据库模式的转换_第4页
(论文)从面向对象数据库模式到关系数据库模式的转换_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

C N 4 3 1 2 5 8 耵) I S S N1 0 0 7 1 3 0 X 计算机工程与科学 C O M P U T 隙E N G I N E E R I N G S C I E N C E 2 0 0 3 年第2 5 卷第5 期 V d2 5 N o 5 2 0 0 3 文章编号:1 0 0 7 13 0 X ( 2 0 0 3 ) 0 5 0 1 0 0 0 8 从面向对象数据库模式到关系 数据库模式的转换 T r a n s l a t i n gt h eO b_iect O r i e n t e dD a t a b a s eS c h e m a t oR e l a t i o n a lD a t a b a s eS c h e m a 王学荣1 ,曾晓勤2 W A N GX u e - r o n 9 1 Z E N GX i a o q i I f 1 南京审计学院计算机信息管理系,江苏南京2 1 0 0 2 9 ;2 河海大学计算机系,江苏南京2 1 0 0 9 8 ( 1 D e p a r t m e n to fC o m p u t e rI n f o r m a t i o nM a n a g e m e n t ,N a n j i n gA u d i tC o H e g e ,N a 面i n g2 1 0 0 2 9i 2 D e p a r t m e n to fC o m p u t e rS c i e n c e ,H o h a iU n i v e r s i t y N a n j i n g2 1 0 0 9 8 。C h i n a ) 摘要:本文提出了一种从面向对象数据库模式到关系数据库模式的映射及基于该映射的模式转 换算法。以查询为例,说明了面向对象数据库中的特有语义仍能保留在转换后的关系模式中,而且从面 向对象数据库到关系数据库的基于该模式转换中操纵运算的转换也是切实可行的。所得的模式转换结 果可应用于面向对象数据库和关系数据库之同的互操作。 A b s t r a c t :I nt h i sp a p e r ,w ep r o p o s eam a p p i n gf r o mt h eo b j e c t o r i e n t e dd a t a b a s e ( O O D B ) s c h e m at ot h er e l a t i o n a ld a t a b a s e ( R D B ) s c h e m a ,a n dg i v ear e l a t e da J g o r i t h mb a s e do nt h em a p p i n gT h e n ,w et a k et h eq u e r ya sa n e x a m p l et od e m o n s t r a t et h a t t h ec h a r a c t e r i s t i cs e m a n t i c so fO O D Bc s nb ep r e s e r v e di nt h et r a n s l a t e dr e l a t i o n a l s c h e m aa n dt h a tt h em a n i p u l a t i o no p e r a t i o nt r a n s l a t i o nf r o mO O D Bt oR D Ba r ea l s oa v a i l a b l eb a s e dO i lt h es c h e m a t r a n s I a l i o n T h er e s u l to ft h et r a n s l a t i o nc a nb ea p p l i e dt ot h ei n t e m p e r a t i o nb e t w e e nO O D Ba n dR D B 关键词:面向对象数据库;关系数据库;模式转换;数据库互操作 K e yw o r d s :O O D B ;R D B ;s c h e m at r a n s l a t i o n ;d a t a b a s ei n t e m p e r a t i o n 中图分类号:T P 3 1 1 1 3文献标识码:A 1 引言 人们对自治的多个数据库系统之间可互操作 的日益增长需求促进了多重数据库系统( 包括多 个同构或异构数据库系统) 的研究。就异构多数 据库系统而言,具有不同数据模型的数据库之间 的模式和操纵的转换是一个关键的研究课题1 。 由于关系数据库主宰了当前的数据库应用领域, 而面向对象数据库将是能满足更高级数据库应用 要求的下一代数据库,所以非常有必要在这两个 模型间建立一种映射,以便有效地解决它们的模 式和操纵的相互转换。 2 研究模型 O O D B 和R D B 之间的转换有两种方向相反的 途径每种途径都有其应用背景和需求。本文的 收稿E 期:2 0 0 3 0 1 - 0 3 ;修订日期:2 0 0 3 1 2 基金项目:教育部专项研究任务资助项日( 0 1 J D 7 9 0 0 1 8 ) 作者简介:王学荣( 1 9 5 6 一) 男,江苏上锡人,讲师研究方向为数据库和数据仓库。 i t l i K l , $ 址:2 1 0 0 1 6 江苏肯南京市瑞金路长发东村3 栋4 0 5 室;T e l :( 0 2 5 ) 4 5 8 2 9 1 4 ;E - m a i l :Wx u e m n g 1 6 3c o m A d d r e s s :R o o m4 0 5 ,B u i l d i n g3 ,C h a n 出V i l l a g eE a s t ,R u i j i nR d ,N a n j i a g J i a a g s u2 1 0 0 1 8 ,PRC h i n a l O O 万方数据 研究目标是更一般意义下的从O O D B 到R D B 的模式 和操纵的转换它是R D B 到O O D B 互操作研究的一 部分。这部分可抽象成如图I 所示的模型。 系统( O O D B M S ) c 在这个模 图l 研究模型 型中,转换器( T r a n s l a t o r ) 负 责将O O D B 语言( O S Q L ) 【2 “1 的语句转换成语义 等价的R D B 语言( S Q L ) ”1 的语句。从数据库语言 的角度,转换分为两大类:从O O D B 到R D B 的数 据描述语言( D D L ) 的转换及其数据操纵语言 ( D M L ) 的转换。本文重点介绍数据描述语言之间 的转换,即模式转换。实质上是给出了从面向对 象数据模式到关系数据模式的映射,该映射保证 了对象的语义在相应的关系中不会丢失,并为数 据操纵语言之间的转换奠定基础。 3 数据模型 本节简述本文涉及的两种数据模型,即标准 的关系数据模型和被广泛认可的面向对象数据模 型,着重给出了它们之间的平行概念,并定义了一 些后面要用到的符号。 3 1 关系数据模型 我们将一个R D B 定义为一个三元组:R D B = ,其中: R = R l 冠是R D B 中定义的一个关系模式 ; T = I 是以R 为模式的一个关系( 元组 的集合) ; O P , = o p ,lo p ,是一个R D B 运算 。 R D B 由若干关系组成。每个关系可直观地 表示成二维表的形式。它含有一个表头( 模式) 和 若干表项( 元组) 。关系模式中定义的一组属性决 定了一个关系的结构。每个元组代表了现实世界 中的一个实体,它是对关系模式中定义的每个属 性赋一个值所得的关系的一个实例。关系模式中 定义的属性有一个名和一个与之相联系的原子数 据类型,该原子数据类型指定了相应属性的取值 范围。关系属性的一个子集称为一个关键字,其 值具有能唯一标识关系中元组的特性。一个关键 字可以作为另一个关系的属眭,称为外关键字。 R D B 的操纵运算通常有数据插入、数据修 改、数据删除以及数据查询。查询运算是数据库 操纵运算中最重要的。本文用关系代数运算来表 达R D B 的查询运算,如并( U ) 、交( F I ) 、差( 一) 、 笛卡儿乘积( * ) 、投影( n 。) 、选择( “) 、连接 ( 嗍一) 和自然连接( 阅) 等等。 32 面向对象数据模型 我们将一个O O D B 定义为一个三元组:O O D B = ,其中: C = C lC 是O O D B 中定义的一个类 ; 0 = 0 c i0 ,是一组以类C 为类型的对象 ; O P o = o P n l ( ) ,。是一个O O D B 运算 。 面向对象数据模型是以对象形式表现。对象 是现实世界中抽象的或具体的实体,每个对象由 系统赋予的对象标识符( o i d ) 唯一地加以标识。 对象具有状态和与之联系的行为,对象的状态由 其属性值决定,对象的行为是定义于其状态上的 所有操作,具有相同属性和行为的对象组成一个 类。类中的对象称为该类的实例。类为一组状态 和行为相似的对象定义了属性和方法。利用继承 性概念,类可以被组织成类层次结构。在具有非 循环有向图的类层次结构中,子类继承其父类的 属性和方法。继承性不仅可以减少子类和父类同 定义的冗余属性和方法,而且也反映子类和父类 之间的一般性和特殊性关系的语义,这种语义可 以在面向对象数据库的操作运算中得以表达。 与关系模式不同,类的属性可以分为原子属 性、组合属性( 又称复合属性) 和集合属性。原子 属性由基本数据类型定义,如整型、字符型等。一 个对象标识符被默认为是原子属性的值。组合属 性以前面已定义的类为其类型。这个定义是递归 的,嵌套的组合属性也可形成有向图的类组合层 次结构。集合属性定义为具有某个原子类型或非 原子类型的多个值。 O O D B 具有平行于R D B 的操纵运算,但每个 O O D B 操纵运算可以包含某些新的概念和机制。 例如,在O O D B 查询中,范围子句不仅指一个类也 可以指类分层结构中的一组类;目标子句可以包 含遍历类组合分层结构的路径表达式;表达式中 可以包含执行方法的信息等等。 33 记号 以下是本文中为了简洁地表示R D B 和O O D B 的概念而要使用的一些记号: 1 0 1 万方数据 ( 1 ) R D B 的模式: 。* 系模式R 的一十属性; :咒系模式R 的若干十键届性; 伊戈系模式R 的若干个外键侗中 : P :一个外部函数或过程; D O M ( A R ) :属性A R 的敦捌类型。 ( 2 ) O O D B 的类: O I O 默认的对象标识符属性; ,:类C 的一个属性; f :类C 的一一个r ( 原子的、集合的、类的J 类型的属性 ,:娄C 的一个方法; D O M ( A c ) :A cf , g 性的类或类型; I ) O M ( M ,) :玑打法的返凹类型; E L E D O M ( A ) :集台元索的类或类型; S U B ( c ) 类c 的所有f 燕的粲台。 4 模式映射 模式是数据库中定义的所有单个模式的总 称,是数据库操纵运算的基础。O O D B 模式是所 有定义的类,而R D B 模式是所有定义的单个关系 模式。本节讨论如何将一个类定义映射为一个关 系模式定义,并且在映射后的关系模式中仍能保 留类的语义,同时还要兼顾到施于类对象上的操 纵运算也能转换为对应关系元组上的操纵运算。 我们从两个层次上来考虑映射的设置:一是 模式层,每一类对应为一个关系模式,称为相应类 的主关系;二是属性层,不同类型的属性作不同的 处理。类中默认的对象标识符的属性对应为关系 的一个关键字属性;类的原子属性对应为相应关 系的原子属性;类的组合属性对应为相应关系的 一个外关键字属性;类的集合属性对应为一个原 子属性附加一个额外的被称为子关系的关系模 式,它是用来处理集合元素的。类的方法可广义 地视为属性,但它对应的应该是R D B M S 的外部函 数或过程。下面详细讨论O O D B M S 特有的一些 机制,如对象标识、抽象数据类型、方法和继承性。 41 对象标识 具有不同数据模型的数据库用不同的方法来 标识对象或实体。在O O D B 中,对象标识符用于 标识对象,它独立于对象属性值;而在R D B 中,关 键字用于识别实体,它依赖于某些关系属性的值。 为了能在R D B 中维持对象标识,需要有从对象标 识符到关系关键字的一对一映射。在模式映射 中,我们将类c 默认的对象标识符的属性对应为 经映射后的关系R 。的一个额外增加的原子类型 属性晡。A 铲是R c 的一个关键字属性,其值是 系统赋予的类C 的对象标识符。一个常用的与 1 0 2 对象标识相关的运算是相等运算。在O O D B 中, 由于对象标识符并不依赖于它的属性值,所以有 两种相等运算: ( 1 ) 标识辛目等:用“= = ”表示两个对象分别用o ,和O :表示, 若。:,则表明这两个对象有相同的标识符; ( 2 ) 值相等:用“= ”表币若o = o :,则丧明这两个对象有相 同的数据结构和数据值。 显然,如果两个对象是“标识相等”,则它们也 “值相等”,反之不然。但是,在R D B 中只支持值 相等,因此在R D B 中额外增加关键字属性,可以 保持O O D B 两种相等运算的语义。两个对象的标 识相等将归结为R D B 中相应两个元组的关键字 值的相等;而两个对象的值相等,则归结为R D B 中对应两个元组除关键字属性以外的所有属性值 的相等。额外增加的关键字属性还在抽象数据类 型的处理中扮演重要角色。 42 组合属性 O O D B M S 支持用嵌套的结构数据类型来定义 组合属性。一个对象的组合属性的值是说明该属 性的类的对象标识符,由它指定相关的对象。这 可以认为一个组合属陛设置了这样一种关联,它 从包含该属性的类的对象指向说明该属性的类的 对象,起到了类似H D B 外关键字的作用。在模式 映射中,我们把一个组合属性A g “映射为一个原 子类型属性熊”。A g ”是关系的一个外关键 字,用来与从类D O M ( A “) 映射而得到的关系的 关键字相关联。正如上面所提及的,每个映射得 到的关系都有一个关键字属性A # ,来保存对象标 识符。所以,通过“连接运算”,两个相关关系的关 联元组可以在R D B 中组合在一起。 在O O D B 中,与组合属性相关的运算通常是 求其值,并通过该值在类复台分层结构中导航定 位到其它对象。基于这样的映射,两个运算也能 被转换为R D B 的关系运算加以实现。导航定位 运算出现在路径表达式里,这在后面详细讨论。 下面是与组合属性相关的模式、数据和查询 的转换例子。假设我们有如下的模式映射: c J ( a l * 一, 苹r ) 一R c I ( 4 孙A la 口4 2 1 ) c 2 ( A 3 = , 4 翟) 一R n ( 最 3 日。, 4 职) 代人数据自然得到如图2 所小的映射后的关系且组合属性的 运算可映射为如下关系运算: O P o :鸵I 时t 4 nf r o mC 2w h e r eA 3 = oJ ;一 O P s :肌1R “,A 2 R c l ( 洲5o3 t ( n n ) 聊A 4 锃5o 畸R c I k ) 4 3 集合属性 O O D B M S 支持用多值数据类型定义集合属 性。因为一个对象的集合属性的值是多值的,显 万方数据 O I I ) c 1 ( ) 1 1 1 I c 1 t ) i d 2 0 I D c 2 o i d I c 2 - 0 i d 2 O 。: TRfl:TRCl L 坐I A l a 。lA 2 R C l c loz t l la 。, c I - o i d 2a 1 :a ,2 c 1 o i d n 图2 组合属性对象的映射 然可以利用R D B 的一个关系来组织 它们。在O O D B 巾,每个集合值可看n I D 成是一个对象具有它自己的对象标识c d 杓,所以可以象组合属性那样把一个 c d 1 集合属性映射为对应的主关系的原子 O P :辩l e c tA 2c f r o mCw h e r eA 1c 。口一 o :4 k “1 2 q 7 k 跚。2 一c 5 4 t :。K 。 44 方法 方法是其值不能静态存储在数据库中而只能 动态执行相关程序计算得到的一种特殊的属性。 方法实际上足以宿主程序设计语言加嵌入的O s O L 写成的一个函数或过程,因而方法有其定义和 调用两方面的表示。就定义而言,应在方法的类 定义中说明指定的方法名、参数数目、各参数的数 T a c : T “2 c 图3 集合属性对象的映射 据类型以及返回值的数据类型的方法符号,并且 所有方法定义通常出现在另一源代码文件中,经 预编译和编译生成可执行代码文件。 在标准R D B 模型中没有支持用户自定义函 数和过程的机制。可幸的是多年来一些商业化 R D B M S 产品已提供了这一功能,S Q I 标准也开始 考虑包含这一功能,称为P s M s 1 子程序( 包括了用 户自定义函数和过程) 。P S M 子程序至少支持以 下两项功能:( I ) 创建用户自定义函数并从标量 表达式中调用此函数;( 2 ) 创建用户自定义过程 并通过一个新的S Q L 语句( 典型的是C A L L 语句) 调用这些过程。 这样就能够建立从一个方法定义到一个P S M 子程序定义的映射。这是与语言相关的程序翻译 问题。然而,为了在转换后的关系P S M 子程序中 仍保持方法的语义和特征,需要考虑以下常有的 共性问题: ( 1 ) 方法名的转换要求避免命名的潜在冲 突,这是由于P S M 子程不受指定关系约束,而方 法受类约束。有必要对映射后的关系P S M 子程 序进行目标R D B S 内统一重命名。一个直截了当 的办法是将转换后的关系P S M 子程序命名为它 对应的方法所属类的类名后跟此方法名。 ( 2 ) 转换方法所列的若干参数需要将每一个 与类相关的参数类型映射为相应的与该类有相同 数据内容的关系数据类型。这种转换可以根据从 类到关系的模式映射来进行。 1 0 3 万方数据 ( 3 ) 方法体的转换需要区分以下几种语句, 不同的语句应用不同的映射规则。宿主程序设计 语言中的控制流和处理内存数据的语句不必转换 ( 假设在O O D B M S 和R D B M S 是同一种宿主程序设 计语言) ;宿主程序设计语言中处理数据库中数据 的语句需要根据从类到关系的模式映射来加以修 改;嵌入的O S Q L 语句需要被映射为基于数据库 操纵运算映射的嵌入的S Q L 语句。 ( 4 ) 方法返回值应将它映射为相应的由R D B 模型支持的数据类型,这与参数转换的情形相似。 方法的调用可以象属性那样,是与语句中预 期类型匹配的该方法的结果类型,即它本身可以 是象过程调用一样的语句。方法调用的一个显著 特征是多态,即动态捆绑。仅把方法调用映射为 相应的P S M 子程序调用是不够的,因为R D B M S 不能象O O D B M S 对方法以实时进行的方式动态 地解决P S M 子程序的运行,所以需要在方法调用 被映射后的目标代码中应包含P S M 子程序以及 该子程序凋用的动态解决方案。一个一般的方法 是将方法调用映射为c a s e 语句,在c a s e 语句中列 出所有捆绑的条件和各种情况下相关P S M 子程 序的调用。 4 5 继承性 继承性是O O D B M S 的一个典型特征。M B l a h aF 6 1 提出了四种借助于关系表来处理继承性 的方法。为了保持继承性的语义和简化转换,我 们提出了一种不同的方法。除了将类分层结构中 的每一个类映射为张表,还要根据继承规则将 父类表的属性扩延到它们的所有子类表中。例 如: c l ( A 1 t 2 ) 一R c l ( 4 I t A l l A 2 I ) C 2 ( n 4 ) b e lso f c 】一R 。( 4 铭j A I - A 2 ,A 3 4 ) c a ( A 3 ,A 4 ) a ss u b c l a s s o fC i R e 3 ( A R c ,A 1R c 3 , 2 _ 3 8 c 3 4 8 n , 46 映射 总结上面的讨论,我们有映射P :P ( C ) 一R c , 进一步有: P ( O I D f ) 一4 p f P ( :。) 一 n P ( 例。R c + 8 c ( “A 。4 ;c ) O O M ( a _ k ) 。“( 4 k ) P ( H ”,一。够,D O g ( 晦) = 。口( 4 宅。, p ( M c ) 一P 。 映射p 是建立从O O D B 到R D B 模式转换的 基础。 1 0 4 5 模式转换的算法 在以上的映射讨论中,我们主要是从结构上 找出两种模式间的对应部分。下面我们从语义的 角度给出模式定义语句的转换算法,其中忽略了 一些无关紧要的细节问题,如有哪些基本数据类 型、名的映射和名的冲突的解决,等等。 5 1 算法 根据映射P ,模式转换的算法可以如下设计: ( 1 ) 预处理。 第1 步,# 。展继承性:沿着类分层结构将所有父类的属性和 方法复制到相应的所有子类中。以一系统表作为元数据记录父 类和子类的联系,并删去类定义中的继承性。 第2 步,蘑薪组织集台属性:对每个类定义把集台属性修改 成一个原于类型属性,并创建一个具有两个属性的额外类,其巾 一个幅性与被修改后的属性相同,另一个具有集合元素类型。 第3 步组台属性原子化:对每个类定义把组台属性修改成 一个关键字属性以一系统表作为元数据记录组合关系。 第4 步,登记方法符号:从每个类定义中删土方法定义,在系 统表巾记录像方法的信息。 ( 2 ) 转换。 第5 步,将类模式转换戚关系模式:将由眦上几步得到的类 定义转换成一个关系模式定义,并在这个关系模式中加入一个关 键字属件。 第6 步将方法定义翻泽成P S M 子程序定义:将所有方法定 义都翻详戍P S M 于程序定义进而使它们成为u J 执行代码。 ( 3 ) 调整。 第7 步,优化关系模式:删主= | c 余的子关系模式等等。 52 元数据f 系统数据】 模式转换的结果不仅有被转换后的关系模 式,而且还伴有所谓的元数据的若干张系统表。 其中包含了“丢失信息”( 即存在于对象模式中,但 不能在被转换后的关系模式中保留的那些信息) , 这些信息包括关于父类与子类、组合类与其构件 类、类和它们对应的关系、源模式和目标模式的相 关属性等的关系。 例如,经模式转换后,在所得到的关系模式中 模式间不再存在父子关系的信息。为了保留这种 关系,以便在操纵运算的转换中能维持这种语义, 我们借助一张系统表来保存这些信息。系统表可 以有如表l 所示的结构。 表1 系统表的结构 s u p e r c l a s sl l o 1 l l e s u b c l a s sl l f l m e 虽然系统表里只保存了直接的父类与子类关系, 但可以通过计算它的传递闭包,再使用映射信息 表,就可以知道被转换后的关系模式中的任意两 个关系模式之间是否存在继承关系。 53 例子 下面的例子用来说明如何根据以上算法将面 向对象模式转换成关系模式。假设我们有如F + 的 面向对象的源模式: 万方数据 如sC O U R S E ( e o u m n k g e e :m t r i n g p r e m q u i 于这个模式转换的。 i t :s e t fC O U R S E ) s t u d e n t s ”g i s t e d :s e l ( S T U D E N T ) J e l s s sD E P A R T M E N T ( d e p tN o :i n t e g e r ,d e f t e :s t r i n g ,m e j o i n : 靶t ( s t r i n g ) ) c l a s sO F F I C E ( o m e en n :i n t e g e r ,o f f i c e P s t r i n g o f f i c e 】o c : s t u n g d e v i c e sn o :”lL i n t e g e r ) , c l a s sP F R S O N ( 1 DN o :i n t e g e r n a m e :s t r i n g ) c l a s sS T A F F ( s l a n n o :i n t e g e rd e p t :D E P A R T M E N T ,O F - 兀C En o s t :s t r i n g ) a ss u b c l a s so fP E R S O N c l a s ss l u D E N T ( s t u d e n t n o :i n t e g e r m a j o r :s i t i n g c o u p st a k e n : 嘲( C O U R S E ) 1 骗郸h c l a 镐o fP E R S O N c l a s sF 1 1 S T U D E N T ( g r a d e :i n t e g e r ) 8 ss u b c I 曲so fS T U D E N T c l a s sP TS T U D E N T ( v i n t e g e r ) a ss u b e l a s so fs T A ,S T U D E N T 这个模式不考虑方法,因为方法不被转换到 对应的关系模式。一步步执行上述转换算法,最 终得到: ”l a t i n ns c h e m eC O U R S E ( c D i d :s t r i n gk e y ,c o u p en o :i n t e g e r ,C O H r s ef l a m e :s t r i n g p 化m q u i s i I e s D i d : s t r i n g s t u d e n t sr e g i s t e r e dh i d : s t r i n g ) “ l a t I o n 鸵h e m eP R ER E Q D f f i l T E S ( n mr e q u i s i t e so l d :s t r i n g t c D i d :s t r i n gI k e y ) m l a t i o ns c h e m es T U D E N T SR E G I S T E R E D ( s t u d e n t sr e g i s t e r e dD i d : s t r i n g , s t u d e n to l d : s t r i n g k e y ) r e l a t i o ns c h e m eD E P A R T M E N T ( d e p a r t m e n to l d :s t r i n gk e y d e p t n o :I n t e g e r d e p tn a m e :s t u n g m a j o r sD i d :s t r i n g ) r e l a t i n ns c h e m eM A J O R S ( m o Bo l d :s t r i n g tm a j o r s :s t r i n g ) r e a f i o ns c h e m eO F H C E ( o f f i c eo l d :s t r i n gk e y o f f i c en o :i n l e g e r o f f i c e n a m :s t r i n g o f f i c el f l c :s t r i n g ,d e - v i c e sn oD i d :s t r i n g ) “ l a t i o ns c h e m eD E V I C E SN O ( d e v i c e sn oD i d :s t r i n g ,d e v i c e sn o : i n t e g e r ) r e l a t i n ns c h e m eP E R S O N ( p e n o no i d :s t r i n gk e y I D o :i n t e g e r n a m es t r i n g ) n l a t i o ns c b e m eS T A F F ( s t a f f D i d :s t r i n gk e y I Dn o :i n t e g e r e : s t r i n g ,s t a f fn o :i n t e g e r d e p a r t m e n to l d : s t r i n gI k e y o f f i c eD i d :s t r i n gt k c y ,p o s t : s t r i n g ) m l a t i o ns c h e m eS T U D E N T ( s t u d e n tD i d :s t r i n gk e y I Dn o + i n t e g e r , n a m e :s t r i n g s t u d e n tn o :i n t e g e r ,m a J o r :s t r i n g ,c o u 眦s t a k e no ,d :s t r i n g ) m l a t i o ns c h e m eC O U R S E ST A K E N ( c e st a k e n o l d :s t r i n g , c o j d :s t r i n gt k e y ) r e l a t i o ns c h e m e 兀! s 下u n E N T ( f t s t u d e n tD i d :s t r i n gk 州,I Dn o :i n f e g e i - ,e :s m n g ts t u d e n tn o :l n t e g e t ,m a I o r :s t r o n g - c st a k e n o 】d :s t r i n g g r a d e :i n t e g e r ) r e l a t i o ns c h e m e 盯S T U D E N T ( 一s t u d 明lo 越:s t R n gk e y ,I Dn o : i n l e g e r w :s t r i n g s t a f fn o :i a t e g e r ,d e p a n m e n tD i d :s t r i n gf l e y , o f f i c eD i d : s t r i n gf k e y ,p o s t : s t r i n g ,s t u d e n tn o :i n t e g e r m a j o r : s t r i n g ,r o t a k e nh i d :s t r i n g :i n t e g e r ) 系统表如表2 所示。 表2 系统表 S T U D E N T S T A F F F 1 1S T U D E N T F T S T U D E N T P TS T U D E N T 模式转换的结果就是以上的若干关系模式加 上所创建的一些系统表。下一节中的例子都是基 6 语义保持 数据库模式定义是对现实世界的抽象,其中 含有特定的语义。模式映射不仅要在两种模式间 找出对应关系,还要保持源模式中的语义在目标 模式中得以保持。本节针对前面给出的模式映射 结果来讨论它的语义保持。值得注意的是, O O D B M S 支持一些典型语义,如一般化、组合和集 合,而R D B M S 不直接支持这些语义。为了确认 O O D B M S 表达的所有语义仍能在转换后的关系模 式中得以保存,一个切实可行的方法是证明所有 O O D B 操纵运算能被映射为基于模式映射的R D B 操纵运算,它们产生与源O O D B 运算一样的结果。 这意味着有必要将模式和操纵运算映射综合起来 讨论语义的保持。本节针对那些典型的语义,用 基于映射p 的查询映射为例来说明O O D B 的特有 语义能在映射后的R D B 中得以保持。从而也说 明从O O D B 到R D B 的操纵运算的映射是可行的。 我们把映射p 用于查询语句的表达式中,因为除 了处理集合属性的规则即A 。是一对四的映射 外,映射p 的所有规则都是一对一的映射。为了 避免含混不清,我们约定p ( A c ) 代表映射后的子 关系凡c 。 一般地,面向对象的查询表示为S ,( C ,A ) 的形式其中S 代表查询运算符,c 代表查询的 类的范围,A 代表目标属性,F 代表限定谓词。为 了简化和不失一般性,我们限制c 和A 为一个类 和一个属性。应用映射P 实现从运算S ,( C ,A ) 到关系运算的映射,可以写成: S ,( c ) 一n P ( ) ( 以r ,) ( L ( cJ ) ) 其中,一是一个简单条件表达式,在映射中只需 将它的对象运算分量替换成对应的关系运算分 量,用p ( r ) 表示替换动作。例如,查询S T U D E N T 类的中学生编号为l 的学生姓名的实例: s m I ( S T U D E N T t e ) 一n 一( 8 m “i J ( T 鲕T ) ) 6 1 查询运算中的一般化语义 为了表示查询运算中的一般化语义,面向对 象的查询允许将范围类C 扩延为一组类,这些类 组成了以C 为根的类分层结构( 类子树) 。这里 将这组类表示为C “1 ,所以我们有另一个映射: s F ( E “ ) 呻c E 毖( “舢J ( 郎f r ) ( ( f ) ) ) ) u “ ) ( 雌f , ( L ) ) 1 0 5 卅M F M 篓冀一 I r , F 万方数据 例如,查询S T U D E N T 类的中学生编号为l 的 学生姓名及其所有子类的实例: s 1 ( S T U D E N T “P ) 一 1 1 n 。, ( 6 m m 一I ( T n E ”“ U ( 6 。:】( T ns w l T ) j U ( 8 m ( n E “ T 显然,在这个映射中,保持父类和子类关系的 系统表是必须的。这样,它的所有子类都能容易 地从根类开始找到。 6 2 查询运算中的组合语义 在查询S ,( C ,A ) 中,F 和A 都可能含有导 航于类组合层次结构的路径表达式,路径表达式 以A Id 2 A n 形式表示,其中A I 是类c 的一 个组合属性,小表示类D O M ( A ( i 一1 ) ) ( i = 2 ,一, n 一1 ) 的一个组合属性,A n 表示类D O M ( A ( n 一 1 ) ) 的一个属性。在这种情况下,需要在转换期间 的目标关系运算中产生关系连接运算。我们有如 下映射: S r ( c , 】42 7 一“川( d “,) ( f 。) p q ( 嘲等阳2 Lc u ) ) 鼻r z 。f f 0 ) 一廿r h I f 以 = 。( T c e ( O o U C A ( ) ) p 司 ( 阁:2 8 4 0 ( M ) ) p q05 r “j ) 或把以上两式合并为: 5 lm。= 口( c ,A 1 7 2A n ) 一 n ) ( 以= 口( M ( f “ ) ) ) 。( M :28 4 T e j ) 目7 0 5 cJ m ( 目k M ( n ,j ) ) 其中8 i ( b l ,5 ) 是连接条件,表示如下: O t :A 船) = “) ; 以:d7 荦川= 栅f “) ) ) ; 8 3 : r = ( n 一2 ) 船O M ( A f j ; 0 4 : 夤k = ( i J ) 嚣w ( m _ ) ,; 0 5 : ) = A l 鼎j 。 然而,如果上面等式两边的属性名相同,则使 用自然连接( 冈) 而不用连接( 冈。) 。这个一般 式可适用于下面的实例。例如,查询雇员J o h n S m i t h 所服务的部门的名称: s 。一J m * ( S T A F F ,d e p td e p t e ) 一 I I d 。“ ( 8 一一J “。s 一( r ) wT D E n j l M ) 查诲在计算机科学系工作的员工姓名: s d l Id e 口【,- 。t ( S T A F F ,n a m e ) 一 i I ( 6 d eD 【。= - 。一( T o E e R M T ) c ,r m ) 查询在计算机科学系工作的员工所使用的办 公室编号: s d 口td t ;。c ( S T A F F ,一o f t i c en o ) 一 n 。m 。( 乱q l 一“- ( T O Z P A n T M 硝r ) p qT s r * F r D qT o F 兀c E ) 与6 1 节类似,在这些映射中,需要使用保持 组合关系的系统表,以便从根类c 和它的组合属 性4 i ( 沁1 ,2 ,n 一】) 就能容易地确定其所有 组件类D O M ( A i ) 。 1 0 6 6 3 查询运算中的集合属性 在查询S ,( C ,A ) 中,A 可以是一个集合属 性,F 可以含有集合表达式,于是有: ( 1 ) A 是一个集合属性: s ,( C 4 ) _ A ;r4 ) ( 以r ,) ( t j e 司F L f 。,) 其中0 是A ,( c ) = A :( 。例如,要查询计算机科学 系所有的专业: s * = - “( D E P A R M ,r 。q m ) 一 I I 。舯( ( a 4 _ 酬一一( 口M ) c 硝r M o B ) ( 2 ) F 是一个成员谓词,形如:O A ,若对象 O 是C 对象的集合属性A 的值中的元素,则F 为 真: 5 。川( c 卜,山) ( 跏k = 口( L j ) 跚日0 ) 其中0 是 k ,= A 。例如,要查询有计算机 软件专业的系名: s 一t 一【D E P A R T M E N T ,d e p tm a n e ) 一 d e p I ( 8 。一t * o f t ,”( r M M o 一跚r D E P I l T M F T ) ( 3 ) F 被受限全称量词所限定,形式为:vx A ( ) 。若c 对象的集合属性A 的值的所有 元素满足,则该式为真: svz 川,) ( c , ) 一刖) ( 0 一( 0 p q 棚d k ( ( 、,) ( T p l ) ) ) ) 其中0 是A7 ,( c ) = A k 。例如,查询办公设备编 号大于1 0 0 的办公室编号: sv ,d 。( 。) ( O F n C E ,o f f i c en o ) 一 r i m 【T o m c E ( r 。m n w 巩 ( 6 、( d 一一m ,- ) ( r c B n o D D ( 4 ) F 被受限存在量词所限定,形式为:jx A ( F ) 。若至少有一个C 对象的集台属性A 的值的元素满足F ,则该式为真: s jz 川,) ( c ) 一n P ) ( t 闻扭 :( ( 以c ,I ( L 【 ) ) ) ) 这里日是A + 一o = A k “。例如,查询至少有一个 办公设备编号小于1 0 0 的办公室名: s j t d c ”( x ) ( O F F I C E ,o f f i c em e P + n * n 一( T o m c r D d m d ( S d 。# i 0 口( r D E v t o ) ) ) ( 5 ) F 是一个蕴涵谓词,表示为:A7 S ( 运算 符也可以是( c ,= , , 等) 。如果C 对象的集 合属性A 的值含于集合S ,则,为真: s a 【s ( c - A ) 一”一,( 0 ( c ) 一( n j ( 川( U ( fx 。一s ) 跚 ”c L 1 ) ) 口q L fc ) ) ) 这里,X i = H ; ( 捌;花 :。( cJ ) 阁8 0 “,j ) 是 对象0 。的集合属性A 的值,S 是集合5 的关系表 示,而0 是A p c ) = A :( 。例如,查询学生J o h n S m i t h 能选择的课程编号。这里暗示y - J o h nS m i l h 必须已修过他所选的每门课程的前期课程。在这 万方数据 种情况下,集合S = S 。:h 。S m i t h “ ( S T U D E N 7 r ,用有一定的指导作用。 c 。u r s e s - 1 8 k 。“) ,并且有: 参考文献: s ”。一目( C O U R S E ,c o u p en o ) 一 7 。fT c ( m ( 1 1 ,U ( ( J S ) 。jL “C O U R S E T r R ER E o I T b ) ) b qT C O L R S E )

温馨提示

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

评论

0/150

提交评论