1 / 51

第六章 RDBMS 的扩展

第六章 RDBMS 的扩展. 关系模型中概括与聚合的扩展 支持共享与递归的分子对象概念 关系查询语言 QUEL 的扩展及其支持 关系模型中的抽象数据类型 XSQL 语言的扩展 嵌套的关系模型 NF2. ※6.1 关系模型中概括与聚集的扩展. 例 1 :关于人的特化模型示例. Persons. maritalStatus. nationality. sex. Singles. Austrians. Females. …. Canadians. Married. Males. 关系扩展模型 —— 一般化的 m 维特化示例. R. S km.

Download Presentation

第六章 RDBMS 的扩展

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第六章 RDBMS的扩展 • 关系模型中概括与聚合的扩展 • 支持共享与递归的分子对象概念 • 关系查询语言QUEL的扩展及其支持 • 关系模型中的抽象数据类型 • XSQL语言的扩展 • 嵌套的关系模型NF2

  2. ※6.1 关系模型中概括与聚集的扩展 • 例1:关于人的特化模型示例 Persons maritalStatus nationality sex Singles Austrians Females … Canadians Married Males

  3. 关系扩展模型 —— 一般化的m维特化示例 R Skm Sk1 …… R1p1 Rmpm R11 Rm1 …… ……

  4. 扩展的关系模型的一般语法 var R : generic sk1=(R11,…,R1p1); … skm=(Rm1,…,Rmpm); of aggregate keylist s1: key R1; … sn: key Rn; end

  5. 对该语法的说明 • 对generic关系R,具有n个属性,其中: -若是一般的类型,仅用类型符标识它 -若是一个聚集引用,即若引用一个generic关系类型,则需要加前缀“key”进行区分 • 对R可以特化,其m维的特化属性用sk1…skm表示 • 每一个特化属性ski将R的实例化对象划分成pi个不相交的集合,每一个集合为R的一个特化集

  6. 因此,若R有m维特化属性,则将R的实例集进行m种划分,每一种划分都可以获得R的Pi个特化集(Ri1,…,Ripi)因此,若R有m维特化属性,则将R的实例集进行m种划分,每一种划分都可以获得R的Pi个特化集(Ri1,…,Ripi) • M个特化属性sk1,…,skm属于R的属性集 s1,…,sn的子集。

  7. 正确定义一个generic的关系R需要如下规则: • R的n个属性中,每个属性的类型定义Ri(1≤i≤n)是以下两种类型: (1)是一个类型标识符(前缀key必须不出现),它表示了 Ri是一个原子值。 (2)是一个generic的标识符,则前缀key必须在定义中出现,它表示对其他对象的引用。 • Keylist——主关键属性表是{s1,…,sn}的子集

  8. 每一个特化类型Rij(1≤i≤m,1≤j≤Pi)都是一个generic标识符,其关键字域与R的相同,且其属性在定义时就要copy父类型除特化属性外的所有属性。每一个特化类型Rij(1≤i≤m,1≤j≤Pi)都是一个generic标识符,其关键字域与R的相同,且其属性在定义时就要copy父类型除特化属性外的所有属性。 • 特化属性Ski(1≤i≤m)都与R的某个属性Sj( 1≤j≤n)相同。 • 如果Ski与Sj相同,则Sj的类型—Rj的值域是(Ri1,…,Ripi)。

  9. 一个应用实例 — 基于扩展关系模型的CSG表示 • 参看P31页CSG的形式化表示: <mechanical part> ::= <object> <object> ::= <primitive>| <object> <motion op> <motion arguments>| <object> <set operator> <object> <primitive> ::= cube | cylinder | cone | … <motion op> ::= rotate | scale | translate | … <set operator> ::= union | intersection |difference |…

  10. 由此看出,一个object 有三种类型: 1. Prim_obj (原始对象) 2. Mot_obj (运动对象) 3. Comp_obj (组合对象) 如下图:

  11. 扩展CSG实例化关系模型 ID Mech_obj MAN LEFT_ARG RIGHT_ARG ARG_OBJ TYPE Comp_obj Prim_obj Mot_obj OP_CODE PRICE MAT T PTYPE LENGTH WIDTH cylinder … cuboid HEIGHT

  12. 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

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

  14. var cuboid cuboid不是generic类型, aggregate [ID] 它没有进一步特化(没有子类) ID:identifier; MAN:manufacturer; 这四个属性继承父类 MAT:material; 而来 PRICE:money; LENGTH:real; 这三个属性是cuboid WIDTH:real; 自身的进一步描述 HEIGHT:real; end

  15. var mot_obj mot_obj也不是generic类型 aggregate [ID] ID:identifier; MAN:manufacturer; ARG_OBJ: key mech_obj; 该属性表达了对一 个对象的引用 T : matrix; end

  16. var comp_obj aggregate [ID] ID:identifier; MAN:manufacturer; LEFT_ARG_OBJ:key mech_obj; RIGHT_ARG_OBJ: key mech_obj; OP_CODE :( union,difference,intersection,…) end

  17. 一个无孔支架bracket的CSG的关系实例

  18. 对该模型的总结与讨论 特点:1.扩展了对概括抽象和聚集抽象的支 持,方法简单,易理解。 2.通过复制方案实现继承。 问题:1.由于复制造成大量冗余,效率低下。 2.没有面向对象行为,即不允许具体 的行为操作。 3.基本对象的语义结构仍然不易表达。 4.为保证一致性,在更新操作时需要进行持 续的信息复制,开销较大。

  19. ※6.2分子对象— 对generic类型的进一步扩展 • 分子对象(Molecular Object)的概念 — 分子对象由分子集合组成 — 分子集合将一系列实例(可以是不同类型) 和它们的关系,聚集对象为较高层次的 实体

  20. 分子对象的结构分类: — 不相交/非递归; — 相交/非递归; — 不相交/递归; — 相交/ 递归; 相交:指一个分子对象的组成部分 是否能被其他同类型分子对象共享。 递归/非递归:分子对象的结构是否 是递归定义的。

  21. 四种类型分子的进一步说明 • 不相交/非递归 ——是最简单的结构 — 分子集合内的所有分子之间均是两个不 相交的、结构不重叠的,因之也不是递 归定义的。 例如:原始对象集合。

  22. 相交/非递归的分子对象 — 分子间存在共享对象成份,即两个分子 可能在一些抵赖的分子对象上重叠。 例如:具有同一平台的两个几何体

  23. 不相交/递归 — 具有递归定义的不共享的分子结构, 例:几何对象的CSG表示是一个递归分子 对象的典型例子,它构成一颗二叉树。参照图3.2(支架表示)

  24. 递归/相交 — 如果允许CSG中的几何部件被共享,则 它是一个有向无环图DAG

  25. CSG1 CSG2

  26. 6.3 将QUEL表达式作为类型的关系模型的扩展 • QUEL:—由伯克利分校研制的Ingres查询语言 —类似于元组关系演算 • QUEL的组成:由三个子句组合而成 —range of子句:类似于from子句,作用为声 明元组变量的取值范围,书写格式为 range of t is r(t为关系r的一个元组变量) —retrieve子句:类似于select子句,作用为确 定查询目标,其变量必须已经在range 子句中声明,retrive t.A 查询t的A属性值 —where P子句:条件子句,P为选择谓词 *请参考“数据库系统概念”第五章

  27. M N boundary mech-part faces 一般化引用基制的模型构造 • 纯关系结构示例: E-R: • 关系表

  28. QUEL查询语句序列 • range of m is mechanical_part range of f is faces range of b is boundary retrive m.all,f.all where 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”

  29. 关系模型的扩展 • 关系属性类型中扩展一个新类型—QUEL类型 • QUEL类型为一个QUEL查询表达式,它可以在被引用是触发执行 • 使用QUEL类型代替外键联接关系,例如上图boundary,从而将原来显示的联接隐含在父关系的某个属性中,只有在动态联接时才被激活

  30. 上述关系示例的扩展

  31. 相应的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”

  32. 进一步的扩展 • range of m is mech-part retrive m.FACE-JOIN.SURFACE where m.ID = “cube#1” • 利用QUEL类型和操作符”.”的重载,可以在构造一个复杂的引用链时,通过简化显式联接的方法简化查询和关系表的构建

  33. 安全性的缺陷 • 由于采用隐式的联接方法(通过QUEL函数),使得查询结果只有在运行时进行动态联接时才能确定,因而容易产生类型安全性错误 • 例如:

  34. 安全性的缺陷(续) • 程序 range of m is mechanical_part retrivesum(m.FACE-JOIN.SURFACE) where m.ID = “cube#1” range of m is mechanical_part retrivesum(m.FACE_JOIN.SURFACE) where m.ID = “cube#3”

  35. 6.4 关系模型中的抽象数据类型 • 概念:该模型发展得最好的是INGRES,他们在开始研制时已留有与C的接口——ADT-INGRES, 并进一步发展为POSTGRES。

  36. 抽象数据类型的建模过程 • 在关系建模时,可以将某些属性显式地说明为一个抽象数据类型ADT • 例: cuboids ( id: integer, material: char(10), description: char(20), V1: ADT: vertex_type, V2: ADT: vertex_type, … V8: ADT: vertex_type)

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

  38. 抽象数据类型的建模过程(续) • 用户需要用C(informix也允许用java)语言实现ADT的结构读写程序,并存放在按接口说明的路径所示位置 • 在数据库运行时,需有用户需要检索ADT的值,则系统自动进行动态联接,激活并运行相应的函数

  39. 例:执行一个查询 range of c is cuboids retrieve (c.material, c.description,c.V1) where c.id = 5 • 结果为:

  40. 用同样的方法,可以定义并实现在ADT域上的各种用户自定义操作用同样的方法,可以定义并实现在ADT域上的各种用户自定义操作 • informix中使用UDR工具实现 • 例: define adtop (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 “+”)

  41. 6.5 XSQL支持的层次扩展模型 • XSQL是Kifer在1992中提出的一个SQL的面向对象的扩展模型 • SQL-3标准已包括了SQL面向对象的扩展 • XSQL支持的层次扩展主要针对复合对象模型,其扩展的主要是聚合抽象的实现方法

  42. 基于纯关系模型的XSQL的基本构成 • 代用 Surrogates:由系统产生并维护的关系元组对象实例的逻辑标识符 • 特点 • 唯一性 • 系统内部产生,用户不能干涉 • 不可修改,在一个对象的生命周期中保持不变 • 代用产生的标识符应当保证在“世界范围” 内的唯一性,以保证基于广域网的分布式DB中每个元组的唯一性 生成方法: processor ID date & time

  43. componet of R1 E1 E2 • 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 的值是与E2的一个元组e2具有R1联系的E1的元组e1的ID值 1 N

  44. E1 (0,*) (0,*) 1 1 R2 R1 (1,1) N N (1,1) E2 E3 1 (0,*) R3 (1,1) N E4 • 多层次的引用结构 create table E1(E1-ID:identifier, E1_DATA:…) create table E2(E2-ID:identifier, E2_FATHER:component of (E1), E2_DATA:…)

  45. 代用标识符的组成含有元组对象间的依赖关系,即对属于同一个复合对象的元组,其ID值具有相同的前缀代用标识符的组成含有元组对象间的依赖关系,即对属于同一个复合对象的元组,其ID值具有相同的前缀 • 系统对每一个复合对象建立一个map的映射,含有指向该元组的存储位置指针TIDs

  46. 元组间N:M联系的扩展方法 • 原理:由于XSQL是在纯关系上进行的扩展,因此,不可能表示集合属性,解决N:M关联的方法只能采用第三方关系——专门定义一个引用关系表R,将两个有联系的元组对应起来 • reference属性,它建立了一个引用关联

  47. N M R1 E1 E2 一般的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))

  48. XSQL模型的评价 创新点: • 元组的逻辑标识符概念的引入 • 在关系模型的基础上建立了关系间的层次结构 • 解决了数据类型的QUEL的安全隐患 局限性: • component-of属性可以较好支持1:N联系,但是在共享低层对象时,由于关系不能表示集合,会造成大量的冗余,即一个引用就需产生一个对象元组,由此造成查询的复杂低效,和一致性更新维护困难

More Related