国防科大数据库第五章:面向对象的数据模型和对象关系数据模型

本讲(第5章)简要说明

授课目的与要求:

了解对象数据库管理系统的特点、优缺点以及与传统DBMS的区别;

了解对象关系数据库系统相对关系数据库的扩充。

5.1 引言

1. 高级的数据库应用

计算机辅助设计(CAD);

计算机辅助软件工程(CASE); 多媒体系统;

地理信息系统(GIS);

交互的和动态的Web站点。

2. 新的应用需求:

1) 处理二进制大对象,文字、图象、

声音、视频等多媒体数据。

2) 数据模拟:

实体的任意组合、任意联系,例

聚合、继承。

3) 行为模拟:

对不同数据的多种操作。

3.关系数据库的弱点

有限的数据类型

缺少全系统唯一、不依赖于属性的OID (Object ID)

不支持用户自定义或系统可扩展的运算 不能清晰表示和有效处理复杂对象及联系 阻抗失配

4. 面向对象技术

1)对象由属性和操作两部分构成。

一个对象包含若干属性,用以描述对象的状态、组成、特性。

一个对象包含若干操作,用以描述对象的行为方式。

2)操作(消息/方法)的接口与实现。

接口说明------给出操作的名称、参数表、

操作结果、对象类型等。

实现部分------为实现该操作的一段程序

代码。

附加优点:有利于提高数据独立性,有利于数据完整、安全保护。

3)类与实例

具有相同属性和方法的一类对象抽象(概化)为类,其中的每一对象称为该类的一个实例。

4)继承与类结构

①一个类中所有对象的集合的子集可以定义成一

个新的类,它成为原类的子类,原来的类称为子类的超类。

②子类的每个成员继承超类的所有属性和方法。

子类和父类(直接超类)用线连接,构成一

个类层次结构。

③子类还可以定义自己特有的属性和方法,也可

以重新定义所继承的超类原有的属性和方法。

5. OODBS

1.2.3

二、模式及其映射

1.

每个对象在其生命周期中,都有一个系统给定的唯一不变的对象标识OID

只要OID 相同,就是同一对象(无论对象的属性、操作如何修改);只要OID 不同,就是不同对象(尽管其属性、操作都一样) 高效快速定位、用户不可修改、独立于内容 系统产生OID 的方法有两种:

逻辑OID 物理OID

对象标识(OID )

6.OO技术与数据库技术结合的途径

①在面向对象的程序设计语言(例如Smalltalk,

C++,Java)环境中扩展传统的数据库的功能。

如GemStone。

②为OO语言提供面向对象的支持数据库管理(持

久性、事务、并发、安全等)的类库。

如Ontos,Versant和ObjectStore。

③在RDB上加面向对象的DDL、DML。

如Postgres、Oracle。

④开发一个全新的面向对象数据库的数据模型/数

据语言。

如SIM(Semantic Information Manager)。

8. OODB的标准化

1) OODBTG最终报告(ANSI,1991.8)

提出了对象信息管理(OIM)标准的建议。其中一个重要内容是“对象数据管理参考模型”(ODM),它描述了对象模型、数据库管理的特征以及对象数据管理应具备的系统特征。ODM参考模型制定了OODBMS的基本功能规范。

2) ODMG-93

对象管理集团(OMG)所属对象数据库管理组1993.9 提出ODMG1.0 ,其规定OODBMS应包括:

①对象模型OM。

②对象定义语言ODL,用以定义对象模型及其接口。

③对象操作语言OML,支持对对象的说明性访问。

④与程序设计语言(C++、Smalltalk)联编。

ODMG2.0(1997),ODMG3.0(1999)

3) SQL3 (ANSI, ISO, 1999)

将对象的概念、思想、技术引入RDBMS。提出替换SQL92的SQL3,它支持抽象数据类型、子类、超类、数据类型生成器、类型模板。标准SQL3得到大型关系数据库厂商,如IBM、Oracle、Sybase、SQL server的支持。

5.2 OODB &ODMG-93

对象管理集团(OMG)所属对象数据库管理组1993.9 提出ODMG1.0 ,规定OODBMS应包括:

①对象模型OM。

②对象定义语言ODL,用以定义对象模型及其接

口。

③对象操作语言OML,支持对对象的说明性访问。

④与程序设计语言(C++、Smalltalk)联编。

