当前位置:文档之家› 将对象映射到关系数据库

将对象映射到关系数据库

将对象映射到关系数据库
将对象映射到关系数据库

浅谈对的理解对象—关系型数据库

浅谈对对象—关系型数据库的理解 姓名:杨小敏 学号:2010206190026

针对对象—关系型数据库的理解我想结合自己的专业(地图学与地理信息系统)从下面三个方面来理解:(1)关系型数据的发展以及在空间数据管理方面的优缺点(2)面向对象数据库的发展及在空间数据管理方面的优缺点(3)关系型数据库和面向对象技术的融合在数据库发展中所起到的独特作用在我们GIS专业领域内,随着信息技术的发展,各种应用系统建设的不断深入,像现在面向21世纪的应急应用系统的建设、城市基础地理空间信息数据库系统与共享平台的建设、地理信息公共服务平台的建设,小到“数字城市”的建设,大到“数字地球”乃至“智慧地球”的建设,我们已经开始不满足数值和文字的信息处理,为了达到系统建设平台尤其是公共服务平台的建设起到良好的客户友好体验,大量的图形信息,音频信息已经深入到数据库的设计中,其中尤其是空间数据库管理备受瞩目。所以,面对信息爆炸的21世纪,海量数据的存储和管路已经不是传统的数据库能解决的,空间数据管理需要更强的数据库——对象关系型数据库。 为什么空间数据需要对象关系型数据库的管理才更有效?我想简单的说一下GIS空间数据的基本特征:(1)空间特征:每个空间对象都具有空间坐标,所以在存储空间数据的同时我们要考虑数据的空间分布特征;(2)非结构化特征:通用数据库或者是传统数据库数据记录一般是结构化的,在面对空间图形信息的时候难以直接采用关系数据管理系统;(3)空间关系特征:空间数据的空间关系最重要的就是空间拓扑关系,这种拓扑结构方便了空间数据的查询和空间分析,但是给空间数据的一致性和完整性的维护增加了复杂性;(4)海量数据的特征:数据库在面对海量数据的存储和组织时,一般在二维空间上划分块或图幅,在垂直的方向上划分层在组织海量空间数据。 在空间数据的管理技术的发展中,从手工管理管理阶段到文件管理阶段再到数据库管理阶段,在三个数据管理阶段,对数据管理方式也不尽相同,在这里,我想说的是空间数据库的发展历史对空间数据管理的影响,第一是层次关系型数据库:只是数据库发展的初级阶段,这是空间数据的管理大多用文件方式管理,很显然不适合管理海量的空间数据,所以淘汰;第二是网络关系型数据库:在一定程度上解决了空间数据复杂管理的难题,但还是被日益崛起的关系型数据库所淘汰;第三是关系型数据库的发展:为了解决难于保证数据的完整性,开始将空

第10章 面向对象设计

第10章面向对象设计 10.1 软件模块之间的依赖性可以从哪些角度和抽象层次进行分析? 在面向对象软件中,常见的软件模块有类、接口、包、构件。因此,分析软件模块之间的依赖性就可以从类、接口、包和构件的角度和层次进行分析。 10.2 消除包之间循环依赖性的方法是什么? 本质上,两个包之间的依赖性来自于两个包中类之间的依赖性。类之间的循环依赖性是个特别棘手的问题,好在大多数情况下可以通过重新设计避免循环依赖性。具体方法是增加新包。举例说明如下: 在下图中,包A依赖于包B,反过来包B又依赖包A,构成了循环依赖。具体解决办法是:将包B依赖的包A中的元素从包A中分离出来,组成包C,使得包B不再依赖包A,而是依赖包C。 10.3 请给出构件的一般性定义,然后给出传统的软件工程环境及面向对象的软件工程环境中构件的定义,最后选择你熟悉的编程语言说明怎样定义一个构件。 软件构件是一种组装单元,它具有规范的接口规格说明和显式的语境依赖。软件构件可以被独立部署,并由第三方任意组装。OMG UML规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口”。 在传统的软件工程环境中,一个构件就是程序的一个功能要素,程序由处理逻辑和实现处理逻辑所需的内部数据结构以及能够保证构件被调用和实现数据传递的接口构成。传统的构件也称为模块,是软件体系结构的一部分。 在面向对象的软件工程环境中,面向对象技术已达到了类级复用,而构件级复用则是比类级复用更高一级的复用,它是对一组类的组合进行封装(当然,在某些情况下,一个构件可能只包含一个单独的类),并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。一个构件可以是一个编译的类,可以是一组编译的类,也可以是其他独立的部署单元,如一个文本文件、一个图片、一个数据文件、一个脚本等。 选择你熟悉的编程语言说明怎样定义一个构件。(略) 10.4 典型的面向对象设计模型在逻辑上由哪几部分组成?对每一部分进行设计时所包含的主要内容是什么? 典型的面向对象设计模型在逻辑上将系统划分为4个部分,分别是问题域部分、人机交互部分、任务管理部分及数据管理部分。

