六章节DBMS扩展

上传人:ni****g 文档编号:593414041 上传时间:2024-09-24 格式:PPT 页数:51 大小:151.52KB
返回 下载 相关 举报
六章节DBMS扩展_第1页
第1页 / 共51页
六章节DBMS扩展_第2页
第2页 / 共51页
六章节DBMS扩展_第3页
第3页 / 共51页
六章节DBMS扩展_第4页
第4页 / 共51页
六章节DBMS扩展_第5页
第5页 / 共51页
点击查看更多>>
资源描述

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

1、第六章 RDBMS的扩展关系模型中概括与聚合的扩展支持共享与递归的分子对象概念关系查询语言QUEL的扩展及其支持关系模型中的抽象数据类型XSQL语言的扩展嵌套的关系模型NF26.1 关系模型中概括与聚集的扩展例1:关于人的特化模型示例PersonssexmaritalStatusnationalityFemalesAustriansCanadiansSinglesMalesMarried关系扩展模型 一般化的m维特化示例RSk1SkmR11R1p1Rm1Rmpm扩展的关系模型的一般语法var R : generic sk1=(R11,R1p1); skm=(Rm1,Rmpm); of aggr

2、egate 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属于R的属性集 s1,sn的子集。正确定义一个generic的关系R

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

4、实例 基于扩展关系模型的CSG表示参看P31页CSG的形式化表示: := := | | := cube | cylinder | cone | := rotate | scale | translate | := union | intersection |difference |由此看出,一个object 有三种类型: 1. Prim_obj (原始对象) 2. Mot_obj (运动对象) 3. Comp_obj (组合对象) 如下图:扩展CSG实例化关系模型Mech_objIDMANARG_OBJLEFT_ARGRIGHT_ARGTYPEMot_objPrim_objComp_objTM