ODMG2.0(1997),ODMG3.0(1999)

一、对象模型(OM)

基本思想:

对象是基本数据结构

每个对象有一个永久的标识符 可以为对象指定类型或子类型 对象的状态由数据值和联系定义 行为由对象操作定义

ODMG预定义类型及其层次关系

Object

Atomic_Object

Structured-Object

Collection

Structure

Literal

Atomic_Literal

Structured-Literal

Immutable-Collection

Immutable-Structure

数据库关系模式 练习题

已知关系模式R(city, street, zip)其中city为城市编号,street为街道编号,zip为邮政编码,一个城市的一条街道只有一个邮政编码,一个邮政编码只属于一个城市。请写出R上成立的所有函数依赖及所有候选键,并说明R最高是第几范式。 现有某个应用,涉及到两个实体集,相关的属性为: 实体集R(A1,A2,A3,A4),其中,A1为码 实体集S(B1,B2,B3),其中B1为码 从实体集R到S存在一对一的联系,联系属性是C1和C2。 1.设计相应的关系数据模型; 2.如果将上述应用的数据库设计为一个关系模式,如下: RS(A1,A2,A3,A4,B1,B2,B3,C1,C2) 这种设计是否合适并说明理由。 3.上述第2题的关系模式RS满足第二范式吗为什么 4.如果将上述应用的数据库设计为两个关系模式,如下: R1 (A1,A2,A3,A4,B1,C1,C2) R2 (B1,B2,B3) 假设存在函数依赖A2→A3,B2→B3 指出关系模式R1、R2最高满足第几范式(在1NF~BCNF之内)。 设基商业集团数据库中有商店、商品、职工三类实体。其中商店的属性有:商店编号、商店名称、地址;商品的属性有:商品号、商品名、规格、单价;职工的属性有:职工号、姓名、性别。 每个商店可销售多种商品,每种商品也可放在多个商店销售。 每个商店聘用多名职工,每名职工只能在一个商店工作。 根据上面叙述,解答以下问题: (1)设计E—R模型,要求标注连通词,可省略属性。 (2)将E—R模型转换成关系模型,标出每一个关系的主码和外码(如果存在)。 (3)写出定义参照完整性的SQL子句,要求满足“当参照表中数据更新时,外码也自动更新”。 关系模式中R(B,C,M,T,A,G),根据语义有如下函数依赖集: F={ B-C, (M,T)-- B,(M,C)-T, (M,A)-àT ,(A,B)- G } 关系模式R的码是( D ) A. (M,T) B. (M,C) C. (M,A) D.(A,B) R的规范化程度最高达到(B ) A. 1NF B. 2NF C. 3NF D. 4NF 描述学生的关系模式r(sno,sd,mn,cno,g),其中sno表示学号,sd表示系名,mn表示系主任姓名,cno

对象关系模型数据库解析

面向对象数据库系统(Object Oriented Data Base System,简称OODBS)是数据库技术与面向对象程序设计方法相结合的产物。 对于OO数据模型和面向对象数据库系统的研究主要体现在:研究以关系数据库和SQL为基础的扩展关系模型;以面向对象的程序设计语言为基础,研究持久的程序设计语言,支持OO模型;建立新的面向对象数据库系统,支持OO数据模型。 面向对象程序设计方法是一种支持模块化设计和软件重用的实际可行的编程方法。它把程序设计的主要活动集中在建立对象和对象之间的联系(或通信)上,从而完成所需要的计算。一个面向对象的程序就是相互联系(或通信)的对象集合。面向对象程序设计的基本思想是封装和可扩展性。 面向对象数据库系统支持面向对象数据模型(以下简称OO模型)。即面向对象数据库系统是一个持久的、可共享的对象库的存储和管理者;而一个对象库是由一个OO模型所定义的对象的集合体。 一个OO模型是用面向对象观点来描述现实世界实体(对象)的逻辑组织、对象间限制、联系等的模型。一系列面向对象核心概念构成了OO模型的基础。概括起来,OO模型的核心概念有如下一些: (1)对象(Object)与对象标识OID(Object IDentifier) 现实世界的任一实体都被统一地模型化为一个对象,每个对象有一个唯一的标识,称为对象标识(OID)。 (2)封装(Encapsulation) 每一个对象是其状态与行为的封装,其中状态是该对象一系列属性(Attribute)值的集合,而行为是在对象状态上操作的集合,操作也称为方法(Method)。 (3)类(C1ass) 共享同样属性和方法集的所有对象构成了一个对象类(简称类),一个对象是某一类的一个实例(instance)。 (4)类层次(结构) 在一个面向对象数据库模式中,可以定义一个类(如C1)的子类(如C2),类Cl 称为类C2的超类(或父类)。子类(如C2)还可以再定义子类(如C3)。这样,面向对象数据库模式的一组类形成一个有限的层次结构,称为类层次。 (5)消息(Message) 由于对象是封装的,对象与外部的通信一般只能通过显式的消息传递,即消息从外部传送给对象,存取和调用对象中的属性和方法,在内部执行所要求的操作,操作的结果仍以消息的形式返回。 OODB语言用于描述面向对象数据库模式,说明并操纵类定义与对象实例。OODB语言主要包括对象定义语言(ODL)和对象操纵语言(OML),对象操纵语言中一个重要子集是对象查询语言(OQL)。OODB语言一般应具备下述功能: (1)类的定义与操纵 面向对象数据库语言可以操纵类,包括定义、生成、存取、修改与撤销类。其中类的定义包括定义类的属性、操作特征、继承性与约束等。 (2)操作/方法的定义 面向对象数据库语言可用于对象操作/方法的定义与实现。在操作实现中,语言的命令

