文档库 最新最全的文档下载
当前位置:文档库 › 三 类型与对象--面向对象数据库

三 类型与对象--面向对象数据库

三 类型与对象--面向对象数据库
三 类型与对象--面向对象数据库

本文由fanjun1984a贡献

pdf1。

第三章

类型与对象

Related to text book Chp. 7 (English book)

目录

对象与值 对象类型 基于元组的对象类型 实例 对象标识符 引用 对象类型扩展 etc

类型与对象

基于Generic对象模型(GOM) 类型系统(sort type)的发展

– 类型:<类型名,{值域},{操作}> – 早期语言只提供简单类型 – 进一步复杂类型

简单类型、结构类型、串、指针……

– Ada提出抽象数据类型ADT(abstract data type)

用户自己定义结构、操作 系统提供打包功能 以类型方式提供使用

几种简单sort类型

类型-续

变量说明:指明一个变量的类型 变量赋值:类型的实例化操作 – 实例化结果:指定一个值 – 在实例的整个生命周期,值是不变的,因此类 型的实例无需标识,值就是其本身的标识 – 变量的重新赋值是重新实例化过程,原实例已 消亡。 类型系统的问题:无法描述实例的状态变化,即 不同的值代表了某个实例在不同时刻的不同状态

面向对象类型

对象系统强调的是对象状态的变化 对象生命周期中的某一瞬间是一个状态 (对象属性的某个值集) 当对象属性值被修改时,表明该对象由一 个状态转化为另一个状态

面向对象类型-续

