Rdbms
Download
1 / 51

第六章 RDBMS 的扩展 - PowerPoint PPT Presentation


  • 115 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 第六章 RDBMS 的扩展' - ingrid-franks


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Rdbms
第六章 RDBMS的扩展

  • 关系模型中概括与聚合的扩展

  • 支持共享与递归的分子对象概念

  • 关系查询语言QUEL的扩展及其支持

  • 关系模型中的抽象数据类型

  • XSQL语言的扩展

  • 嵌套的关系模型NF2


※6.1 关系模型中概括与聚集的扩展

  • 例1:关于人的特化模型示例

Persons

maritalStatus

nationality

sex

Singles

Austrians

Females

Canadians

Married

Males


关系扩展模型 —— 一般化的m维特化示例

R

Skm

Sk1

……

R1p1

Rmpm

R11

Rm1

……

……


扩展的关系模型的一般语法

var R : generic

sk1=(R11,…,R1p1);

skm=(Rm1,…,Rmpm);

of

aggregate keylist

s1: key R1;

sn: key Rn;

end


对该语法的说明

  • 对generic关系R,具有n个属性,其中:

    -若是一般的类型,仅用类型符标识它

    -若是一个聚集引用,即若引用一个generic关系类型,则需要加前缀“key”进行区分

  • 对R可以特化,其m维的特化属性用sk1…skm表示

  • 每一个特化属性ski将R的实例化对象划分成pi个不相交的集合,每一个集合为R的一个特化集


  • 因此,若R有m维特化属性,则将R的实例集进行m种划分,每一种划分都可以获得R的Pi个特化集(Ri1,…,Ripi)

  • M个特化属性sk1,…,skm属于R的属性集

    s1,…,sn的子集。


Generic r
正确定义一个generic的关系R需要如下规则:

  • R的n个属性中,每个属性的类型定义Ri(1≤i≤n)是以下两种类型:

    (1)是一个类型标识符(前缀key必须不出现),它表示了 Ri是一个原子值。

    (2)是一个generic的标识符,则前缀key必须在定义中出现,它表示对其他对象的引用。

  • Keylist——主关键属性表是{s1,…,sn}的子集


  • 每一个特化类型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)。


一个应用实例 — 基于扩展关系模型的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 |…


  • 由此看出,一个object 有三种类型:

    1. Prim_obj (原始对象)

    2. Mot_obj (运动对象)

    3. Comp_obj (组合对象)

    如下图:


扩展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


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


var cuboid cuboid不是generic类型,

aggregate [ID] 它没有进一步特化(没有子类)

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 [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
一个无孔支架bracket的CSG的关系实例


对该模型的总结与讨论

特点:1.扩展了对概括抽象和聚集抽象的支

持,方法简单,易理解。

2.通过复制方案实现继承。

问题:1.由于复制造成大量冗余,效率低下。

2.没有面向对象行为,即不允许具体

的行为操作。

3.基本对象的语义结构仍然不易表达。

4.为保证一致性,在更新操作时需要进行持

续的信息复制,开销较大。


6 2 generic
※6.2分子对象— 对generic类型的进一步扩展

  • 分子对象(Molecular Object)的概念

    — 分子对象由分子集合组成

    — 分子集合将一系列实例(可以是不同类型)

    和它们的关系,聚集对象为较高层次的

    实体


相交:指一个分子对象的组成部分

是否能被其他同类型分子对象共享。

递归/非递归:分子对象的结构是否

是递归定义的。


四种类型分子的进一步说明

  • 不相交/非递归 ——是最简单的结构

    — 分子集合内的所有分子之间均是两个不

    相交的、结构不重叠的,因之也不是递

    归定义的。

    例如:原始对象集合。


  • 相交/非递归的分子对象

    — 分子间存在共享对象成份,即两个分子

    可能在一些抵赖的分子对象上重叠。

    例如:具有同一平台的两个几何体


  • 不相交/递归

    — 具有递归定义的不共享的分子结构,

    例:几何对象的CSG表示是一个递归分子

    对象的典型例子,它构成一颗二叉树。参照图3.2(支架表示)


  • 递归/相交

    — 如果允许CSG中的几何部件被共享,则

    它是一个有向无环图DAG


CSG1

CSG2


6 3 quel
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为选择谓词

    *请参考“数据库系统概念”第五章


M

N

boundary

mech-part

faces

一般化引用基制的模型构造

  • 纯关系结构示例:

    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 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,从而将原来显示的联接隐含在父关系的某个属性中,只有在动态联接时才被激活



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

  • 利用QUEL类型和操作符”.”的重载,可以在构造一个复杂的引用链时,通过简化显式联接的方法简化查询和关系表的构建


安全性的缺陷

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

  • 例如:


安全性的缺陷(续)

  • 程序

    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”


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)


抽象数据类型的建模过程(续)

  • 用户在系统提供的环境上,定义一个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”


抽象数据类型的建模过程(续)

  • 用户需要用C(informix也允许用java)语言实现ADT的结构读写程序,并存放在按接口说明的路径所示位置

  • 在数据库运行时,需有用户需要检索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 “+”)


6 5 xsql
6.5 XSQL支持的层次扩展模型

  • XSQL是Kifer在1992中提出的一个SQL的面向对象的扩展模型

  • SQL-3标准已包括了SQL面向对象的扩展

  • XSQL支持的层次扩展主要针对复合对象模型,其扩展的主要是聚合抽象的实现方法


基于纯关系模型的XSQL的基本构成

  • 代用 Surrogates:由系统产生并维护的关系元组对象实例的逻辑标识符

  • 特点

    • 唯一性

    • 系统内部产生,用户不能干涉

    • 不可修改,在一个对象的生命周期中保持不变

    • 代用产生的标识符应当保证在“世界范围” 内的唯一性,以保证基于广域网的分布式DB中每个元组的唯一性

      生成方法:

processor ID

date & time


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


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:…)



元组间代用标识符的组成含有元组对象间的依赖关系,即对属于同一个复合对象的元组,其N:M联系的扩展方法

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

  • reference属性,它建立了一个引用关联


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))


XSQL代用标识符的组成含有元组对象间的依赖关系,即对属于同一个复合对象的元组,其模型的评价

创新点:

  • 元组的逻辑标识符概念的引入

  • 在关系模型的基础上建立了关系间的层次结构

  • 解决了数据类型的QUEL的安全隐患

    局限性:

  • component-of属性可以较好支持1:N联系,但是在共享低层对象时,由于关系不能表示集合,会造成大量的冗余,即一个引用就需产生一个对象元组,由此造成查询的复杂低效,和一致性更新维护困难


局限性代用标识符的组成含有元组对象间的依赖关系,即对属于同一个复合对象的元组,其(续)

  • 对引用属性的支持力度很弱。由于reference属性相当于纯关系系统中的联接关系,因此直接按照引用属性链完成检索是不可能的,只能采用多个表的JOIN方法进行显式地重构。

  • 由于复合对象的管理由系统完成,即map对用户不可见,因而进行复合对象物理存储的集束(clustering)优化是困难的(即在一个页面上汇集不同元组组成的复合对象)。


ad