面向对象的数据库技术

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

翻译 大型共享数据库的数据关系模型(精选.)

大型共享数据库的数据关系模型 E.F.Codd IBM Research Laboratory,SanJose,California 未来的数据库使用者一定是和数据在机器中的存储(即数据库的内部模式)相隔离的。而通过提示服务来提供信息是一个不太令人满意的解决方法。当数据的内部模式表示发生改变,甚至数据内部表示的多个方面发生改变时,终端用户和大多数应用程序的活动都不会受到影响。因此,查询、更新和报告存储信息类型的自然增长和变动都需要在数据表示中表现出来。 现存的不可推断的、格式化的数据系统给用户提供了树结构的文件或者更一般的网格模式的数据。本文在第一部分讨论这些模式的不足之处。并且会介绍一种基于n元组关系的模式,一种数据库关系的正式形式和通用数据子句的概念。第二部分将讨论一些关系的操作(不是逻辑层面的),并且把这些操作应用于用户模式上解决冗余和一致性问题。 1关系模式和一般模式 1.1简介 这篇文章是关于系统的基本关系原理的应用,这个原理提供了共享大型格式化数据库的方法。除了Childs[1]的文章有介绍外,用于数据库系统的关系的主要应用 还表现在演绎推理型的问-答系统中。Levein和Maron[2]提供了大量关于这个领域的参考资料。 相比之下,这里要解决的问题是一些数据独立性的问题——应用程序和终端活动之于数据类型增长和数据表示变动的独立性,而数据一致性问题即使在非演绎推 理型系统中也是很棘手的。 在目前流行的非推论性系统中,第一部分要介绍的数据的关系视图(或叫做模式)在一些方面似乎优于图模式和网格模式[3,4]。这种模式提供了一种根据数据的自然结构来描述描述数据的方式——也就是说,不用为了数据的机器表示而添加其 他的将结构。因此,这种模式为高水准的数据语言提供了基础,而这种数据语言机 制一方面可以达到最大化程序之间的独立性,另一方面也可以最大化数据的机器表 示和组织之间的独立性。 关系模式更高一级的优势在于它构成了关系处理可导性、冗余性和一致性的坚固基础——这些将在第二部分讨论。另一方面,网络模型产生了一些混淆,尤其是 把连接的源误作为关系的源(见第二部分“连接陷阱”) 最后,关系视图允许对目前格式化数据系统的范围和逻辑限制的更清晰的估算,并且有在单独的系统内竞争数据表示方式的优点(从逻辑的观点)。更清楚的这个观点的示例会在本文中的不同部分中被阐释。但是支持关系模式的系统实现不会讨论。 1.2目前系统的数据相关性 最近发展的信息系统中数据描述表的提供是向数据独立性目标[5,6,7]靠近的重要提高。这些表可以使改变数据库中数据表示的某些特征变得更容易些。但是,许 多数据表示特征可以在不逻辑地削弱一些应用程序的情况下被改变的功能仍受到相 当的限制。更进一步,与用户交互的数据模式仍然有一些散乱的代表性特征,特别