为了能识别不同状态下的对象,必须进行 标识 ——唯一性约束 对象状态转化时内部变化必须合理,因此 需要进行封装——完整性约束 对象O由(id#, Type, Rep)三元组表示

GOM对象类型框架定义

对象类型名唯一 Public子句提供外部说明 Body子句描述结构主体 操作子句描述接口说明

– 操作名(唯一性) – 参数说明

操作实现子句——描述 操作体

对象结构

结构主体由三种基本结构及其组合而 成 –元组结构(tupe_structure) –集合结构(set_structure) –列表结构(list_structure)

元组结构定义

Typei 可以是 简单sort; 组合sort; 对象类型;混合类 型;集合类型;表类 型;直接递归类型等

10

内嵌的属性值读写操作

VCO操作(Value receiving operation)

– 值接收操作 – Declare attri: → type i; – 读取当前第i个属性状态

VTO操作(Value returning operation)

– 值返回操作 – Declare attri: ← type i; – 将类型为Type i的状态写入第i个属性中

11

举例

直接递归示例

维护person的对象实例状态的操作 Var p:person … p.age:=p.age+1 p.age (p.age+1)

12

定义“顶点”的对象类型

定义立方体的对象类型

定义原材料的对象类型

立方体对象模型的定义

13

类型的实例化

一个对象类型框架可产生一系列对象实例 内嵌的创建对象操作——“create” GOM类型的实例化过程

– 第一步 – 第二步 或 说明对象变量 执行赋值语句: Var myCuboid :Cuboid; myCuboid:=Cuboid¥create; myCuboid.create;

14

赋值语句的作用

(1)产生了一个初始化的空壳实例; (2)对该空壳实例赋予一个对象标记OID; (3)将OID(或实例地址)赋给变量myCuboid; (4)将空壳属性值初始化为: Int:0;float:0.0;char:’\0’;bool:false;复杂对 象类型:NULL; (5)当前该OID还仅是逻辑表示,不能被用户访问。 *产生了一个仅仅与OID相联系的一个空对象。

-第三步:对空对象的每个属性进行实际值 的初始化工作

15

myCuboid y V8 V7 id1 Cuboid mat:NULL value:0.0 v1:NULL v2:NULL v3:NULL v4:NULL v5:NULL v6:NULL v7:NULL v8:NULL x

V4

V3 V5 V6

V1

V2

图7.2 The Topological Representation Of a Cuboid 图7.3 The “Skeleton” of a New Cuboid Instance

16

对象标识

标识对象的三种方法:

– – – 内容标识—关键字标识符 地址标识—物理对象标识符 逻辑对象标识符

17

内容标识

内容标识的问题(内容依赖)

– 概念的混淆:将两对象相等与两对象内容相等 混为一谈。 – 一致性管理的困难。 例1:大商场中,同一商品在不同柜组有不同售 价,商品的主key为(商品号+柜组号)。 例2:若主key为(人名+地址),当搬家而修改 库时,给完整性维护带来困难。

18

地址标识

地址标识

– 用对象分配的地址空间表示对象。

地址标识问题(地址依赖)

– 存储空间的重用导致引用错误且无法查找。 例如新对象占用已删除对象空间。 – 分布式系统中对象经常被移动位置。 – DB性能调整时常常需要重构硬盘存储区。

19

逻辑对象标识符 OID

对于GOM,每个对象可以描述为下述三 元组 O = (id#,Type,Rep)

– Id# :系统产生的对象O的逻辑标识符 – Type:对象O的类型 – Rep:对象的内部状态,即属性的当前值。

20

OID的特点

对象实例初始化时,系统产生一个唯一的 OID 一个对象的OID在整个生命周期都永远保 持 当对象删除后,其OID值永不复用 对象的存储位置与OID值有唯一的映射 21

共享子对象

标准的RDBMS:由于INF约束,不支持对象的引用 扩展的INF2的RDBMS,只能支持层次结构,不支持 网状结构 从需求而言,复杂DB应用要求支持网络结构 O-O模型中,一个对象模型可以不受限制地引用其他 对象,同时也可以被其他对象引用--构造出网状 拓扑结构 GOM模型通过多对象共享机制,支持网络结构应用

22

共享子对象例子

23

共享子对象的副作用

对象的状态变化会被其他引用对象可见 例:一个对Material对象的修改: anotherCuboid.mat.name = ”Copper”; anotherCuboid.mat.SpecWeight = 0.90 会被myCuboid所指id1可见

24

Referencing

复制(copy)语义:将一个值真实地复制到一 个sort类型的变量或属性中; 引用(referencing)语义:赋值语句处理的是 一个对象时,只将该对象的OID赋值到相应的 变量或属性中; 引用语句与C中的指针赋值相似,是一个间址 操作。

25

Dereferencing

Dereferencing语义:引用语义沿着引用链 的传递。 Dereferencing语义是通过“”操作符的重 载,构造的引用链实现 整个对象结构可以通过引用语义构成一个 网状结构 一个引用查找的实现是沿着引用链,导航 式地对逐个对象实例的查询

26

Var someMaterial:Material; w:float; muCuboid:Cuboid; … (1)someMaterial.create; (2)someMaterial.name:=“Carbon”; (3)someMaterial.specWeight:=0.75; (4)myCuboid.mat:=someMaterial; (5)w:=myCuboid.mat.specWeight; myCuboid

id88

Material name:”Carbon” specWeight:0.75

someMaterial id1 Cuboid mat:id88 value:39.99 v1:id11

27

聚合类型 collection

GOM模型提供body二种内嵌的聚合类型 的类型构造子:

– 集合(set)结构 – 列表(list)结构

28

集合结构的对象类型

集合结构的对象类型是一个集合对象 表达如下: Type set typeName is public … body {Element type} … end 集合元素类型 Element Type 可以是 sort 类型,也 可以是对象类型,或用户定义类型

29

type SetTypeName is Public… body {Element Type} … end type SetTypeName; type TelephoneNumbers is {int};

type TelephoneNumbers is Public… body {int} operations … implementation … end type TelephoneNumbers;

声明一个变量并赋值 var guidosTelephoneNumbers: TelephoneNumbers; … (1) guidosTelephoneNumbers.create; (2) guidosTelephoneNumbers.insert(6082080); (3) guidosTelephoneNumbers.insert(28833);

30

声明一个变量 var theGOM24HourSupportHotLine : guidosTelephoneNumbers; … theGOM24HourSupportHotLine := guidosTelephoneNumbers; theGOM24HourSupportHotLine.insert (6083968);

guidosTelephoneNumbers

theGOM24HourSupportHotLine

id4711

TelephoneNumbers {6082080,6083968,28833}

Fig. 7.7 Object Base Extension with a Shared Set Object

31

type SetTypeName is Public… body {ElementType} … end type SetTypeName; var workPieceCuboids:CuboidSet; valuableCuboids:CuboidSet; … workPieceCuboids.insert(myCuboid); … valuableCuboids.insert(…);

type CuboidSet is {Cuboid}; … end type Cuboid;

集合结构的类型也 可以是复杂类型

32

集合结构的对象类型特点

需要定义一个元素(Element)的类型 集合对象类型本身可以用于定义对象属性 的类型 集合对象类型支持数学上的Set概念,即不 允许有相同元素存在。(GOM要作唯一性 检查) 当Element是sort类型时,插入概念是复制 语义(插入值);

33

集合结构的对象类型特点-续

当Element是对象类型时,插入概念是引用 语义(插入OID); 集合对象允许共享,当有共享发生时,为 共享子对象。 共享概念的引入,使集合对象的概念可以 作为对象库概念。 共享的副作用 — 修改可见

34

workPiece Cuboids id59 CuboidSet {id1,id2,id3} id77 name:”Iron” specWeight:0.89 id2 mat: id77 value:19.95 v1:id21 v2:id22 v3:id23 v4:id24 v5:id25 v6:id26 v7:id27 v8:id28 id21 x: 0.0 y: 0.0 z: 0.0

valuable Cuboids id60 CuboidSet {id3}

Material id1 mat: id77 value:39.99 Cuboid v1:id11 v2:id12 v3:id13 v4:id14 v5:id15 v6:id16 v7:id17 v8:id18 id11 x: 0.0 Vertex y: 0.0 z: 0.0

id99 name:”Gold” specWeight:1.32 id3 mat: id99 value:89.90 v1:id31 v2:id32 v3:id33 v4:id34 v5:id35 v6:id36 v7:id37 v8:id38 id31 x: 0.0 y: 0.0 z: 0.0 id38 x: 0.0 … y: 3.0 35 z: 3.0

id18 x: 0.0 … y: 1.0 z: 1.0

id28 x: 0.0 … y: 2.0 z: 2.0

对象类型的扩展

GOM通过with extension子句隐式地产生并维护一个特定对象 类型的集合对象类

型,用以管理该类型实例化的对象集合。 例 type Cuboid with extention is … end type Cuboid 系统自动产生一个set Cuboid对象类型Cuboids。并将所有 Cuboid的实例化对象自动插入到Cuboids中。 Cuboids类型只允许用户使用ext (Cuboid)进行访问。 不允许任何显式地删除、插入等操作 利用扩展概念建立对象实例库

36

列表结构对象类型

列表结构对象类型的特点

– 列表中的元素是有序的 – 列表的数学概念是bag,即允许相同的元素在表 中不同位置多次出现 – 列表中元素的类型可以是sort type或object type

表结构对象类型的定义方式

type Name is public … body <Element type> …

37

id299

Cuboid2 id899 VertexList 

mat: id77 value: 250.00 vertices: id899

type VertexList is Public… body <vertex> operations … implementation … end type VertexList;

type Cuboid2 is Public… body [mat: Material; value: float; vertices:VertexList;] operations … implementation … end type Cuboid2;

38

类型安全

非类型安全数据类型:数据库的组成(属 性,变量,集合元素等),并不限制为一 个特定的类型(不需要类型说明),即编 译时不对它们进行类型检查,好处是使用 灵活。 问题:大量的错误只能在运行时被检测出 来

39

类型安全-续

类型安全数据类型:对所有构件均限制了数据类 型。

– – 强类型语言 GOM为强类型 类型安全 高效,在运行时无需作类型检查。 支持结构化设计 类型约束的组件为:属性、变量、操作参数、表和集 合类型的元素。 强类型语言编译时检查表达式中类型的兼容性。 40

优点

– – – – –

type Person is Public… body [name: string; age: int; spouse:Person; livesIn: City;] operations … implementation … end type Person;

type City is Public… body [name: string; mayor: Person; inhabitants: PersonSet;] operations … implementation … end type City; type PersonSet is Public… body {Person} operations … implementation … end type PersonSet;

Var cityOfLA: City; mickey,mini,donald;Person; …

41

cityOfLA City name: “Los Angeles” mayor: id188 inhabitants: id115 id115 PersonSet {id193,id188,id372}

id571

id188

Person id372

Person id193

Person

name: “Mickey Mouse” age: 60 spouse: id372 livesIn: id571

name: “Mini Mouse” age: 50 spouse: id188 livesIn: id571

name: “Donald Duck” age: 45 spouse: NULL livesIn: id571

mickey

Fig7.11 Person和City 的对象库

donald

42

ageOfSomeBody:=cityOfLA. mayor. spouse. age; City int var Person totalAge,ageOfSomeBo Person dy:int; int anyBody:Person; name:string; … (1) PersonSet ageOfSomeBody:=city OfLA.mayor.spouse.ag Person City e; foreach(anyBody in cityOfLA.inhabitants) (2) foreach(anyBody in totalAge:=totalAge+anyBody.age; cityOfLA.inhabitants) int int Person totalAge:=totalAge+any int Body.age;

43

持久性

持久性Persistence :当程序的执行终止 后,其创建的构件和数据仍然存在 GOM中持久化构件

– 对象类型 – 对象实例 – 变量

44

类型的持久化

类型的持久性由Persistence定义符说明

– 例:Persistence Type Vertex is 其中,持久性类型名称不能被重定义

持久性类型的依赖关系

– 在元组结构类型中,持久化类型的所有属性都 必须是持久的 – 在聚合结构类型中,其元素类型也必须持久。 – 在继承的is-a层次内部,一个持久类型的超类型 (祖先)必须是持久的

45

对象的持久性

一个对象实例的持久化可以采用以下几种 途径:

– 按类型持久:一个持久化类型的实例可以自动 确认为持久

缺点:使用不方便,在需要持久和临时共存时,操 作困难。有的系统采用持久意向概念,即持久类型 实例化的对象可能潜在变为持久

– 按创建持久—将持久操作与初始化操作绑定, 即将持久对象与临时对象采用不同的初始化子

46

对象的持久性-续

– 提供一个持久化操作,即用显式的持久化操作 将对象持久化。即将持久化声明延迟到对象创 建之后 – 按引用声明持久:仅对一个(或多个)对象显 式的声明为持久对象(根对象)。其他对象的 持久化定义为沿着根对象的引用链进行持久化 扩展

优点:持久化定义简洁 缺点:系统确定持久化对象的代价较大

47

GOM的对象持久化方法

GOM采用创建持久和提供一个持久化操作 两种方法:

– GOM提供一个持久化操作子(persistence)

例如:aVertex.persistence aVertex在持久化操作之前仍然是临时对象

– GOM提供初始化阶段的持久化操作 GOM不支持按引用声明持久方法,GOM不能 确保持久对象不引用临时对象,带来的危险行为 是: – 当用户从一个持久化对象中引用了一个临时对 象时,会导致浮动引用 48

持久对象的实现方法

地址依赖方法:

– 当声明一个对象持久化时,系统初始化一特定 的外存区域,并提供一个持久化地址指针

OID持久方法:

– 对持久化对象的标识进行持久化

49

持久对象的存储和访问

有三种访问策略:

– 名字法:在持久化区域内按名字查找——不适 合有大量对象的情况 – 通过OID或持久化指针查找 – 系统对每一个持久类型提供一个持久性容器— —其区间存放同类型的持久对象

GOM支持名字法和通过OID或持久化指针 查找种方法

50

变量的持久化

变量的持久化声明:

– Persistence var myVertices:Vertexset; aVertex:Vertex; – 使用要求:

变量名必须保持唯一性,无二义性 变量类型必须已定义为持久性

– 持久性变量由系统管理:它的值在定义它的程 序结束后,仍然有定义 – 问题:系统不能保证持久性变量引用一个临时 对象,因此会产生悬空引用,即它的值在再次 赋值前是未定义的 51

垃圾回收

对于不再被使用的对象,应当及时从DB 库中删除, 删除的复杂性由以下原因引起:

– 对象的共享 – 不可及对象的检查困难

对象O既不是任何集合或列表的成员,又不被任何 属性或变量引用; 对无递归引用的对象,一般采用引用计数器法; 对递归引用,采用Garbage算法。

52

垃圾回收-续

– 提供一个对象的显示删除操作,该操作需要不 但能删除最外层的对象,也能删除它的引用对 象 – 因此delete操作需定义一个重载操作进行引用 链的捆绑删除 问题:显示删除容易造成共享对象的悬空访问

53

o1

o2

54

习题 7.2 7.4 7.9

55

数据库新技术及其发展趋势

数据库新技术及其发展 趋势 公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

数据库新技术及其发展趋势 数据库技术是计算机科学的重要分支,主要研究如何安全高效地管理大量、 持久、共享的数据。数据库的研究始于20世纪60年代中期,它的发展有着三大 标志性事件。第一件大事, 1969年IBM公司研制开发了基于层次模型的数据库管理系统的商品化软件InformationManagement System,即IMS系统,是首例成功的数据库管理系统软件。第二件大事,美国数据系统语言协会CODASYL (Conference On DataSystem Language)下属的数据库任务组DBTG(Data Base TaskGroup)对数据库方法进行系统的研究和讨论后,于20世纪60年代末到70年代初提出了若干报告。DBTG报告确定并建立了数据库系统的许多概念、方法和技术。DBTG所提议的方法是基于网状结构的,它是数据库网状模型的基础和典型代表。第三件大事, 1970年IBM公司San Jose研究实验室的研究员E. F. Codd博士发表了题为“大型共享数据库数据的关系模型”的论文,提出数据库的关系模型,从而开创了数据库关系方法和关系数据理论的研究领域,为关系数据库技术奠定了理论基础, E. F. Codd因此在1981年获得ACM图录奖。20世纪80年代几乎所有新开发的 系统都是关系系统。随着计算机系统硬件、Internet和Web技术的发展,数据库系统所管理的数据格式、数据处理方法以及应用环境不断变化,同时人工智能、 多媒体技术和其他学科技术的发展,数据库技术面临着前所未有的挑战。 当前数据库技术发展的现状,关系数据库技术仍然是主流 国内数据库的发展趋势也是飞速的,在数据库技术的当前及未来发展里程中, 数据仓库以及基于此技术的商业智能无疑将是大势所趋。IBM的实验室在这方面进行了10 多年的研究, 并将研究成果发展成为商用产品。除了用于

面向对象数据库技术的研究综述

面向对象数据库技术的研究综述 摘要:本文在提出传统数据库技术的不足及新应用领域需求的同时,介绍了面向对象数据库的特征与功能,并探讨了该技术面l临的一些问题;最后还对这一新技术的前景进行了展望。 关键词:面向对象;数据库技术;面向对象数据库 面向对象的思想首先出现在程序设计方法中。这一思想指导下产生的面向对象技术是一种按照人们对现实世界习惯的认识论思维方式来研究和模拟客观世界的方法学。它将现实世界中的任何事物均视为“对象”.将客观世界看成是由许多不同种类的对象构成。不同对象之间的相互联系和相互作用就构成了完整的客观世界。面向对象方法学所引入的对象、方法、消息、类、实例、继承性、封装性等一系列重要概念和良好机制为人们认识和模拟客观世界分析、设计和实现大型复杂系统奠定了良好的科学技术基础。 随着研究的不断深入和发展。面向对象技术已大大地超出了程序设计语言的范围。并渗透和应用到了诸多复杂的工程领域。并给软件工程、信息系统、工业设计与制造等带来了深远的影响。如面向对象的软件工程、面向对象的信息管理系统、面向对象的操作系统、面向对象的数据库系统、面

向对象的专家系统、面向对象的开发工具和面向对象的用户界面等的出现。其中,面向对象的数据库系统已成为当今数据库领域研究和发展的主要方向之一。 数据库技术与面向对象技术相结合已成为当前数据库技术研究、应用和发展的一个重要方向。将面向对象技术应用到数据库系统中。使数据库管理系统能够支持面向对象数据模型和数据库模式。这对于提高数据库系统模拟和操纵客观世界的能力,扩大数据库应用领域具有重要的意义:将面向对象技术应用到数据库的集成开发环境中。使数据库应用开发工具能够支持面向对象的开发方法井提供相应的开发手段,这对于提高应用软件的开发质量和扩大软件的应用推广是十分重要的。纵观数据库系统的发展,面向对象(00)技术的诞生为数据库的发展带来了希望。尽管目前面向对象数据库技术的实际发展与关系数据库系统相比,它的理论研究和形式化、标准化等方面还不完备和成熟。但是。从面向对象技术的前景和应用来看,面向对象数据库系统将代表着新一代数据库系统的发展方向。 一、新应用领域的需求及面向对象数据库的发展 从80年代以来,数据库技术在商业领域的巨大成功激发了其它领域对数据库技术需求的迅速增长。这些新的领域包括:CAD/CAM、CIM、CASE、OIS(办公信息系统)、GlS (地理信息系统)、知识库系统和实时系统等。新的应用领

面向对象的数据库技术

面向对象的数据库技术 肖阳辉 摘要:面向对象的数据库极有可能是数据库发展的方向,关系型数据库已显得力不从心,面向对象技术已经渗透到了数据库领域,把面向对象的方法和数据库技术结合起来可以使数据库系统的分析、设计最大程度地与人们对客观世界的认识相一致。面向对象数据库的技术机理并不高深,但它的设计思想却极有价值。论文关键词:关,键,词,数据库,面向对象,技术 随着应用的日趋复杂和智能化,传统的关系数据库的缺点一点点的暴露出来,人们迫切希望产生一种新的数据库解决方案来适应这些复杂需求。一种新的解决方案呼之欲出。而这个解决方案极有可能就是面向对象数据库技术。面向对象数据库的技术机理并不高深,但它的设计思想却极有价值。在传统的面向对象应用开发中,由于传统的关系数据库开发风格完全不同于面向对象风格,使得许多程序员难以从复杂的SQL编程中解脱出来(尽管已经有一些成熟的ORM技术框架,如Hibernate,但程序员仍需要做大量的数据库代码工作),从而也无法从实质上提高工作效率。 1、面向对象数据库技术概述 面向对象是当前计算机界关心的重点,面向对象是一种新的方法学,也是一种认知方法学。它是一种支持模块化设计和软件重用的实际可行的编程方法,它把程序间的逻辑活动建立在对象间的消息传递之上,且设计上更加符合现实世界,更加自然,所以面向对象方法得到了更广泛的应用。 面向对象数据库系统是为了满足新的数据库应用需要而产生的新一代数据库系统。在数据库中提供面向对象的技术是为了满足特定应用的需要。随着许多基本设计应用(如MACD和ECAD)中的数据库向面向对象数据库的过渡,面向对象思想也逐渐延伸到其它涉及复杂数据的应用中,其中包括辅助软件工程(CASE)、计算机辅助印刷(CAP)和材料需求计划(MRP)。这些应用如同设计应用一样在程序设计方面和数据类型方面都是数据密集型的,它们需要识别于类型关系的存储技术,并能对相近数据备份进行调整。 还有许多应用要求多媒体数据库。它们要求以集成方式和文本或图形信息一起处理关系数据,这些应用包括高级办公室系统的其它文档管理系统。 面向对象数据库从面向程序设计语言的扩充着手使之成为基于面向对象程序设计语言的面向对象数据库。例如:ONTOS、ORION等,它们均是C++的扩充,熟悉C++的人均能很方便地掌握并使用这类系统。 面向对象数据库研究的另一个进展是在现有关系数据库中加入许多纯面向对象数据库的功能。在商业应用中对关系模型的面向对象扩展着重于性能优化,处理各种环境的对象的物理表示的优化和增加SQL模型以赋予面向对象特征。如UNISQL、O2等,它们均具有关系数据库的基本功能,采用类似于SQL的语言,用户很容易掌握。 2.面向对象数据库的优点 面向对象数据库是数据库技术与面向对象程序设计方法相结合的产物,由于同是面向对象方法学,所以其具有了所有面向对象的优点。同时,由于数据库主要操作的是集合(而不是单个数据),所以其又具有自身的特点和优点。 (1)提高数据库开发效率

面向对象数据库概述

面向对象数据库概述 姓名:Null_Lab 学号:13-3-2-21-1-1-8-5

目录 摘要 (3) Abstract (4) 1. 数据库的发展 (5) 1.1发展阶段 (5) 1.2新型数据库的产生 (5) 2.传统数据库局限性 (6) 2.1不能表示客观世界复杂对象。 (6) 2.2缺少对复杂数据类型支持。 (6) 2.3数据结构不能与行为相关联。 (6) 2.4阻抗失配和语义断层,不能与高级程序设计语言无缝集成。 (6) 2.5不能主动检查和处理事件。 (6) 2.6缺乏管理知识和对象的能力。 (7) 2.7缺乏对长事务和多重嵌套事务的响应和处理能力。 (7) 2.8不能满足巨型数据库应用需要。 (7) 3. 面向对象的概念及特性 (7) 4.面向对象数据库特征 (8) 5.面向对象数据模型的四种核心技术 (8) 5.1分类 (8) 5.2概括 (8) 5.3聚集 (9) 5.4联合 (9) 6.面向对象数据库发展前景 (9) 7.总结 (10) 参考文献 (11)

摘要 本文介绍了数据库的发展,关系数据库与传统数据库的区别,传统数据库的局限性和关系数据库的优势,以及面向对象数据库的核心技术,说明了OOBD数据库发展前景。 关键词:传统数据库局限性;面向对象数据库;

Abstract This paper introduces the development of database,the difference between relational database and traditional database,the limitation of traditional database and the advantage of relational database, andthe core technology of object oriented database, describe the development prospects of OOBD database . Keyword:Limitation of traditional database;Object oriented database;

面向对象数据模型

第三节面向对象数据模型 1、传统数据模型存在的主要问题 已于前述,目前非空间数据最主要的数据模型是层次模型、网状模型和关系模型。这里,我们分别介绍它们用于GIS地理数据库的局限性 (1)层次模型用于GIS地理数据库的局限性 层次模型反映了地理世界中实体之间的层次关系,在描述地理世界中自然的层次结构关系时简单、直观,易于理解,并在一定程度上支持数据的重构。它用于GIS地理数据库存在的主要问题是: 1)、很难描述复杂的地理实体之间的联系,描述多对多的关系时导致物理存储上的冗余; 2)、对任何对象的查询都必须从层次结构的根结点开始,低层次对象的查询效率很低,很难进行反向查询; 3)、数据独立性较差,数据更新涉及许多指针,插入和删除操作比较复杂,父结点的删除意味着其下层所有子结点均被删除; 4)、层次命令具有过程式性质,要求用户了解数据的物理结构,并在数据操纵命令中显式地给出数据的存取路径; 5)、基本不具备演绎功能和操作代数基础。 (2)网状模型用于GIS地理数据库的局限性 网状模型是层次模型的一般形式,反映了地理世界中常见的多对多关系,在一定程度上支持数据的重构,具有一定的数据独立和数据共享特性,且运行效率较高。用于GIS地理数据库的主要问题如下: 1)、由于网状结构的复杂性,增加了用户查询的定位困难,要求用户熟悉数据的逻辑结构,知道自己所处的位置; 2)、网状数据操作命令具有过程式性质,存在与层次模型相同的问题; 3)、不直接支持对于层次结构的表达; 4)、基本不具备演绎功能和操作代数基础。 (3)关系模型用于GIS地理数据库的局限性