5、ATPRICEOP_CODEPTYPEcylindercuboidLENGTHWIDTHHEIGHTCSG的关系模型表示 (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的三个特化子类型说明 var prim_obj:generic prim_obj 是mech_obj的 PTYPE =(c

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

7、aterial; 而来 PRICE:money; LENGTH:real; 这三个属性是cuboid WIDTH:real; 自身的进一步描述 HEIGHT:real; endvar mot_obj mot_obj也不是generic类型 aggregate ID ID:identifier; MAN:manufacturer; ARG_OBJ: key mech_obj; 该属性表达了对一 个对象的引用 T : matrix; endvar comp_obj aggregate ID ID:identifier; MAN:manufacturer; LEFT_ARG_OBJ:key mech

8、_obj; RIGHT_ARG_OBJ: key mech_obj; OP_CODE :( union,difference,intersection,) end一个无孔支架bracket的CSG的关系实例 mech_obj ID MAN TYPE “bracket #1”“plate #1”“plate #2” “Steal,Inc.”“Steal,Inc.”“Steal,Inc.” “comp_obj”“prim_obj”“prim_obj” comp_objID MANLEFT_ARG_OBJRIGHT_ARG_OBJOP_CODE “bracket #1” “steal,Inc.” “

9、plate#1” “plate #2” “union” prim_objID MAN MAT PRICE PTYPE “plate #1”“plate #2” “steal,Inc.”“steal,Inc.” “iron”“iron” 20.0010.00 “cuboid”“cuboid” cuboidIDMANMATPRICE LENGTH WIDTHHEIGHT“plate #1”“plate #2” “steal,Inc.”“steal,Inc.” “iron”“iron” 20.0010.00 10 10 5 2 0.5 0.5 对该模型的总结与讨论特点:1.扩展了对概括抽象和聚集抽象

10、的支 持,方法简单,易理解。 2.通过复制方案实现继承。问题:1.由于复制造成大量冗余,效率低下。 2.没有面向对象行为,即不允许具体 的行为操作。 3.基本对象的语义结构仍然不易表达。 4.为保证一致性,在更新操作时需要进行持 续的信息复制,开销较大。6.2 分子对象 对generic类型的进一步扩展分子对象(Molecular Object)的概念 分子对象由分子集合组成 分子集合将一系列实例(可以是不同类型) 和它们的关系,聚集对象为较高层次的 实体分子对象的结构分类: 不相交/非递归; 相交/非递归; 不相交/递归; 相交/ 递归;相交:指一个分子对象的组成部分是否能被其他同类型分子对

11、象共享。递归/非递归:分子对象的结构是否是递归定义的。四种类型分子的进一步说明不相交/非递归 是最简单的结构 分子集合内的所有分子之间均是两个不 相交的、结构不重叠的,因之也不是递 归定义的。 例如:原始对象集合。相交/非递归的分子对象 分子间存在共享对象成份,即两个分子 可能在一些抵赖的分子对象上重叠。 例如:具有同一平台的两个几何体不相交/递归 具有递归定义的不共享的分子结构, 例:几何对象的CSG表示是一个递归分子 对象的典型例子,它构成一颗二叉树。参照图3.2(支架表示)递归/相交 如果允许CSG中的几何部件被共享,则 它是一个有向无环图DAGCSG1CSG26.3 将QUEL表达式作

12、为类型的关系模型的扩展QUEL:由伯克利分校研制的Ingres查询语言 类似于元组关系演算QUEL的组成:由三个子句组合而成range of子句:类似于from子句,作用为声明元组变量的取值范围,书写格式为range of t is r(t为关系r的一个元组变量)retrieve子句:类似于select子句,作用为确定查询目标,其变量必须已经在range子句中声明,retrive t.A查询t的A属性值where P子句:条件子句,P为选择谓词*请参考“数据库系统概念”第五章一般化引用基制的模型构造纯关系结构示例:E-R:关系表boundaryGEO_IDFACE_ID“cube#1”“cub

13、e#1”“cube#1”“f1”“f6”“f1”mech-partboundaryfacesNMfacesIDSURFACE“f1”“f2”“f6”mechanical_partIDNAME“cube#1”“cube#2”“cube#3”QUEL查询语句序列range of m is mechanical_partrange of f is facesrange of b is boundaryretrive m.all,f.allwhere m.ID = “cube#1” and m.ID = b.GEO_IDand f.ID = b.FACE_IDrange of m is mechani

14、cal_partretrive m.all, m.FACE_JOINwhere m.ID = “cube#1”range of f is facesretrive f.GEO_JOINwhere f.ID= “f1”关系模型的扩展关系属性类型中扩展一个新类型QUEL类型QUEL类型为一个QUEL查询表达式,它可以在被引用是触发执行使用QUEL类型代替外键联接关系,例如上图boundary,从而将原来显示的联接隐含在父关系的某个属性中,只有在动态联接时才被激活上述关系示例的扩展mechanical_partIDNAMEFACE_JOIN“cube#1”“cube#2” “range of f i

15、s faces retrive f.all where f.ID in “f1”, ”“range of ”facesIDSURFACEGEO_JOIN“f1”“f2”“f6”10.015.0“range of m is mechanical_part retrieve m.all where m.ID in “cube#1”, “cube#2”相应的QUEL查询语句利用mech-part的FACE-JOIN和faces中的GEO-JOIN属性代码为:range of m is mech-partretrieve m.all,m.FACE-JOINwhere m.ID = “cube#1”ra

16、nge of f is facesretrieve f.GEO-JOINwhere f.ID=“f1”进一步的扩展range of m is mech-partretrive m.FACE-JOIN.SURFACEwhere m.ID = “cube#1”利用QUEL类型和操作符”.”的重载,可以在构造一个复杂的引用链时,通过简化显式联接的方法简化查询和关系表的构建安全性的缺陷由于采用隐式的联接方法(通过QUEL函数),使得查询结果只有在运行时进行动态联接时才能确定,因而容易产生类型安全性错误例如:mechanical_partIDNAMEFACE_JOIN“cube#3”“cube#2” “

17、range of f is other_faces retrive f.all where f.ID in “f20”, ,”f25”“range of ”other_facesIDSURFACEGEO_JOIN“f20”“f21”“f25”“smooth”“smooth”“rough”“range of m is mechanical_part retrieve m.all where m.ID in “cube#3”安全性的缺陷(续)程序range of m is mechanical_partretrive sum(m.FACE-JOIN.SURFACE)where m.ID = “cu

18、be#1”range of m is mechanical_partretrive sum(m.FACE_JOIN.SURFACE)where m.ID = “cube#3”6.4 关系模型中的抽象数据类型概念:该模型发展得最好的是INGRES,他们在开始研制时已留有与C的接口ADT-INGRES,并进一步发展为POSTGRES。抽象数据类型的建模过程在关系建模时,可以将某些属性显式地说明为一个抽象数据类型ADT例:cuboids ( id: integer, material: char(10), description: char(20), V1: ADT: vertex_type, V2

19、: ADT: vertex_type, V8: ADT: vertex_type)抽象数据类型的建模过程(续)用户在系统提供的环境上,定义一个ADT的接口说明例:define ADT(typename = “vertex_type”, bytesin = 9, bytesout = 9, inputfunc = “to_internal_vertex”, outputfunc = “to_external_vertex”, filename = “/usr/ingres/vertex”)XYZ“X%Y%Z”to_internal_vertexto_external_vertex抽象数据类型的建

20、模过程(续)用户需要用C(informix也允许用java)语言实现ADT的结构读写程序,并存放在按接口说明的路径所示位置在数据库运行时,需有用户需要检索ADT的值,则系统自动进行动态联接,激活并运行相应的函数例:执行一个查询range of c is cuboidsretrieve (c.material, c.description,c.V1)where c.id = 5结果为:materialdescritptionV1XYZcoppermassive1.03.52.0用同样的方法,可以定义并实现在ADT域上的各种用户自定义操作informix中使用UDR工具实现例:define adt

21、op(opname = “Ry”, funcname = “rotate_abount_y”, filename = “/usr/ingres/./rotate_y”, result = ADT: vertex_type, arg1 = ADT: vertex_type, arg2 = ADT: angle_type, prec like “+”)6.5 XSQL支持的层次扩展模型XSQL是Kifer在1992中提出的一个SQL的面向对象的扩展模型SQL-3标准已包括了SQL面向对象的扩展XSQL支持的层次扩展主要针对复合对象模型,其扩展的主要是聚合抽象的实现方法基于纯关系模型的XSQL的基本

22、构成代用 Surrogates:由系统产生并维护的关系元组对象实例的逻辑标识符特点1.唯一性2.系统内部产生,用户不能干涉3.不可修改,在一个对象的生命周期中保持不变4.代用产生的标识符应当保证在“世界范围”内的唯一性,以保证基于广域网的分布式DB中每个元组的唯一性生成方法:processor IDdate & timecomponent of 属性XSQL利用该属性建立元组间的引用关联。关联的语义为part-of特点:component-of属性支持元组间的1:1和1:N的联接E-R表示:关系表的定义create table E1(E1-ID:identifier, E1_DATA:)cre

23、ate table E2(E2-ID:identifier, E2_FATHER:component of (E1), E2_DATA:)component of 的值是与E2的一个元组e2具有R1联系的E1的元组e1的ID值NE1R1E2componet of1多层次的引用结构E1E2E3E4R1R2R3(0,*)(0,*)1 1(1,1)(0,*)(1,1)(1,1)NNN1create table E1(E1-ID:identifier, E1_DATA:)create table E2(E2-ID:identifier, E2_FATHER:component of (E1), E2_

24、DATA:)E2E2-IDE2-FATHERE2-DATA$589000101$589000103$589000100$589000100E3E3-IDE3-FATHERE3-DATA$589000102$589000104$589000100$589000100E4E4-IDE4-FATHERE4-DATA$589000105$589000101E1E1-IDE1-DATA$589000100$589000200代用标识符的组成含有元组对象间的依赖关系,即对属于同一个复合对象的元组,其ID值具有相同的前缀系统对每一个复合对象建立一个map的映射,含有指向该元组的存储位置指针TIDs元组间N:

25、M联系的扩展方法原理:由于XSQL是在纯关系上进行的扩展,因此,不可能表示集合属性,解决N:M关联的方法只能采用第三方关系专门定义一个引用关系表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)E1R1E2N

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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号