面向对象数据模型

第三节面向对象数据模型 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)基本思想和基本概念 面向对象的基本思想是通过对问题领域进行自然的分割,用更接近人类通常思维的方式建立问题领域的模型,并进行结构模拟和行为模拟,从而使设计出的软件能尽可能地直接表现出问题的求解过程。因此,面向对象的方法就是以接近人类通常思维方式的思想,将客观世界的一切实体模型化为对象。每一种对象都有各自的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了各种不同的系统。 在面向对象的方法中,对象、类、方法和消息是基本的概念。 对象——含有数据和操作方法的独立模块,可以认为是数据和行为的统一体。如一个城市、一棵树均可作为地理对象。对于一个对象,应具有如下特征: ·具有一个唯一的标识,以表明其存在的独立性; ·具有一组描述特征的属性,以表明其在某一时刻的状态; ·具有一组表示行为的操作方法,用以改变对象的状态。

第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

2015数据库复习题答案

(说明:仅仅代表个人观点,答案正确率为98%,可能会有错的地方,有问题请问度娘) 复习参考资料 选择题:30分(15题) 名词解释:20分(4题) 综合题:50分 一、选择题: 1. 数据库系统是采用了数据库技术的计算机系统,数据库系统由数据库、数据库管理系统、应用系统和(C)。 A. 系统分析员 B. 程序员 C. 数据库管理员 D. 操作员 2. 数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是(A)。 A. DBS包括DB和DBMS B. DBMS包括DB和DBS C. DB包括DBS和DBMS D. DBS就是DB,也就是DBMS 3. 下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是(D)。I.人工管理阶段II.文件系统阶段III.数据库阶段 A. I 和II B. 只有II C. II 和III D. 只有I 4. 下列四项中,不属于数据库系统特点的是(C )。 A. 数据共享 B. 数据完整性 C. 数据冗余度高 D. 数据独立性高 5. 数据库系统的数据独立性体现在(B)。 A. 不会因为数据的变化而影响到应用程序 B. 不会因为数据存储结构与数据逻辑结构的变化而影响应用程序

C. 不会因为存储策略的变化而影响存储结构 D. 不会因为某些存储结构的变化而影响其他的存储结构 6. 描述数据库全体数据的全局逻辑结构和特性的是(A )。 A. 模式 B. 内模式 C. 外模式 D. 以上三种 7. 要保证数据库的数据独立性,需要修改的是(C)。 A. 模式与外模式 B. 模式与内模式 C. 三级模式之间的两层映射 D. 三层模式 8. 要保证数据库的逻辑数据独立性,需要修改的是(A)。 A. 模式与外模式之间的映射 B. 模式与内模式之间的映射 C. 模式 D. 三级模式 9. 用户或应用程序看到的那部分局部逻辑结构和特征的描述是(C)模式。 A. 模式 B. 物理模式 C. 子模式 D. 内模式 10. 下述(D)不是DBA数据库管理员的职责。 A. 完整性约束说明 B. 定义数据库模式 C. 数据库安全 D. 数据库管理系统设计 11. 概念模型是现实世界的第一层抽象,这一类模型中最著名的模型是(D )。 A. 层次模型 B. 关系模型 C. 网状模型 D. 实体-关系模型 12. 区分不同实体的依据是(B )。 A. 名称 B. 属性 C. 对象 D. 概念 13. 关系数据模型是目前最重要的一种数据模型,它的三个要素分别是(B )。 A. 实体完整性、参照完整性、用户自定义完整性 B. 数据结构、关系操作、完整性约束 C. 数据增加、数据修改、数据查询 D. 外模式、模式、内模式 14. 在(A )中一个结点可以有多个双亲,结点之间可以有多种联系。 A. 网状模型

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

面向对象数据库面向谁? 它的市场在哪里? 陶伟编译 当今冠以面向对象的东西很多,什么面向对象分析,面向对象设计,面向对象语言,面向对象操作系统,面向对象软件工程,等等,诸如此类,不胜枚举。似乎凡是和面对象挂上了边,就要好卖得多。其实面向对象也不是包治百病的灵丹妙药,数据库加上了面向对象同样不可能解决所有的问题,它不是大街上的冰棍,人人都可以买,它有自己独特的应用领域和特有的用户群。向不懂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