关系模型表示各种地理实体及其间的关系,方式简单、灵活,支持数据重构;具有严格的数学基础,并与一阶逻辑理论密切相关,具有一定的演绎功能;关系操作和关系演算具有非过程式特点。尽管如此,关系模型用于GIS地理数据库也还存在一些不足。主要问题是: 1)、无法用递归和嵌套的方式来描述复杂关系的层次和网状结构,模拟和操作复杂地理对象的能力较弱; 2)、用关系模型描述本身具有复杂结构和涵义的地理对象时,需对地理实体进行不自然的分解,导致存储模式、查询途径及操作等方面均显得语义不甚合理; 3)、由于概念模式和存储模式的相互独立性,及实现关系之间的联系需要执行系统开销较大的联接操作,运行效率不够高。 不难看出,关系模型的根本问题是不能有效地管理复杂地理对象。 2、面向对象的概念 面向对象的基本概念是在本世纪70年代萌发出来的,它的基本做法是把系统工程中的某个模块和构件视为问题空间的一个或一类对象。到了80年代,面向对象的方法得到很快发展,在系统工程、计算机、人工智能等领域获得了广泛应用。但是,在更高级的层次上和更广泛的领域内对面向对象的方法进行研究还是90年代的事。 (1)基本思想和基本概念 面向对象的基本思想是通过对问题领域进行自然的分割,用更接近人类通常思维的方式建立问题领域的模型,并进行结构模拟和行为模拟,从而使设计出的软件能尽可能地直接表现出问题的求解过程。因此,面向对象的方法就是以接近人类通常思维方式的思想,将客观世界的一切实体模型化为对象。每一种对象都有各自的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了各种不同的系统。 在面向对象的方法中,对象、类、方法和消息是基本的概念。 对象——含有数据和操作方法的独立模块,可以认为是数据和行为的统一体。如一个城市、一棵树均可作为地理对象。对于一个对象,应具有如下特征: ·具有一个唯一的标识,以表明其存在的独立性; ·具有一组描述特征的属性,以表明其在某一时刻的状态; ·具有一组表示行为的操作方法,用以改变对象的状态。