数据库系统原理课后答案 第九章

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)持久指针:持久指针可看作是数据库中指向对象的指针。持久化指针不像内存中的指针,它在程序执行后及数据重组后仍保持有效。 (22)持久化C++系统: 基于C++的持久化扩充的OODBS。

面向对象的数据库技术

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

对象关系模型数据库解析

面向对象数据库系统(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)操作/方法的定义 面向对象数据库语言可用于对象操作/方法的定义与实现。在操作实现中,语言的命令

Oracle数据库数据对象分析_张达宇

Oracle数据库数据对象分析 日期:2006-01-18 08:00 点击: Oracle数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径。 表和视图 Oracle中表是数据存储的基本结构。ORACLE8引入了分区表和对象表,ORACLE8i引入了临时表,使表的功能更强大。视图是一个或多个表中数据的逻辑表达式。本文我们将讨论怎样创建和管理简单的表和视图。 管理表 表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。用CREATE TABLE语句建立表,在建立表的同时,必须定义表名,列,以及列的数据类型和大小。例如: 这样我们就建立了一个名为products的表,关键词CREATE TABLE后紧跟的表名,然后定义了三列,同时规定了列的数据类型和大小。 在创建表的同时你可以规定表的完整性约束,也可以规定列的完整性约束,在列上普通的约束是NOT NULL,关于约束的讨论我们在以后进行。 在建立或更改表时,可以给表一个缺省值。缺省值是在增加行时,增加的数据行中某一项值为null时,oracle即认为该值为缺省值。 下列数据字典视图提供表和表的列的信息: . DBA_TABLES . DBA_ALL_TABLES . USER_TABLES . USER_ALL_TABLES . ALL_TABLES . ALL_ALL_TABLES . DBA_TAB_COLUMNS . USER_TAB_COLUMNS . ALL_TAB_COLUMNS 表的命名规则 表名标识一个表,所以应尽可能在表名中描述表,oracle中表名或列名最长可以达30个字符串。表名应该以字母开始,可以在表名中包含数

数据库题作业

数据库原理及应用作业 班级:学号:姓名: 第一章 一、单项选择题 1. 在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。在这几个阶段中,数据独立性最高的是()阶段。 A. 数据库系统 B. 文件系统 C. 人工管理 D.数据项管理 2. 数据库系统与文件系统的主要区别是()。 A. 数据库系统复杂,而文件系统简单 B. 文件系统不能解决数据冗余和数据独立性问题,而数据库系统可以解决 C. 文件系统只能管理程序文件,而数据库系统能够管理各种类型的文件 D. 文件系统管理的数据量较少,而数据库系统可以管理庞大的数据量 3. 在数据库中存储的是()。 A. 数据 B. 数据模型 C. 数据及数据之间的联系 D. 信息 4. 数据库的特点之一是数据的共享,严格地讲,这里的数据共享是指()。 A. 同一个应用中的多个程序共享一个数据集合 B. 多个用户、同一种语言共享数据 C. 多个用户共享一个数据文件 D. 多种应用、多种语言、多个用户相互覆盖地使用数据集合 5. 数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)三者之间的关系是()。 A. DBS包括DB和DBMS B. DBMS包括DB和DBS C. DB包括DBS和DBMS D. DBS就是DB,也就是DBMS 6. 数据库管理系统(DBMS)是()。 A. 一个完整的数据库应用系统 B. 一组硬件 C. 一组系统软件 D. 既有硬件,也有软件 7. 数据库是在计算机系统中按照一定的数据模型组织、存储和应用的()。 A. 文件的集合 B. 数据的集合 C. 命令的集合 D. 程序的集合 8. 支持数据库各种操作的软件系统是()。 A. 命令系统 B. 数据库管理系统 C. 数据库系统 D. 操作系统 9. 由计算机硬件、DBMS、数据库、应用程序及用户等组成的一个整体叫()。 A. 文件系统 B. 数据库系统 C. 软件系统 D. 数据库管理系统 10. 数据库系统中应用程序与数据库的接口是()。 A. 数据库集合 B. 数据库管理系统DBMS C. 操作系统OS D. 计算机中的存储介质 11. 在DBS中,DBMS和OS之间关系是()。 A. 并发运行 B. 相互调用 C. OS调用DBMS D. DBMS调用OS 12. 在数据库方式下,信息处理中占据中心位置的是()。