关系数据库理论练习题

一、选择题 1.为了设计出性能较优的关系模式,必须进行规范化,规范化主要的理论依据是()。 A.关系规范化理论 B.关系代数理论 C.数理逻辑 D.关系运算理论 2.规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是()。 A.长度不变的 B.不可分解的 C.互相关联的 D.互不相关的 3.已知关系模式R(A,B,C,D,E)及其上的函数相关性集合F={A→D,B→C,E→A},该关系模式的候选关键字是()。 A.A B B.B E C.C D D.D E 4.设学生关系S(S N O,S N A M E,S S E X,S A G E,S D P A R T)的主键为S N O,学生选课关系S C(S N O,C N O,S C O R E)的主键为S N O和C N O, 则关系R(S N O,C N O,S S E X,S A G E,S D P A R T,S C O R E)的主键为S N O和C N O,其满足()。 A.1N F B.2N F C.3N F D.B C N F 5.设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={C→P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R},关系模式W的一个关键字是()。 A.(S,C) B.(T,R) C.(T,P) D.(T,S) 6.关系模式中,满足2N F的模式()。 A.可能是1N F B.必定是1N F C.必定是3N F D.必定是B C N F 7.关系模式R中的属性全是主属性,则R的最高范式必定是()。 A.1N F B.2N F C.3N F D.B C N F 8.消除了部分函数依赖的1N F的关系模式,必定是()。 A.1N F B.2N F C.3N F D.B C N F 9.如果A->B,那么属性A和属性B的联系是()。 A.一对多 B.多对一 C.多对多 D.以上都不是 10.关系模式的候选关键字可以有1个或多个,而主关键字有()。 A.多个 B.0个 C.1个 D.1个或多个 11.候选关键字的属性可以有()。 A.多个 B.0个 C.1个 D.1个或多个 12.关系模式的任何属性()。 A.不可再分 B.可以再分 C.命名在关系模式上可以不唯一 D.以上都不是 13.设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={C→P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R},若将关系模式W分解为三个关系模式W1(C,P),W2(S,C,G),W2(S,T,R,C),则W1的规范化程序最高达到()。 A.1N F B.2N F C.3N F D.B C N F 14.在关系数据库中,任何二元关系模式的最高范式必定是()。 A.1N F B.2N F C.3N F D.B C N F 15.在关系规范式中,分解关系的基本原则是()。 I.实现无损连接 I I.分解后的关系相互独立 I I I.保持原有的依赖关系 A.Ⅰ和Ⅱ B.Ⅰ和Ⅲ C.Ⅰ D.Ⅱ 16.不能使一个关系从第一范式转化为第二范式的条件是()。 A.每一个非属性都完全函数依赖主属性

自考数据库系统原理 第九章 数据库技术的发展 课后习题答案

