六章节RDBMS扩展.ppt

上传人:本田雅阁 文档编号:3186018 上传时间:2019-07-22 格式:PPT 页数:51 大小:151.54KB
返回 下载 相关 举报
六章节RDBMS扩展.ppt_第1页
第1页 / 共51页
六章节RDBMS扩展.ppt_第2页
第2页 / 共51页
六章节RDBMS扩展.ppt_第3页
第3页 / 共51页
六章节RDBMS扩展.ppt_第4页
第4页 / 共51页
六章节RDBMS扩展.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《六章节RDBMS扩展.ppt》由会员分享,可在线阅读,更多相关《六章节RDBMS扩展.ppt(51页珍藏版)》请在三一文库上搜索。

1、第六章 RDBMS的扩展,关系模型中概括与聚合的扩展 支持共享与递归的分子对象概念 关系查询语言QUEL的扩展及其支持 关系模型中的抽象数据类型 XSQL语言的扩展 嵌套的关系模型NF2,6.1 关系模型中概括与聚集的扩展,例1:关于人的特化模型示例,Persons,sex,maritalStatus,nationality,Females,Austrians,Canadians,Singles,Males,Married,关系扩展模型 一般化的m维特化示例,R,Sk1,Skm,R11,R1p1,Rm1,Rmpm,扩展的关系模型的一般语法,var R : generic sk1=(R11,R1

2、p1); skm=(Rm1,Rmpm); of aggregate keylist s1: key R1; sn: key Rn; end,对该语法的说明,对generic关系R,具有n个属性,其中: 若是一般的类型,仅用类型符标识它 若是一个聚集引用,即若引用一个generic关系类型,则需要加前缀“key”进行区分 对R可以特化,其m维的特化属性用sk1skm表示 每一个特化属性ski将R的实例化对象划分成pi个不相交的集合,每一个集合为R的一个特化集,因此,若R有m维特化属性,则将R的实例集进行m种划分,每一种划分都可以获得R的Pi个特化集(Ri1,Ripi) M个特化属性sk1,skm

3、属于R的属性集 s1,sn的子集。,正确定义一个generic的关系R需要如下规则:,R的n个属性中,每个属性的类型定义Ri(1in)是以下两种类型: (1)是一个类型标识符(前缀key必须不出现),它表示了 Ri是一个原子值。 (2)是一个generic的标识符,则前缀key必须在定义中出现,它表示对其他对象的引用。 Keylist主关键属性表是s1,sn的子集,每一个特化类型Rij(1im,1jPi)都是一个generic标识符,其关键字域与R的相同,且其属性在定义时就要copy父类型除特化属性外的所有属性。 特化属性Ski(1im)都与R的某个属性Sj( 1jn)相同。 如果Ski与Sj

4、相同,则Sj的类型Rj的值域是(Ri1,Ripi)。,一个应用实例 基于扩展关系模型的CSG表示,参看P31页CSG的形式化表示: := := | | := cube | cylinder | cone | := rotate | scale | translate | := union | intersection |difference |,由此看出,一个object 有三种类型: 1. Prim_obj (原始对象) 2. Mot_obj (运动对象) 3. Comp_obj (组合对象) 如下图:,扩展CSG实例化关系模型,Mech_obj,ID,MAN,ARG_OBJ,LEFT_AR

5、G,RIGHT_ARG,TYPE,Mot_obj,Prim_obj,Comp_obj,T,MAT,PRICE,OP_CODE,PTYPE,cylinder,cuboid,LENGTH,WIDTH,HEIGHT,CSG的关系模型表示,(1) var mech_obj: generic (2) TYPE = (prim_obj, mot_obj, comp_obj); (3) of (4) aggregate ID (5) ID : identifier; (6) MAN: manufacturer; (7) TYPE: structural_comp (8) end,Mech_obj的三个特化子

6、类型说明,var prim_obj:generic prim_obj 是mech_obj的 PTYPE =(cylinder,cuboid); 特化,而本身通过特化控制 of 属性PTYPE进一步被特化 aggregateID 为原始对象集合 ID:identifier; 这两个属性是父类属性, MAN:manufacturer; 除控制特化的TYPE属性 MAT:material; 外的全部属性的复制,以 PRICE:money; 此实现继承的概念 PTYPE:geom_form; end,var cuboid cuboid不是generic类型, aggregate ID 它没有进一步特化