关于数据库系统设计中面向对象技术的应用外文翻译-中英文论文翻译

论文题目:关于数据库系统设计中面向对象技术的应用 第一部分外文翻译 Application of object-oriented database system design technology Abstract: The basic idea of object-oriented technology and development process, describes the implementation of object-oriented technology. A detailed discussion with concrete examples in the database system architecture design and detailed design of object-oriented technology, the use of surface to the object database system analysis and design methods, the use of the UML tool to establish a specific object model, gives a more general-purpose database system development model systems designed to use the mode reuse, and easy to maintain, in order to effectively improve the quality of the development of database systems. Keywords: Object-Oriented Database System Designed Object Model An Object-Oriented Basic Concepts Of 1.1 Object (Object) Method (Method) And Message (Message) Objective world is constituted by the entities in the objective world and their mutual relationship between the objective world of abstract entities for objects in the problem space we need to solve different problems, we face the object is different, so the object is not fixed. A book can be an object, a library can also be an object. Dynamic point of view, the object and its operation is the behavior of the object, an object is usually defined as: the object is operating on a set of information and its above description. Private data structure and processing, these processes also known as operations (Operation) or method (Method), including control and process private data, said

面向对象数据库技术复习资料1

一、单选题(本大题共20小题,每小题2分,共40分) (请将最符合题意的答案代码填写在相应的题号括号内,错选、多选或未选均无分。) 1.在当前表中查询,若无满足条件的记录,下列函数中,其值为.T.的是( )。 A)BOF() B)FOUND()C)EOF()D)RECNO() 2.一数据库名为学生,要想打开该数据库,应使用命令( )。 A)OPEN 学生B)OPEN DATABASE 学生C)USE DATABASE 学生D)USE 学生 3.在下列的数据类型中,默认值为.F.的是( )。 A)数值型B)字符型C)逻辑型D)日期型 4.在Visual FoxPro中,调用表设计器建立数据库表“学生.DBF”的命令是( )。 A)MODIFY STRUCTURE 学生B)MODIFY COMMAND 学生 C)CREATE 学生D)CREATE TABLE 学生 5.下列操作中,不能用MODIFY STRUCTURE命令实现的是( )。 A)为表增加字段B)删除表中的某些字段 C)对表的字段名进行修改D)对记录数据进行修改 6.在Visual FoxPro中,下面关于自由表的叙述正确的是( )。 A)自由表和数据库表是完全相同的B)自由表不可以加入到数据库中 C)自由表不能建立字段级规则和约束D)自由表不能建立候选索引。 7.执行命令LIST NEXT 1后,记录指针的位置指向( )。 A)下一条记录B)原来的记录C)首记录D)尾记录 8.下列命令中,能够进行条件定位的命令是( )。 A)SKIP B)GO C)LOCATE D)SEEK 9.不能向表文件增加记录的命令是( )。 A)BROWSE B)APPEND C)INSERT D)REPLACE 10.对表文件中的记录进行修改,不需要交互操作的命令是( )。 A)EDIT B)CHANGE C)REPLACE D)BROWSE 11.在Visual FoxPro中,建立索引的作用之一是( )。 A)节省存储空间B)便于管理C)提高查询速度D)提高查询速度和更新速度12.在VFP中,在两个表的主索引之间建立的联系是( )。 A)一对一联系B)一对多联系 C)一对一联系和一对多联系都可以D)以上都不正确 13.设职工表和按“工作日期”索引文件已经打开,要把记录指针定位到工作刚好满90天的职工,应当使用命令( )。 A)FIND DATE()-90B)SEEK DATE()+90 C)FIND DATE()+90D)SEEK DATE()-90 14.Visual FoxPro参照完整性规则不包括( )。 A)更新规则B)删除规则C)查询规则D)插入规则 15.下列命令在不带任何子句(短语)时,可对当前表中所有记录操作的命令是( )。 A)DISPLAY B)RECALL C)DELETE D)COUNT 16.如果成功的执行了命令H—>KCH,M—>KCH,则说明( )。 A)两个KCH都是内存变量 B)前一个KCH是内存变量,后一个KCH是字段变量 C)两个KCH都是字段变量 D)前一个KCH是字段变量,后一个KCH是内存变量 17.Visual FoxPro中,使用SET RELATION命令可以建立两个表之间的联系,这种联系是( )。 A)永久联系B)临时联系或永久联系C)临时联系D)普通联系 18.Visual FoxPro在SQL方面不支持( )。 A)数据定义功能B)数据查询功能C)数据操纵功能D)数据控制功 19.在SQL查询时,用WHERE子句(短语)指出的是( )。 A)查询目标B)查询结果C)查询条件D)查询视图 20.某商场的销售数据库有如下表:部门表(部门号,部门名称)和商品表(部门号,商品 号,商品名称,单价,数量,产地)。下面SQL语句的查询结果是( )。 SELECT部门表.部门号,部门名称,SUM(单价*数量) FROM部门表,商品表; WHERE 部门表.部门号=商品表.部门号GROUP BY 部门表.部门号 A)各部门商品数量合计B)各部门商品金额合计 C)所有商品金额合计D)各部门商品金额平均值 二、多选题(本大题共5小题,每小题3分,共15分) (选对1个得1分,全对得3分,多选不得分;将最符合题意的答案直接填进括号内)