自考数据库系统原理第九章数据库技术的发展课后习题答案 2009-09-15 10:51 9.1 名词解释 (1)OODBS:是指面向对象数据库系统,它既具数据库管理的基本功能,又能支持面向对象的数据模型。 (2)ORDBS:基于对象关系数据模型的DBS称为对象关系数据库系统(ORDBS)。 (3)平面关系模型:传统的关系模型称为“平面关系模型”,它要求关系模式具有第一范式(1NF)性质,关系具有规范化的结构。也就是规定属性值是不可分解的,即不允许属性值具有复合结构(元组或关系)。 (4)嵌套关系模型:是从平面关系模型发展而成的。它允许关系的属性值又可以是一个关系,而且可以出现多次嵌套。嵌套关系突破了1NF的定义框架,是“非1NF关系”。 (5)复合对象模型:在嵌套关系模型上进一步放宽要求。在关系定义上,集合与元组不再有交替出现的严格限制,此时的关系中,属性类型可以是基本数据类型、结构类型(元组类型)或集体类型(即关系类型)。 (6)数据的泛化/细化:是对概念之间联系进行抽象的一种方法。当在较低层上的抽象表达了与之联系的较高层上抽象的特殊情况时,就称较高层上抽象是较低层上抽象的"泛化",而较低层上抽象是较高层上抽象的"细化"。 (7)对象关系模型:在传统关系数据基础上,提供元组、数组、集合等更为丰富的数据类型及处理新数据类型操作的能力而形成的数据模型。(注:传统关系模型只支持字符、数值、字串,布尔值等等基本数据类型及其处理功能) (8)类型级继承性:当继承性发生在类型级时,子类型继承了超类型的属性。也就是说,超类型所具有的属性,在子类上也具有。 (9)表级继承性:继承性也可发生在表级,(就是元组集合上发生继承),子表继承超表全部属性,超表中每个元组最多可以与子表中一个元组对应,而子表中的每个元组在超表中恰有一个元组对应,并在继承的属性值上具有相同的值。 (10)引用类型:数据类型可以嵌套定义,在嵌套引用时,不是引用对象本身,而是个用对象标识符(即指针),这种指针被称为引用类型。 (11)对象:客观世界中的实体经过抽象称为问题空间中的对象,它是对一组信息及其操作的描述。 (12)类:是具有相同的变量名和类型、相同的消息和使用方法的对象的集合。 (13)单重继承性:一个子类继承某一个超类的结构和特性,称为单重继承性。 (14)多重继承性:一个子类继承多个超类的结构和特性,称为多重继承性。 (15)对象标识:在面向对象语言中,对象标识是一个指针一级的概念,在对象创建的瞬间,由系统赋给每个对象一个“标识”,即系统内的一个唯一的指针,在对象生存期内,这个标识不可改变。 (16)对象包含:不同类的对象之间存在的包含关系称为对象包含。包含是一种“一部分”(is part of)的联系。 (17)类继承层次图:表示类继承关系的图,由超类名、子类名和一组线条自上而下有序的表示。(18)类包含层次图:表示对象包含关系的图,由一些具有包含关系的对象和线条自上而下表示(下方的对象为其连线所指上方对象的一部分)。 (19)持久数据:是指创建这些数据的程序运行终止后数据依然存在于系统之中。数据库中的关系就是持久数据。 (20)持久对象:程序运行结束后,被保留下来的对象称为持久对象。 (21)持久指针:持久指针可看作是数据库中指向对象的指针。持久化指针不像内存中的指针,

数据库系统2-1:关系模型及其描述

数据库系统2-1:关系模型及其描述 关系数据库以其坚实的数学理论基础、严密的逻辑结构和简单明了的表示方式深得广大用户的青睐,目前已经占据数据库系统的市场,成为应用最为广泛的数据处理工具。 数据模型主要描述两类信息:一是实体;二是实体之间的联系。在层次、网状模型中,实体之间的联系是通过指针来实现的,而在关系模型中,实体之间的联系是通过二维表中公共属性值建立起来的联系来实现的。 关系数据库系统是支持关系数据模型的数据库系统,即以关系模型为基础而构建起来的数据库系统。关系数据模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 1.关系数据结构 在关系模型中,现实世界中的实体和实体之间的联系都用单一的关系来描述,这些关系的逻辑结构非常简单,就象人们日常所熟悉的二维表。 2.关系操作 关系模型是集合操作方式,操作对象和结果都是集合,称为“一次一集合”。 关系操作有三种不同的描述方式:关系代数、关系演算和结构化查询语言SQL。 关系代数是一种抽象的查询语言,它是用集合论中的关系运算来表达查询要求的方式。关系演算是以数理逻辑中的谓词演算来表达查询要求的方式,它又可分为元组关系演算和域关系演算。若在关系演算中,谓词变元的基本对象是元组变量,则称之为元组关系演算;若谓词变元的基本对象是域变量,则称之为域关系演算。 SQL是介于关系代数和关系演算之间的查询语言。这种语言除具有数据查询功能之外,还具有数据定义DDL和数据控制DCL等功能,是集数据查询、数据定义、数据操纵、数据控制于一体的关系数据语言。是关系数据库的标准语言。 3.关系的完整性约束 数据的完整性约束是指在给定的数据模型中,数据及其联系所遵守的一组通用的完整性规则,以确保数据库中数据的一致性和正确性。在关系模型中允许定义三类完整性约束:实体完整性、参照完整性和用户自定义完整性。 【

王珊《数据库系统概论》课后习题(对象关系数据库系统)【圣才出品】