关系映射annotation

一对一(One-To-One) 使用@OneToOne注解建立实体Bean之间的一对一关联。一对一关联有三种情况:(1).关联的实体都共享同样的主键,(2).其中一个实体通过外键关联到另一个实体的主键(注意要模拟一对一关联必须在外键列上添加唯一约束),(3).通过关联表来保存两个实体之间的连接关系(要模拟一对一关联必须在每一个外键上 添加唯一约束)。 1.共享主键的一对一关联映射: @Entity @Table(name="Test_Body") public class Body { private Integer id; private Heart heart; @Id public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @OneToOne @PrimaryKeyJoinColumn public Heart getHeart() { return heart; }

public void setHeart(Heart heart) { this.heart = heart; } } @Entity @Table(name="Test_Heart") public class Heart { private Integer id; @Id public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } } 通过@PrimaryKeyJoinColumn批注定义了一对一关联 2.使用外键进行实体一对一关联: @Entity @Table(name="Test_Trousers") public class Trousers { @Id public Integer id;

UML类图-关系数据库之间的映射

UML类图与关系数据库之间的映射策略 摘要:UML是目前面向对象程序设计中的一种标准的建模技术。在关系数据库系统的设计过程中,我们可先利用UML建立商业模型,然后将其映射成表。本文主要讨论如何将UML 类图中的类映射成表的策略。 关键词:UML 类表关系建模映射 一.概论 在关系数据库设计中,用来创建数据库逻辑模型的标准方法是使用实体关系模型(ER 模型)。ER模型的中心思想是:可以仅通过实体和它们之间的关系合理地体现一个组织的数据模型。但这样做似乎对描述一个组织的信息过于简单化,并且词汇量也远远不足。所以,迫切需要使用更加灵活、健壮的模型来代替ER模型。 标准建模语言UML是由世界著名的面向对象技术专家发起的,在综合了著名的Booch 方法、OMT方法和OOSE方法的基础上而形成的一种建模技术,它通过用例图、类图、交互图、活动图等模型来描述复杂系统的全貌及其相关部件之间的联系。UML可以完成ER 模型的所有建模工作,而且可以描述ER模型所不能表示的关系。 在UML中,类图主要用于描述系统中各种类及其对象之间的静态结构。在关系数据库领域中,类与表相对应。本文主要讨论将UML类图中的类及其对象映射成关系型数据库中的表的策略。 二.UML类图中的类映射成表的策略 UML中的类图主要由类及其关系组成,而类之间的关系又可以细分为: (1)泛化:在UML类图中,如果子类型的接口包括超类型的接口中的每个元素。则超类与子类之间构成泛化关系。泛化通常可以用继承或授权的方式实现。 (2)关联:在UML类图中,关联表示类的实例之间存在的某种关系。它通常可以有1对1、1对多和多对多等情形。 (3)聚集:在UML类图中,聚集描述了部分与整体之间的关系。 (4)组成:在UML类图中,组成由聚集演变而成,它表示一个部分对象仅属于一个整体,并且部分对象通常与整体对象共存亡。 下面结合例子,分别讨论在将类映射成表的过程中这些关系的实现技术。 假设,有一个电脑公司专门从事软件开发,其项目主要由项目开发部门承担,它们之间构成多对多的关联(即一个项目可由多个部门承担,而一个部门又可以承担多个项目的开发工作);项目开发部门由经理及一般职员组成,项目开发部门和组成人员之间构成聚集关系,而人(抽象类)又可以进一步和一般职员及经理两个子类之间构成继承关系;每个项目具有一定的属性,它们之间构成组成关系。 综上所述,其主要关系的UML类图如图1所示。

数据库课后题答案 第6章 管理数据库其他对象

第6章管理数据库其他对象 本章要点: 1、视图及视图与表的关系 2、视图的创建、管理和操作 3、规则、默认值的概念及创建、捆绑、修改和删除 4、自定义数据类型的创建、修改、删除和查看 5、触发器的概念、作用及两种触发器的工作原理和执行过程 6、触发器的创建及管理 6.1 视图 6.1.1 视图的概念 视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图的结构和数据是对数据表进行查询的结果。 视图被定义后便存储在数据库中,通过视图看到的数据只是存放在基表中的数据。当对通过视图看到的数据进行修改时,相应的基表的数据也会发生变化,同时,若基表的数据发生变化,这种变化也会自动地反映到视图中。 视图可以是一个数据表的一部分,也可以是多个基表的联合。 6.1.2 视图的优点 ?视图可以屏蔽数据的复杂性,简化用户对数据库的操作。 ?视图可以让不同的用户以不同的方式看到不同或者相同的数据集。 ?可以使用视图重新组织数据。 ?视图可以定制不同用户对数据的访问权限。 6.1.3 创建视图 1、创建视图之前的注意事项: ?只能在当前数据库中创建视图。 ?一个视图中行、列的限制。 ?如果视图中某一列是函数、数学表达式、常量或者来自多个表的列名相同,则必须为列定义名称。

?视图与基表的关系 ?不能在视图上创建索引,不能在规则、默认的定义中引用视图。 2、创建视图 (1)使用企业管理器创建视图 在企业管理器中展开要创建视图的数据库,用鼠标右键单击“视图”选项, 在弹出的快捷菜单中选择“新建视图”命令,打开后,这个界面我们在前 面介绍select语句的时候已经给大家介绍过了。在此不再赘述了,请大家 对照书本的例子练习。 (2)使用Transact-SQL语句创建视图 CREATE VIEW [ < database_name > .] [ < owner > .] view_name [ ( column [ ,...n ] ) ] [ WITH < view_attribute > [ ,...n ] ] AS select_statement [ WITH CHECK OPTION ] < view_attribute > ::= { ENCRYPTION | SCHEMABINDING | VIEW_METADATA } 举例: 在“studentborrow”数据库中,创建一个仅包含“高等教育出版社”出版图书的视图 语句: create view 高等教育出版社 as select * from 图书信息 where 出版社名称='高等教育出版社'

数据库系统概论试题及答案1234

一、单选题(每题2分,共20分) 1、在数据库系统的三级模式结构中,用来描述数据的全局逻辑结构的是() (1)子模式 (2)用户模式(3)模式(4)存储模式 2、在下列实体类型的联系中,一对多联系的是(2) (1)学校与课程的学习联系 (2)父亲与孩子的父子关系 (3)省与省会的关系(4)顾客与商品的购买关系 3、在关系模型中,实现关系中不允许出现相同的元组的约束是通过(2) (1)侯选键 (2)主键(3)外键 (4)超键 4、下列哪种运算不属于关系代数的基本运算(1) (1)连接 (2)笛卡尔积 (3) 相减 (4) 投影 5、在SQL中,可以用谓词EXISTS来测试一个集合中是否(4) (1)有相同元组存在 (2)为空集合(3) 有相同分量存在 (4) 为非空集合 6、设有关系r如图所示,则该关系最高为哪一级范式(3) A B C D (1) 1NF (2)2NF (3)3NF (4)BCNF A1 b1 c1 d2 A1 b2 c2 d4 A2 b1 c2 d1 A1 b3 c1 d4 7、设已经F={C->A,CG->D,CG->B,CE->A,ACD->B},从中去掉哪些函数依赖关系后得到的新的函数依赖集合F1与F等价的是(4) (1)C->A和CG->B (2) C->A 和ACD->B (3)CE->A 和ACD->B (4)CE->A和CG->B 8、ER图是一种直观表示何种模型的工具(3) (1)结构数据模型(2)关系数据模型 (3) 概念数据模型 (4)层次和网状模型 9、约束”年龄限制在18—30岁之间”属于DBMS的哪种功能(2) (1)安全性(2)完整性(3)并发控制(4)恢复 10、在对象联系图中,双线箭头表示对象间的(3) (1)函数值为多值 (2)属性值为多值 (3)泛化/细化联系(4)对象之间包含联系 二、判断题(每题2分,共10分) 1、对一个客观事物,可以用多种数据模型来描述(对) 2、设R、S是任意两个同类关系,U是R的关系框架中所有属性的集合,属性集A 3、数据库事务的原子性是指事物在执行过程中不能出现

数据库的表关系图

数据库的表关系图 1>:one-to-one(一对一关联)主键关联: 一对一关联一般可分为主键关联和外键关联 主键关联的意思是说关联的两个实体共享一个主键值,但这个主键可以由两个表产生. 现在的问题是: *如何让另一个表引用已经生成的主键值 解决办法: *Hibernate映射文件中使用主键的foreign生成机制 eg:学生表: 添加: 元素的lazy属性为true,表示延迟加载,如果lazy设为false,则表示立即加载.以下对这二点进行说明. 立即加载:表示在从数据库中取得数据组装好一个对象后,会立即再从数据库取得数据组装此对象所关联的对象 延迟加载:表示在从数据库中取得数据组装好一个对象后,不会立即从数据库中取得数据组装此对象所关联的对象, 而是等到需要时,才会从数据库取得数据组装此关联对象. 元素的fetch属性可选为select和join join:连接抓取,Hibernate通过在Select语句中使用outer join(外连接)来获得对象的关联实例或者关联集合. select:查询抓取,Hibernate需要另外发送一条select语句抓取当前对象的关联实体或集合. ******所以我们一般用连接抓取 证件表:

数据库系统原理教程课后习题及答案(第十章)

第11章并发控制 1 .在数据库中为什么要并发控制? 答:数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。 2 .并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况? 答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏’夕数据。( l )丢失修改(lost update ) 两个事务Tl 和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)Tl 提交的结果,导致Tl 的修改被丢失。( 2 )不可重复读(Non 一Repeatable Read ) 不可重复读是指事务Tl 读取数据后,事务几执行更新操作,使Tl 无法再现前一次读取结果。( 3 )读“脏”数据(Dirty Read ) 读“脏’夕数据是指事务Tl 修改某一数据,并将其写回磁盘,事务几读取同一数据后,Tl 由于某种原因被撤销,这时Tl 已修改过的数据恢复原值,几读到的数据就与数据库中的数据不一致,则几读到的数据就为“脏”数据,即不正确的数据。避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。 3 .什么是封锁?基本的封锁类型有几种?试述它们的含义。 答:封锁就是事务T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T 就对该数据对象有了一定的控制,在事务T 释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。 基本的封锁类型有两种:排它锁(Exclusive Locks ,简称x 锁)和共享锁( Share Locks,简称S 锁)。排它锁又称为写锁。若事务T 对数据对象A 加上X 锁,则只允许T 读取和修改A ,其他任何事务都不能再对A 加任何类型的锁,直到T 释放A 上的锁。这就保证了其他事务在T 释放A 上的锁之前不能再读取和修改A 。共享锁又称为读锁。若事务T 对数据对象A 加上S 锁,则事务T 可以读A但不能修改A ,其他事务只能再对A 加S 锁,而不能加X 锁,直到T 释放A 上的S 锁。这就保证了其他事务可以读A ,但在T 释放A 上的S 锁之前不能对A 做任何修改。 4 .如何用封锁机制保证数据的一致性? 答:DBMS 在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务Tl 在对A 进行修改之前先对A 执行xock ( A ) ,即对A 加x 锁。这样,当几请求对A 加x 锁时就被拒绝,几只能等待Tl 释放A 上的锁后才能获得对 A 的x 锁,这时它读到的A 是Tl 更新后的值,再按此新的A 值进行运算。这样就不会丢失Tl 的更新。