第9章 面向对象数据库系统习题解答

第9章面向对象数据库系统 习题解答 一. 简答题 1.面向对象程序设计的基本思想是什么?它的主要特点是什么? 面向对象程序设计的基本思想是用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)。 面向对象方法的主要优点是:符合人们通常的思维方式;从分析到设计再到编码采用一致的模型表示具有高度连续性;软件重用性好。 2.解释面向对象模型中的对象、对象标识、封装、类、类层次等概念。 对象是一组数据结构和在这组数据结构上的操作的程序代码封装起来的基本单位。是对现实世界某个实体的抽象。 对象标识:唯一地标识某个对象。 封装:隐藏属性,方法或实现细节的过程,对外仅公开接口。 类:对象类的简称,即共享所有属性和方法的所有对象集合。 类层次:一组父子关系的类构成的层次结构 3.给出一个面向对象数据库的类层次的实例。 4.举例说明超类和子类的概念。 超类是子类的抽象,子类是超类的特殊化,如学生、本科生、研究生三个类,学生是本科生和研究生的超类,而本科生和研究生是学生的子类。因为本科生和研究生继承了学生的所有属性和行为。 224

二.问答题 1.对于实体集学生、课程、班级以及它们相互之间的联系,请用ODL来描述。要求为所有的属性和联系(正向、反向)进行说明,并且指出每个类的范围和键码。 Interface Student { attribute integer StudentNo; attribute string StudentName; attribute integer Age; attribute string Dept; relationship Set courses; inverse Course::students; relationship Class bemasterof; Inverse Class::master; relationship Class inclassof; Inverse Class::students; }; Interface Course { attribute integer CourseNo; attribute string CourseName; attribute string Teacher; relationship Set students; Inverse Student::courses; }; Interface Class { attribute integer ClassNo; relationship Student master; Inverse Student::bemasterof; relationship Set students; Inverse Student::inclassof; } 2.对于第1题的ODL描述,请将ODL设计转换为关系数据库模式。 Student(StudentNo, StudentName,Age,Dept) Course(CourseNo,CourseName,Teacher) Class(ClassNo) 3. 根据第1题的ODL描述,请你应用FOR ALL和EXISTS量词设计一个OQL查询,并编程实现之。 输出李红选修的课程名称 Select c.CourseName from Course c where exists s in c.students: s.StudentName=’李红’ 225