第15章对象关系数据库系统 1.定义并解释OO模型中以下核心概念:对象与对象标识、封装、类、类层次。 答:(1)对象 是由一组数据结构和在这组数据结构上的操作的程序代码封装起来的基本单位。对象通常与实际领域的实体对应。一个对象包括属性集合和方法集合。 (2)对象标识OID 面向对象数据库中的每个对象都有一个唯一的不变的标识称为对象标识(OID)。对象标识具有永久持久性,即一个对象一经产生系统就会赋于一个在全系统中唯一的对象标识符,直到它被删除。 (3)封装 每一个对象是其状态与行为的封装,其中状态是该对象一系列属性值的集合,而行为是在对象状态上操作的集合,操作也称为方法。 (4)类 共享同样属性和方法集的所有对象构成了一个对象类简称类。 (5)类层次 在一个面向对象数据库模式中,可以定义一个类(如C1)的子类(如C2),类C1称为类C2的超类(或父类)。子类(如C2)还可以再定义子类(如C3)。这样,面向对象数据库模式的一组类形成了一个有限的层次结构,称为类层次。 2.OO模型中对象标识与关系模型中的“码”有什么区别?

答:对象标识具有永久持久性。一个对象一经产生,系统就给它赋予一个在全系统中惟一的对象标识符,直到它被删除。对象标识是由系统统一分配的,用户不能对对象标识符进行修改。对象标识是稳定的,独立于值的,它不会因为对象中某个值的修改而改变。 关系模型中的“码”是值标识,不具有永久持久性,只具有程序内持久性。码是由用户建立的,用来区分关系的不同元组。 3.什么是单继承?什么是多重继承?继承性有什么优点? 答:(1)单继承是指一个子类只能继承一个超类的特性(包括属性、方法和消息);多重继承是指一个子类能继承多个超类的特性。 (2)继承性的优点有以下两点: ①它是建模的有力工具,提供了对现实世界简明而精确的描述; ②它提供了信息重用机制。子类可以继承超类的特性,可以避免许多重复定义。

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

面向对象的关系数据库设计 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只是给用户为已采用的数据库提供一个舞台,而是否使用这个舞台上

数据库系统原理与设计(第2版) 万常选版 第2章 关系模型与关系代数 课后答案(完整资料).doc

【最新整理,下载后即可编辑】 3.简述如下概念,并说明它们之间的联系与区别:。 (1)域,笛卡尔积,关系,元组,属性 答:域:域是一组具有相同数据类型的值的集合。 笛卡尔积:给定一组域D1,D2,…,Dn,这些域中可以有相同的。这组域的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di?Di,i=1,2,…,n }其中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组(Tuple)。元素中的每一个值di叫作一个分量(Component)。 关系:在域D1,D2,…,Dn上笛卡尔积D1×D2×…×Dn的子集称为关系,表示为 R(D1,D2,…,Dn) 元组:关系中的每个元素是关系中的元组。 属性:关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可 以相同,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。 (2)超码,主码,候选码,外码 答:超码:对于关系r的一个或多个属性的集合A,如果属性集A可以唯一地标识关系r中的一个元组,则称属性集A为关系r的一个超码(superkey) 。 候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)。 主码:若一个关系有多个候选码,则选定其中一个为主码(Primary key)。 外码:设F是基本关系R的一个或一组属性,但不是关系R 的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign key),简称外码。 基本关系R称为参照关系(Referencing relation),基本关系S 称为被参照关系(Referenced relation)或目标关系(Target relation)。关系R和S可以是相同的关系。 (3)关系模式,关系,关系数据库

数据库关系数据例题

作业1: 已知关系模式R, U={A,B,C,D}, F={A→C, C→A, B→AC, D→AC, BD→A},将R分解为3NF,要求保持函数依赖且具有无损连接性。 F={A→C,C→A,B→C,D→C} 主码:BD R(X)={R(AC),R(BC),R(CD),R(BD)} 作业2: 设有关系模式R,U={A, B, C, D},F={AB→C, C→D, D→A}, (1)计算(C)+,(AB)+; (2)求R的所有候选码。 (1)(C)+=ACD (AB)+=ABCD (2)候选码:AB,BC,BD (AB)+=ABCD 作业3: 已知关系模式R,U={A, B, C, D, E, G},F={A→B, C→A, CD→E, D→G},现有一个分解ρ={AB, AC, CDE, DG},请判断该分解是否具有无损连接性,并给出判断依据和判断过程。 依据矩阵判断 初始 A B C D E G a1 a2 b13 b14 b15 b16 a1 b22 a3 b24 b25 b26 b31 b32 a3 a4 a5 b36 b41 b42 b43 a4 b45 a6 A→B A B C D E G a1 a2 b13 b14 b15 b16 a1 a2 a3 b24 b25 b26 b31 a2 a3 a4 a5 b36 b41 a2 b43 a4 b45 a6 C→A A B C D E G a1 a2 b13 b14 b15 b16 a1 a2 a3 b24 b25 b26 a1 a2 a3 a4 a5 b36 a1 a2 b43 a4 b45 a6 CD→E A B C D E G a1 a2 b13 b14 b15 b16 a1 a2 a3 b24 b25 b26 a1 a2 a3 a4 a5 b36