面向对象数据库简介

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

PowerDesigner中的对象与关系映射建模

PowerDesigner中的对象与关系映射建模 Sybase 公司PowerDesigner上海研发中心余亚,王晓昀 概述 从80年代中期开始,随着C++语言的成功,面向对象语言已经成为软件开发中的主导语言。现在很多商用软件,尤其是企业信息系统,都是使用面向对象语言进行开发的。应用面向对象方法,我们通过类来抽象不同类别的实体,属性来表示实体的静态特征,关联来抽象实体间的联系,继承来抽象类别的包含关系。 很多的应用程序都需要进行数据存储,关系型数据库是最常用的数据管理系统。在关系型数据库中,表、列和外键是抽象数据的基本元素。关系型数据库是建立在关系计算和布尔代数基础之上的,SQL是数据库的操作语言,通过关系运算,连接、联合等,来操作数据。 我们很容易的看出,面向对象模型和关系模型是不完全匹配的。比如 1. 对象可以存储到多张表,表也可以存储多个类的对象。 2. 对象之间的关系是双向的,而表之间的关系是单向的。 3. 对象之间有继承关系,表之间没有。 为了解决这种不匹配,人们定义了很多映射模式来建立两种模型间的对应关系。这些映射模式逻辑上解决了模型间的不匹配,使得面向对象程序能够正确地和关系关系型数据库进行交互,但是对于程序的开发,仍然有很多问题需要解决。 问题 对于设计人员来说,他们需要找到并且描述这两种模型元素间的映射关系,以便编程人员能够正确地实现数据的存储和查询。现在很多建模工具仅提供其中一种模型的支持,比如Together仅支持对象建模,ERWin仅支持数据建模。即使同时支持两种模型,这种支持也很不完整,比如Rose中的数据建模功能。分析设计人员常常需要两种不同的工具来进行建模,如果他们想描述这两种模型元素间的对应关系,他们只能通过文档或者表格的形式。这很容易产生错误,并且如果模型发生改变,这些文档需要手工更改,容易造成不一致,维护起来很困难。 对于编码人员,他们需要应用某种技术来实现模型的这种对应关系。如果通过语言提供的数据库访问接口,比如Java 的JDBC或者.Net的https://www.doczj.com/doc/5610589675.html,,对于每一个对象的每一个存储操作,编码人员需要编写存取操作的SQL,数据库控制和访问代码,这是一项繁琐、重复性的劳动。即使应用O/R 映射的框架,比如Hibernate, EJB 3.0或者.Net平台的NHibernate,他们需要编写映射文件或者通过标记来定义O/R映射框架所需要的映射元数据。这些映射元数据只不过是我们在设计阶段定义的映射关系另外一种表现方式,转换成XML或者标记的方式,无疑这种转换增加了错误的可能性和维护的难度。 PowerDesigner解决之道 PowerDesigner提供对于多达8种模型的支持,其中包括面向对象模型和关系数据模型。作为一个集成的企业建模工具,PowerDesigner并不是简单的将几种模型工具罗列在一起。各种模型相互之间可以建立关联,通过这种关联,它提供了企业模型统一、一致的视图。其中模型间的映射和自动生成是建立模型间关联重要的手段。 模型可以描述系统的静态特征和动态特征,而静态特征可以用来表述系统的持久状态,比如面向对象模型中的实体类,数据库模型的表,XML模型中的元素节点等。在PowerDesigner中,我们可以在各种可以描述持久状态模型间建立映射,比如XML模型到面向对象模型间的映射,面向对象模型到关系数据模型的映射等。下面我们就来看一下,PowerDesigner 是如何支持面向对象模型到关系模型的映射的。