面向对象数据库的应用范围和优缺点

面向对象数据库面向谁? 它的市场在哪里? 陶伟编译 当今冠以面向对象的东西很多,什么面向对象分析,面向对象设计,面向对象语言,面向对象操作系统,面向对象软件工程,等等,诸如此类,不胜枚举。似乎凡是和面对象挂上了边,就要好卖得多。其实面向对象也不是包治百病的灵丹妙药,数据库加上了面向对象同样不可能解决所有的问题,它不是大街上的冰棍,人人都可以买,它有自己独特的应用领域和特有的用户群。向不懂C++或Smalltalk的人兜售面向对象数据库,无异于对牛弹琴。 面向对象数据库的用户主要是从事系统软件和高级应用软件开发的程序员和系统设计人员,它不是大众数据库,在这方面它有别于关系数据库面。面向对象数据库好比是医生用的手术刀,干的是"细活儿",和家庭主妇用的菜刀(关系数据库)不一样,那是用来干"粗活儿"的。面向对象数据库是什么? 面向对象数据库=数据库系统+面向对象系统面向对象数据库必须满足两条准则:首先,它是一个数据库管理系统,其次它是一个面向对象系统。第一条准则可以翻译成六条特征:持久性、缓冲管理、数据共享、数据可靠性(事务管理和恢复)、即席查询以及模式修改。第二条准则可以翻译成:封装性、继承性、多态、对象标识、计算完整性、复杂对象和可扩展性。除了基本定义之外,为了满足所谓的非常规应用领域,还要引入一些扩展的特征:如版本管理、长事务、协同工作、触发和约束等。其中最重要的是封装性、继承性、多态,它们充分体现了面向对象的特征。面向对象数据库的应用领域面向对象数据库的应用面比较窄,主要集中于系统级的软件开发,以及数据密集的、复杂的应用软件开发,包括: ▲计算机辅助设计CAD ▲计算机辅助制造CAM ▲计算机集成制造系统CIMS ▲计算机辅助软件工程CASE ▲超大规模集成电路设计VLSI Design ▲地理信息系统GIS ▲决策支持系统DSS 这些应用领域和传统的商业应用领域有着显著不同,它们表现为复杂的数据类型,而不是简单的二维表,复杂的数据结构上定义着复杂的操作语义,需要不同层次的数据抽象能力,这些均是传统数据库系统所无法满足的。面向对象数据库与文件系统和关系数据库的区别文件系统存贮的数据格式因程序员的设计的不同而不同,一般不能保证数据的一致性和完整性,也很难多个用户共享。关系数据库存贮的是二维表,能保证数据的一致性与完整性,但只能用关系数据模型去描述世界。面向对象数据库则用面向对象数据模型去映射客观世界,存贮的不仅是数据,而且存贮了定义在数据上的操作语义,以及对象之间的复杂引用和约束关系。相对于文件系统和关系数据库而言,面向对象数据库的特点可以做以下的形象描述:面向对象数据库提供了一种存贮对象的更好方法,因为它提供了传统数据库的全部服务,然而却无存储和检索对象时对象的拆卸与装配的开销,比较关系数据库和面向对象数据库存储复杂对象,后者好似直接把汽车开进车库存放,而前者则是把汽车拆成零部件来保存。如何应用面向对象数据库面向对象数据已进入了商业应用领域,但没有取代现有的数据库系统,通常是在处理非常复杂的数据,或者数据很难被分解为关系数据库二维表的情况时,才采用面向对象数据库。一般认为图像数据的处理,使用面向对象数据库非常合适,其实还有许多数据类型可以用面向对象数据库来存储。就目前使用情况看,计算机辅助设计CAD是面向对象数据库最大的应用领域,现在电信、金融服务、医疗保健、制造过程控制等诸多领域,也开始推广使用。主要的面向对象数据库厂商主要的面向对象数据库厂商有以下几家。·Object Design,Inc. ·Gemstone System,Inc. ·O2 Technology,Inc. ·Objectivity,Inc. ·Versant Object Technology