7、(没有子类) ID:identifier; MAN:manufacturer; 这四个属性继承父类 MAT:material; 而来 PRICE:money; LENGTH:real; 这三个属性是cuboid WIDTH:real; 自身的进一步描述 HEIGHT:real; end,var mot_obj mot_obj也不是generic类型 aggregate ID ID:identifier; MAN:manufacturer; ARG_OBJ: key mech_obj; 该属性表达了对一 个对象的引用 T : matrix; end,var comp_obj aggregate

8、ID ID:identifier; MAN:manufacturer; LEFT_ARG_OBJ:key mech_obj; RIGHT_ARG_OBJ: key mech_obj; OP_CODE :( union,difference,intersection,) end,一个无孔支架bracket的CSG的关系实例,对该模型的总结与讨论,特点:1.扩展了对概括抽象和聚集抽象的支 持,方法简单,易理解。 2.通过复制方案实现继承。 问题:1.由于复制造成大量冗余,效率低下。 2.没有面向对象行为,即不允许具体 的行为操作。 3.基本对象的语义结构仍然不易表达。 4.为保证一致性,在更新操作

9、时需要进行持 续的信息复制,开销较大。,6.2 分子对象 对generic类型的进一步扩展,分子对象(Molecular Object)的概念 分子对象由分子集合组成 分子集合将一系列实例(可以是不同类型) 和它们的关系,聚集对象为较高层次的 实体,分子对象的结构分类: 不相交/非递归; 相交/非递归; 不相交/递归; 相交/ 递归;,相交:指一个分子对象的组成部分 是否能被其他同类型分子对象共享。 递归/非递归:分子对象的结构是否 是递归定义的。,四种类型分子的进一步说明,不相交/非递归 是最简单的结构 分子集合内的所有分子之间均是两个不 相交的、结构不重叠的,因之也不是递 归定义的。 例如

10、:原始对象集合。,相交/非递归的分子对象 分子间存在共享对象成份,即两个分子 可能在一些抵赖的分子对象上重叠。 例如:具有同一平台的两个几何体,不相交/递归 具有递归定义的不共享的分子结构, 例:几何对象的CSG表示是一个递归分子 对象的典型例子,它构成一颗二叉树。参照图3.2(支架表示),递归/相交 如果允许CSG中的几何部件被共享,则 它是一个有向无环图DAG,CSG1,CSG2,6.3 将QUEL表达式作为类型的关系模型的扩展,QUEL:由伯克利分校研制的Ingres查询语言 类似于元组关系演算 QUEL的组成:由三个子句组合而成 range of子句:类似于from子句,作用为声 明元

11、组变量的取值范围,书写格式为 range of t is r(t为关系r的一个元组变量) retrieve子句:类似于select子句,作用为确 定查询目标,其变量必须已经在range 子句中声明,retrive t.A 查询t的A属性值 where P子句:条件子句,P为选择谓词 *请参考“数据库系统概念”第五章,一般化引用基制的模型构造,纯关系结构示例: E-R: 关系表,QUEL查询语句序列,range of m is mechanical_part range of f is faces range of b is boundary retrive m.all,f.all where

12、m.ID = “cube#1” and m.ID = b.GEO_ID and f.ID = b.FACE_ID range of m is mechanical_part retrive m.all, m.FACE_JOIN where m.ID = “cube#1” range of f is faces retrive f.GEO_JOIN where f.ID= “f1”,关系模型的扩展,关系属性类型中扩展一个新类型QUEL类型 QUEL类型为一个QUEL查询表达式,它可以在被引用是触发执行 使用QUEL类型代替外键联接关系,例如上图boundary,从而将原来显示的联接隐含在父关系的

13、某个属性中,只有在动态联接时才被激活,上述关系示例的扩展,相应的QUEL查询语句,利用mech-part的FACE-JOIN和faces中的GEO-JOIN属性代码为: range of m is mech-part retrieve m.all,m.FACE-JOIN where m.ID = “cube#1” range of f is faces retrieve f.GEO-JOIN where f.ID=“f1”,进一步的扩展,range of m is mech-part retrive m.FACE-JOIN.SURFACE where m.ID = “cube#1” 利用QUE

14、L类型和操作符”.”的重载,可以在构造一个复杂的引用链时,通过简化显式联接的方法简化查询和关系表的构建,安全性的缺陷,由于采用隐式的联接方法(通过QUEL函数),使得查询结果只有在运行时进行动态联接时才能确定,因而容易产生类型安全性错误 例如:,安全性的缺陷(续),程序 range of m is mechanical_part retrive sum(m.FACE-JOIN.SURFACE) where m.ID = “cube#1” range of m is mechanical_part retrive sum(m.FACE_JOIN.SURFACE) where m.ID = “cu