数据库选择题

答案见《数据库选择题填空题答案.doc》 一、选择题 1. 在一个二维表中,行称为________,列称为________。 A) 属性;元组 B) 元组;属性 C) 关系;元组 D) 属性;关系 2. 数据库系统的核心是________。 A) 数据库管理系统 B) 数据库 C) 数据 D) 数据库应用系统 3. VFP是一种________数据库管理系统。 A) 层次型 B) 网状型 C) 关系型 D) 树型 4. 支持数据库各种操作的软件系统是________。 A) 数据库系统 B) 操作系统 C) 数据库管理系统 D) 命令系统 5. 在关系模型中,从表中选出满足条件的记录的操作称为________。 A) 连接 B) 投影 C) 联系 D) 选择 6. 数据库系统与文件系统的主要区别是________。 A) 文件系统只能管理程序文件,而数据库系统可以管理各种类型的文件 B) 文件系统管理的数据较少,而数据库系统能管理大量数据 C) 文件系统比较简单,数据库系统比较复杂 D) 文件系统没有解决数据冗余和数据独立性问题,而数据库系统解决了这些问题 7. 在关系运算中,选择的操作对象是________;投影的操作对象是________;连接的操作对象是________。 A) 一个表;一个表;两个表 B) 一个表;两个表;两个表 C) 一个表;一个表;一个表 D) 两个表;一个表;两个表 8. 在关系数据库中,基本的关系运算有三种,它们是________。 A) 选择、投影和统计 B) 选择、投影和连接 C) 排序、索引和选择 D) 统计、查找和连接 9. VFP是一种关系型数据库管理系统,所谓关系是指________。 A) 表中各个记录之间的联系 B) 数据模型满足一定条件的二维表格式 C) 表中各个字段之间的联系 D) 一个表与另一个表之间的联系 10. 一个仓库里可以存放多个部件,一种部件可以存放于多个仓库,仓库与部件之间是________的联系。 A) 一对一 B) 多对一 C) 一对多 D) 多对多 11. 自然连接要求被连接的两关系有若干相同的________。 A) 实体名 B) 属性名 C) 主关键字 D) 主属性名

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

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

相关主题
文本预览
相关文档 最新文档