面向对象数据库简介

面向对象数据库简介 数据模型是数据库系统的核心和基础。数据库系统的发展以数据模型为主线,以数据模型的进展为分代的主要依据。第一代数据库系统是支持层次和网状数据模型的数据库系统。第二代数据库系统是关系型数据库系统关系型数据库系统在商业领域取得巨大成功,已经成为数据处理应用的标准。然而,随着计算机技术的发展和应用的普及,人们要求数据库系统不仅能处理简单的数据类型,还要处理如图形、图像、音频、视频等更加复杂的信息。新一代面向对象的数据库系统是解决上述问题的有效途径。 在当今软件的世界里,面向对象技术一统天下,渗透到几乎所有软件设计领域、应用领域和工程领域。与此同时,在数据库领域中,虽然关系数据库占据了绝大部分的市场份额,Oracle、DB2、SQLServer、Infomix成为数据库中的霸主,但关系数据库究竟还是是数据的一种存储方式,它不属于面向对象领域。当以关系数据库为数据存储方式时,由于关系概念与面向对象概念是完全不同的两个概念,它们之间存在严重的“阻抗失谐(Impedance Mismatch)”。为了解决这个问题,面向对象技术和数据库技术自然而然开始交流和结合,应用上层的面向对象要求渗透到数据库,甚至是数据库底层,并开始影响未来数据库的发展。 1.关系数据库的存在的问题 1)关系数据库的局限性 关系型数据库有比我们想的更多的局限性。存储和表示一些相当普通的数据结构也是非常困难的。试想一条公交线路——简单,有序的一组站点。关系型数据库以无序的方式存放表,只有创建一个特殊的索引,才能提取有序的数据。对象数据库就没有这个问题,它有有序的数组,不需要索引——这种索引是因为关系数据结构的局限性而要求创建的人工索引。 另一个简单的例子是产品用料单。在制造系统中记录一个产品和它的组件。组件自身也许还有组件,组件的组件还有组件,以此类推。一个关系型数据表不能表达这种部件与部件的部件之间的关系。而这些关系却是重要的数据。查询一个产品数据库,它的所有组件应该是一目了然的。关系型数据库结构使得开发员花费很多的工作来回答这种简单的查询,非常的复杂、困难。与这个例子类似的