15、be#3”,6.4 关系模型中的抽象数据类型,概念:该模型发展得最好的是INGRES,他们在开始研制时已留有与C的接口ADT-INGRES, 并进一步发展为POSTGRES。,抽象数据类型的建模过程,在关系建模时,可以将某些属性显式地说明为一个抽象数据类型ADT 例: cuboids ( id: integer, material: char(10), description: char(20), V1: ADT: vertex_type, V2: ADT: vertex_type, V8: ADT: vertex_type),抽象数据类型的建模过程(续),用户在系统提供的环境上,定义一个AD

16、T的接口说明 例:define ADT (typename = “vertex_type”, bytesin = 9, bytesout = 9, inputfunc = “to_internal_vertex”, outputfunc = “to_external_vertex”, filename = “/usr/ingres/vertex”),X,Y,Z,“X%Y%Z”,to_internal_vertex,to_external_vertex,抽象数据类型的建模过程(续),用户需要用C(informix也允许用java)语言实现ADT的结构读写程序,并存放在按接口说明的路径所示位置 在

17、数据库运行时,需有用户需要检索ADT的值,则系统自动进行动态联接,激活并运行相应的函数,例:执行一个查询 range of c is cuboids retrieve (c.material, c.description,c.V1) where c.id = 5 结果为:,用同样的方法,可以定义并实现在ADT域上的各种用户自定义操作 informix中使用UDR工具实现 例: define adtop (opname = “Ry”, funcname = “rotate_abount_y”, filename = “/usr/ingres/rotate_y”, result = ADT: ve

18、rtex_type, arg1 = ADT: vertex_type, arg2 = ADT: angle_type, prec like “+”),6.5 XSQL支持的层次扩展模型,XSQL是Kifer在1992中提出的一个SQL的面向对象的扩展模型 SQL-3标准已包括了SQL面向对象的扩展 XSQL支持的层次扩展主要针对复合对象模型,其扩展的主要是聚合抽象的实现方法,基于纯关系模型的XSQL的基本构成,代用 Surrogates:由系统产生并维护的关系元组对象实例的逻辑标识符 特点 唯一性 系统内部产生,用户不能干涉 不可修改,在一个对象的生命周期中保持不变 代用产生的标识符应当保证在

19、“世界范围” 内的唯一性,以保证基于广域网的分布式DB中每个元组的唯一性 生成方法:,processor ID,date & time,component of 属性XSQL利用该属性建立元组间的引用关联。 关联的语义为part-of 特点:component-of属性支持元组间的1:1和1:N的联接 E-R表示: 关系表的定义 create table E1(E1-ID:identifier, E1_DATA:) create table E2(E2-ID:identifier, E2_FATHER:component of (E1), E2_DATA:) component of 的值是与

20、E2的一个元组e2具有R1联系的E1的元组e1的ID值,N,1,多层次的引用结构,create table E1(E1-ID:identifier, E1_DATA:) create table E2(E2-ID:identifier, E2_FATHER:component of (E1), E2_DATA:),代用标识符的组成含有元组对象间的依赖关系,即对属于同一个复合对象的元组,其ID值具有相同的前缀 系统对每一个复合对象建立一个map的映射,含有指向该元组的存储位置指针TIDs,元组间N:M联系的扩展方法,原理:由于XSQL是在纯关系上进行的扩展,因此,不可能表示集合属性,解决N:M关

21、联的方法只能采用第三方关系专门定义一个引用关系表R,将两个有联系的元组对应起来 reference属性,它建立了一个引用关联,一般的N:M联系的关系表定义,E-R表示: 关系表定义: create table E1(E1-ID:identifier, E1_DATA:) create table E1(E2-ID:identifier, E2_DATA:) create table R(R-ID:identifier, RtoE1: reference(E1), RtoE2: reference(E2),XSQL模型的评价,创新点: 元组的逻辑标识符概念的引入 在关系模型的基础上建立了关系间的层次结构 解决了数据类型的QUEL的安全隐患 局限性: component-of属性可以较好支持1:N联系,但是在共享低层对象时,由于关系不能表示集合,会造成大量的冗余,即一个引用就需产生一个对象元组,由此造成查询的复杂低效,和一致性更新维护困难,局限性(续) 对引用属性的支持力度很弱。由于reference属性相当于纯关系系统中的联接关系,因此直接按照引用属性链完成检索是不可能的,只能采用多个表的JOIN方法进行显式地重构。 由于复合对象的管理由系统完成,即map对用户不可见,因而进行复合对象物理存储的集束(clustering)优化是困难的(即在一个页面上汇集不同元组组成的复合对象)。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1