对象关系模型数据库

对象数据库关系数据库 我们将对象数据库管理系统()定义为一个集成了数据库能力与面向对象编程语言能力地数据库管理系统(),使数据库对象看起来像是已有地一个或多个程序设计语言中地程序设计语言以象.——,委员会主席. 在多用户客户机服务器环境中提供了持久性存储器.可以处理对象地并行访问,提供锁定和事务保护,保护对象存储器免遭各种类型地威胁,照管像备份和恢复之类传统任务.这所以与关系数据库不同,是因为存储地是对象,而不是表格.对象地引用通过持久性标识()进行,可以独一无二地识别各个对象,可以用来在对象之间建立标记和容器关系.还加强了封装,支持继承.结合了对象属性和传统地功能,如锁定、保护、事务处理、查询、版式本、并发和持久性.文档来自于网络搜索 不是利用分离地语言(如)定义、检索和处理数据,而是利用类定义和传统地面向对象地程序语言(通常是、和语言)构造来定义和访问数据.只来过是存储器内语言数据结构地多用户、持久性扩展.换句话说,客户就是或是程序,服务器就是——没有像和这样地可视中间对象.将数据库能力直接集成进语言.文档来自于网络搜索 地价值.很显然,最好是以自然地形式存储那些对象,而不是将数据修饰得光光滑滑或撕得七零八落之后放进关系表格中.文档来自于网络搜索 对于那些数据复杂难以在表格里简单排列地用户来说,特别适合.曾经长期是学者和研究人员极为感兴趣地领域.最早地商品化出现在年,是公司(现在地公司)和公司推出地.后来(九十年代)()、、、、、、和等公司也加入了这个开拓行列.这些厂商首先瞄准了那些复杂数据结构和长命期事务处理地应用程序——包括计算机辅助设计、和智能办公室等.随着多媒体、群件、公布式对象和万维网技术地出现,与那些深奥难懂地特性现在变成了客户机服务器系统地主流要求.技术填补关系数据库最弱地那些空隙——复杂数据、版式本和长生命期事务、持久性对象存储、继承和用户定义地数据类型等等.文档来自于网络搜索 以下是厂商开拓地各个特性: 自由创建新地信息类型 快速存取 组合结构地灵活视图 与面向对象地程序语言紧密集成 利用多继承支持可定制地信息结构 支持版本事务、嵌套事务和长生命期事务 分布式对象储库 支持复合对象地生命期管理 对象狂已经掌握了整个行业.面向对象技术支持者正在宣告,对象关系数据库和将成为医治关系技术地所谓弱点地良药.这纯属胡说……在数据库上直接地和不加区分地就应用面向对象技术,将再次引入关系数据库花了二十年才克服地那些问题.文档来自于网络搜索 在用户中间,很少有人会怀疑最终将成为地后继技术.在诗人地比喻中,年轻地革命上帝已经开始衰老,变成冷冰冰地暴君——戒律和标准地守护人.文档来自于网络搜索 我们可以两者兼得.要点是将这两项技术结合起来,而不是相互扔泥块.对二十多处踏踏实实地关系数据库研究地开发熟视无睹,不加以利用,就不太应该了.文档来自于网络搜索 和都承认目前地数据库实现有缺点;但他们两人都有觉得关系模型本身能够处理将解决地那些问题,有能力,可以利用嵌套关系、域(或用户定义地数据封装类型)以及一种比更强大地面向集合语言在关系技术世界里近似.这些特性完成这项工作,无需追逐对象指针或操纵低级地专用语言记录结构.没有必要减轻关系理论地联合能力.开发者没有必要退回到用手工方法去最佳化或重新优化应用程序地性能——将时钟倒拔回去了.认为域和对象是同一回

相关文档
最新文档