面向对象的关系数据库设计

面向对象的关系数据库设计 2007-11-23 21:29 一、概念的区分 有些人把面向对象的数据库设计(即数据库模式)思想与面向对象数据库管理系统(OODBMS) 理论混为一谈。其实前者是数据库用户定义数据库模式的思路,后者是数据库管理程序的思路。用户使用面向对象方法学可以定义任何一种DBMS数据库,即网络型、层次型、关系型、面向对象型均可,甚至文件系统设计也照样可以遵循面向对象的思路。 面向对象的思路或称规范可以用于系统分析、系统设计、程序设计,也可以用于数据结构设计、数据库设计。OOSE自上至下、自始至终地贯彻面向对象思路,是一个一气呵成的统一体。面向对象的数据库设计只是 OOSE 的一个环节。 二、数据库设计的重要性 一般数据库设计方法有两种,即属性主导型和实体主导型。属性主导型从归纳数据库应用的属性出发,在归并属性集合(实体)时维持属性间的函数依赖关系。实体主导型则先从寻找对数据库应用有意义的实体入手,然后通过定义属性来定义实体。一般现实世界的实体数在属性数 1/10 以下时,宜使用实体主导型设计方法。面向对象的数据库设计是从对象模型出发的,属于实体主导型设计。 一般数据库应用系统都遵循以下相关开发步骤: 1 、设计应用系统结构; 2 、选择便于将应用程序与 DBMS 结合的DBMS体系结构,如RDBMS; 3 、根据应用程序使用的环境平台,选择适宜的DBMS(如Oracle)和开发工具(如PB); 4 、设计数据库,编写定义数据库模式的SQL程序; 5 、编写确保数据正确录入数据库的用户接口应用程序; 6 、录入数据库数据; 7 运行各种与数据库相关的应用程序,以确认和修正数据库的内容。 对以上各步骤,有几点需要说明: (1) 这不是瀑布模型,每一步都可以有反馈。以上各步不仅有反馈、有反复,还有并行处理。 比如一些库表在数据录入时,另一些库表设计还在修改。 这与我们的递增式开发方法有关,也与面向对象的特征有关。 (2) 上述顺序不是绝对的,大多数场合是从第三步开始的。 (3) 对大多数数据库应用系统来说,上述各步中最重要、最困难的不是应用系统设计而是数据库设 三、DBMS的支持和数据库设计 很多数据库应用系统开发者不重视数据库设计的原因是:他们太迷信DBMS,认为购入一个功能强大的 DBMS后数据库设计就不困难、不重要了。一些国内外的数据库教材常常是在为DBMS的开发厂商做宣传,而很少站在数据库用户角度,从数据库应用系统出发介绍数据库设计方法。结果往往使读者搞不清书中介绍的是数据库管理程序的设计思想,还是应用这种 DBMS 进行数据库设计的思想。 其实,DBMS只是给用户为已采用的数据库提供一个舞台,而是否使用这个舞台上

相关文档