Oracle应用开发(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-14 13:09:37

点击下载

作者:青岛东合信息技术有限公司

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Oracle应用开发

Oracle应用开发试读:

前言

随着IT产业的迅猛发展,企业对应用型人才的需求越来越大。“全面贴近企业需求,无缝打造专业实用人才”是目前高校计算机专业教育的革新方向。

该系列教材是面向高等院校软件专业方向的标准化教材。教材研发充分结合软件企业的用人需求,经过充分的调研和论证,并参照多所高校一线专家的意见,具有系统性、实用性等特点。旨在使读者在系统掌握软件开发知识的同时,着重培养其综合应用能力和解决问题的能力。

该系列教材具有如下几个特色。

1.以培养应用型人才为目标

本系列教材以应用型软件及外包人才为培养目标,在原有体制教育的基础上对课程进行深层次改革,强化“应用型”技术动手能力。使读者在经过系统、完整的学习后能够达到如下要求。

■ 掌握软件开发所需的理论和技术体系以及软件开发过程规范体系;

■ 能够熟练地进行设计和编码工作,并具备良好的自学能力;

■ 具备一定的项目经验,包括代码的调试、文档编写、软件测试等内容;

■ 达到软件企业的用人标准,实现学校学习与企业的无缝对接。

2.以新颖的教材架构来引导学习

本系列教材在内容设置上借鉴了软件开发中“低耦合高内聚”的设计理念,组织架构上遵循软件开发中的MVC理念,即在保证最小教学集的前提下可根据自身的实际情况对整个课程体系进行横向或纵向裁剪。教材的主要组成部分如下所示。

■ 理论篇:最小学习集。学习内容的选取遵循“二八原则”,即重点内容由企业中常用的 20%的技术组成,以“任务驱动”的方式引导知识点的学习,以章节为单位进行组织,章节的结构如下。

✓ 本章目标:明确本章的学习重点和难点;

✓ 学习导航:以流程图的形式指明本章在整本教材中的位置和学习顺序;

✓ 任务描述:“案例教学”,驱动本章教学的任务,所选任务典型、实用;

✓ 章节内容:通过小节迭代组成本章的学习内容,以任务描述贯穿始终。

■ 实践篇:多点于一线,任务驱动,以完整的具体案例贯穿始终,力求使学生在动手实践的过程中,加深课程内容的理解,培养学生独立分析和解决问题的能力,并配备相关知识的拓展讲解和拓展练习,拓宽学生的知识面。

3.以完备的教辅体系和教学服务来保证教学

为充分体现“实境耦合”的教学模式,方便教学实施,保障教学质量和学习效果,另外还开发了可配套使用的项目实训教材和全套教辅产品,可供各院校选购:

■ 项目篇:多线于一面,项目篇是理论篇和实践篇在项目开发上的应用,以辅助教材的形式提供适应当前课程(及先行课程)的综合项目,遵循软件开发过程,注重工作过程的系统性,培养学生分析解决实际问题的能力,是实施“实境”教学的关键环节。

■ 立体配套:为适应教学模式和教学方法的改革,本系列教材提供完备的教辅产品,主要包括教学指导、实验指导、电子课件、习题集、题库资源、项目案例等内容,并配以相应的网络教学资源。

■ 教学服务:教学实施方面,提供全方位的解决方案(在线课堂解决方案、专业建设解决方案、实训体系解决方案、教师培训解决方案和就业指导解决方案等),以适应软件开发教学过程的特殊性,为教学工作的顺利开展和教学成果的转化保驾护航。

本系列教材、教辅、网络资源及相关教学服务的推出对于高校计算机相关专业的建设具有重要的推动作用,加快了建立新课程教材体系、考试评价制度、培养学生创新能力和实践能力的培养模式的步伐。另外,该课程的设置以学生就业为导向,实现了专业设置和社会需求的互动,从而实现了高校教育和企业用人需求之间的联通,对于促进高校课程改革和扩大高校毕业生就业具有重要的意义。

本系列教材由青岛东合信息技术有限公司编著,参与本书编写工作的还有:韩敬海、丁春强、吴明君、赵克玲、高峰、张幼鹏、张玉星、张旭平等。参与本书编写工作的还有:青岛农业大学、潍坊学院、曲阜师范大学、济宁学院、济宁医学院等高校,期间得到了各合作院校专家及一线教师的大力支持和协作。在此技术丛书出版之际要特别感谢给予我们开发团队大力支持和帮助的领导及同事,感谢合作院校的师生给予我们的支持和鼓励,更要感谢开发团队每一位成员所付出的艰辛劳动。如有意见或建议,可访问公司网站(http://www.dong-he.cn)或发邮件至dh_iTeacher@126.com。

高校软件外包专业 项目组

2013年5月理论篇第1章 关系型数据库

本章目标

■ 掌握数据、数据库、数据库管理系统、数据库系统以及关系型数据库的概念。

■ 了解数据库的特征和发展的各个阶段。

■ 了解数据模型的概念、分类以及关系模型的3个组成部分。

■ 了解域、笛卡儿积、关系的定义。

■ 了解关系的实质以及关系模式的定义。

■ 了解关系模型中完整性的3个分类及其定义规则。

■ 了解关系代数中用到的运算符、传统的集合运算规则以及关系运算规则。

■ 理解函数依赖的含义,规范化的基本思想,并掌握各范式的概念及其之间的关系。

■ 掌握数据库设计的基本步骤。

■ 掌握生成E-R图的方法以及将E-R图向关系模型转换的方式。

学习导航

任务描述

介绍关系型数据库。1.1 数据库概述

今天是一个信息化的时代,各行各业,都有海量的数据需要存储或处理,如搜索引擎、电子地图、大中型企业的生产数据等。如何更加安全地存储数据,更加快速地检索和处理数据,都是数据库技术需要研究的问题。在系统地介绍数据库技术之前,首先介绍一些数据库的常用术语和基本概念。1.1.1 数据库基本概念

在数据库技术中,数据、数据库、数据库管理系统和数据库系统是密切相关的4个基本概念。此外,在本节中将简要介绍关系型数据及关系型数据库管理系统的基本概念。

1.数据(Data)

数据是数据库中存储的基本对象。这里所指的数据是一个广义的概念,对于数据,传统的理解仅限于数字,但是数据库中数据的概念并不只是数字。数据库中数据的概念和种类很多,如文字、图形、图像、声音、视频、部门员工信息、企业生产数据,甚至内存中的一个对象等,这些都是数据。

因此,可以给数据库中的数据下一个广义的定义。

定义 描述事物的符号记录称为数据。这个符号的内容形式包括上文中提到的各种信息类型。数据虽然有许多种表现形式,但都需要经过数字化后存入计算机。

数据的形式本身并不能完全表达其内容,需要经过语义解释,因此数据与其语义是不可分的。

在日常生活中,人们直接使用语言(如英语、汉语)进行信息交流。在计算机中,为了存储和处理现实世界中的这些抽象的信息,就要从这些事物中抽取出重要且有用的信息来组成一个记录描述给计算机。例如,在某特定环境中,对于雇员有用的信息是雇员编号、姓名、工作、部门负责人、薪资、部门,那么可以描述如下:

上面的雇员信息就是数据。对于上面的雇员记录,通过了解其语义,可以得知:该雇员叫“SMITH”,雇员编号“7369”,从事的工作“CLERK”,受雇时间“17-12月-80”,所属部门的部门编号为“20”,部门负责人的编号为“7902”。而不了解数据语义,则很难理解其含义,可见数据和语义是不可分的。数据的解释是指对数据含义的说明,数据的含义称为数据的语义。

2.数据库(DataBase,DB)

数据库的概念从不同的角度来描述就有不同的定义。例如,称数据库是一个“记录保存系统”(该定义强调了数据库是若干记录的集合)。又如称数据库是“人们为解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合”(该定义侧重于数据的组织)。更有甚者称数据库是“一个数据仓库”。当然,这种说法虽然形象,但并不严谨。

严格地定义数据库,如下所示。

定义 数据库是“按照数据结构来组织、存储和管理数据的仓库”。在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。例如,企业或事业单位的人事部门常常要把本单位雇员的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。有了这个“数据仓库”就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等。这些工作如果都能在计算机上自动进行,那企业的人事管理就可以达到极高的水平。此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种“数据库”,使其可以利用计算机实现财务、仓库、生产的自动化管理。

詹姆斯.马丁(J.Martin)给数据库下了一个比较完整的定义。

定义 数据库是存储在一起的相关数据的集合,这些数据是结构化的、无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。

3.数据库管理系统(DataBase Management System,DBMS)

了解数据和数据库的概念之后,亟待解决的问题是如何科学地组织和存储数据以及如何高效地检索和维护数据。解决这些问题的是一个系统软件,即数据库管理系统。

数据库管理系统是一个通用的管理数据库的软件系统,是由一组计算机程序构成的。数据库管理系统负责数据库的定义、建立、操纵、管理和维护,能够对数据库进行有效的管理,包括存储管理、安全性管理、完整性管理等。数据库管理系统提供了一个软件环境,使用户能方便快速地建立、维护、检索、存取和处理数据库中的信息。

数据库管理系统实现数据库系统的各项功能。应用程序必须通过DBMS访问数据库。DBMS可以看成是操作系统的一个特殊用户,它向操作系统申请所需的软硬件资源,并接受操作系统的控制和调度。操作系统则是DBMS与硬件之间的接口,是DBMS的基础。

4.数据库系统(DataBase System,DBS)

数据库系统是指在计算机系统中引入数据库后的系统,其严格定义如下。

定义 数据库系统是由数据库及其管理软件组成的系统。它是为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构。它是一个实际可运行的,并且能够存储、维护和为应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。

数据库系统一般由数据库、数据库管理系统、数据库管理员(DBA)及用户和应用程序4个部分组成。其核心是数据库管理系统。

5.关系型数据库管理系统(Relational DataBase Management System,RDBMS)

RDBMS指的是关系型数据库管理系统,它是通过数据、关系和对数据的约束三者组成的数据模型来存放和管理数据的,其中,关系型数据库是建立关系模型基础之上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

此外,RDBMS是SQL的基础,同样也是所有现代数据库系统的基础,如MS SQL Server、IBM DB2、Oracle、MySQL等。

RDBMS中的数据存储在被称为“表(Table)”的数据库对象中,其中,表是相关的数据项的集合,它由列和行组成。

RDBMS的特点如下。

■ 数据以表格的形式出现;

■ 每行为各种记录名称;

■ 每列为记录名称所对应的数据域;

■ 许多的行和列组成一张表;

■ 若干个表组成DataBase。

数据、数据库、数据库管理系统、数据库系统以及关系型数据库,5个基本概念的相互关系如下。

■ 数据是数据库存储的基本对象,描述事物的符号;

■ 数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合;

■ 数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行;

■ 数据库系统是指在计算机系统中引入数据库后的操作系统;

■ 关系型数据库是建立关系模型基础之上的数据库。

注意 关于关系模型的概念参见1.3节。1.1.2 数据库发展史

数据库的历史可以追溯到20世纪50年代,那时的数据管理非常简单。通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理,其运行结果可以在纸上打印出来或者制成新的穿孔卡片。而数据管理就是对所有这些穿孔卡片进行物理的储存和处理。然而,1951年雷明顿兰德公司(Remington Rand Inc.)的一种叫作Univac I的计算机推出了一种一秒钟可以输入数百条记录的磁带驱动器,从而引发了数据管理的革命。

研制计算机的初衷是利用它执行科学计算。随着计算机技术的发展,其应用远远超出了这个范围。在应用需求的推动下,在计算机硬件、软件发展的基础上,数据库管理技术经历了人工管理、文件系统、数据库系统、高级数据库系统4个阶段,下面分别来讲解这4个阶段。

1.人工管理阶段

20世纪50年代中期之前,计算机的软硬件均不完善。硬件存储设备只有磁带、卡片和纸带,软件方面还没有操作系统,当时的计算机主要用于科学计算。这个阶段由于还没有软件系统对数据进行管理,程序员在程序中不仅要规定数据的逻辑结构,还要设计其物理结构,包括存储结构、存取方法、输入/输出方式等。当数据的物理组织或存储设备改变时,用户程序就必须重新编制。由于数据的组织面向应用,不同的计算程序之间不能共享数据,使得不同的应用之间存在大量的重复数据,很难维护应用程序之间数据的一致性。

这一阶段的主要特征可归纳为如下几点。

■ 计算机中没有支持数据管理的软件;

■ 数据组织面向应用,数据不能共享,数据重复;

■ 在程序中要规定数据的逻辑结构和物理结构,数据与程序不独立;

■ 数据处理方式——批处理。

2.文件系统阶段

20世纪50年代中期到60年代中期,由于计算机大容量存储设备(如硬盘)的出现,推动了软件技术的发展,而操作系统的出现标志着数据管理步入一个新的阶段——文件系统阶段。在这个阶段数据以文件为单位存储在外存储器且由操作系统统一管理。操作系统为用户使用文件提供了友好界面,并且文件的逻辑结构与物理结构脱离、程序和数据分离,从而使数据与程序有了一定的独立性。用户的程序与数据可分别存放在外存储器上,各个应用程序可以共享一组数据,实现了以文件为单位的数据共享。

但由于数据的组织仍然是面向程序的,所以存在大量的数据冗余。而且数据的逻辑结构不能方便地修改和扩充,数据逻辑结构的每一点微小改变都会影响到应用程序。由于文件之间互相独立,因而它们不能反映现实世界中事物之间的联系,操作系统不负责维护文件之间的联系信息,如果文件之间有内容上的联系,那也只能由应用程序去处理。

3.数据库系统阶段

20世纪60年代后,随着计算机在数据管理领域的普遍应用,人们对数据管理技术提出了更高的要求:希望面向企业或部门;以数据为中心组织数据,减少数据的冗余;提供更高的数据共享能力;同时要求程序和数据具有较高的独立性,当数据的逻辑结构改变时,不涉及数据的物理结构,也不影响应用程序,以降低应用程序研制与维护的费用。数据库技术正是在这样一个应用需求的基础上发展起来的。数据库技术具有如下特点。

■ 面向企业或部门,以数据为中心组织数据,形成综合性的数据库,为各应用共享;

■ 采用一定的数据模型,数据模型不仅要描述数据本身的特点,而且要描述数据之间的联系;

■ 数据冗余小,易修改、易扩充。不同的应用程序根据处理要求,从数据库中获取需要的数据,这样就减少了数据的重复存储,也便于增加新的数据结构,便于维护数据的一致性;

■ 程序和数据有较高的独立性;

■ 具有良好的用户接口,用户可方便地开发和使用数据库;

■ 对数据进行统一管理和控制,提供了数据的安全性、完整性以及并发控制。

从文件系统发展到数据库系统,这在信息领域中具有里程碑的意义。在文件系统阶段,人们在信息处理中关注的中心问题是系统功能的设计,因此程序设计占主导地位;而在数据库方式下,数据开始占据了中心位置,数据的结构设计成为信息系统首先关心的问题,而应用程序则以既定的数据结构为基础进行设计。

4.高级数据库系统阶段

高级数据库系统阶段的主要标志是分布式数据库系统和面向对象数据库系统的出现。第3阶段数据库系统是一种集中式的数据系统。集中式系统的缺点是随着数据量的增加,系统相当庞大、操作复杂、开销大,而且因为数据集中存储,所以大量的通信都要通过主机完成,这样易造成拥挤。分布式数据库系统的主要特点是数据在物理上分散存储,在逻辑上是统一的。分布式数据库系统的多数处理就地完成,各地的计算机由数据通信网络相联系。

面向对象数据库系统是面向对象的程序设计技术与数据库技术相结合的产物。面向对象数据库系统的主要特点是具有面向对象技术的封装性和继承性,提高了软件的可重用性。

分布式数据库系统是数据库技术和计算机网络技术相结合的产物,在20世纪80年代中期已有商品化产品问世。分布式数据库是一个逻辑上统一、地域上分散的数据集合,是计算机网络环境中各个节点局部数据库逻辑集合,同时受分布式数据库管理系统的控制和管理。其主要特点是:

■ 局部自主

网络上每个节点的数据库系统都具有独立处理本地事物的能力,而且各局部节点之间也能够相互访问、有效地配合处理更复杂的事物。因此,分布式数据库系统特别适合各个部门地理位置分散的组织机构。例如,银行业务、飞机订票、企业管理等。

■ 可靠性和可用性

分布式系统比集中式系统有更高的可靠性,在个别节点或个别通信链路发生故障的情况下可以继续工作。一个局部系统发生故障不至于导致整个系统停顿或破坏,只要有一个节点上的数据备份是可用的,系统就可以继续工作。可见,支持一定程度的数据冗余是为充分发挥分布式数据库系统优点的先决条件之一。

■ 效率和灵活性

分布式系统分散了工作负荷,缓解了单机容量的压力,分布式数据库系统能够在对现有系统影响最小的情况下实现扩充。因此,扩大系统规模比集中式系统更加方便、经济、灵活。

分布式数据库系统示意图如图1-1所示。图1-1 分布式数据库系统示意图1.1.3 数据库特征

与人工管理阶段和文件系统阶段相比,数据库系统的特点主要有以下几个方面。

■ 数据结构化:数据结构化是数据库与文件系统的根本区别。在描述数据时不仅要描述数据本身,还要描述数据之间的联系。

■ 数据的共享性:数据库系统从整体角度看待和描述数据,数据不再面向某个应用而是面向整个系统,因此数据可以被多个用户共享和应用。

■ 数据冗余度低:数据冗余度是指同一数据重复存储时的重复程度。因为数据库系统的共享性降低了数据的冗余度。

■ 数据的一致性:数据的一致性是指同一数据不同副本的值一样,而在采用人工管理或文件系统管理时,由于数据被重复存储,当不同的应用使用和修改不同的副本时就易造成数据的不一致。

■ 物理独立性:当数据的存储结构(或物理结构)改变时,通过对映像的相应改变可以保持数据的逻辑结构不变,从而应用程序也不必改变。

■ 逻辑独立性:当数据的总体逻辑结构改变时,通过对映像的相应改变可以保持数据的局部逻辑结构不变,应用程序是依据数据的局部逻辑结构编写的,所以应用程序不必修改。

■ 数据的安全性(Security):数据的安全性是指保护数据,防止不合法使用数据造成数据的泄密和破坏,使每个用户只能按规定对某些数据以某些方式进行访问和处理。

■ 数据的完整性(Integrity):数据的完整性指数据的正确性、有效性和相容性。即将数据控制在有效的范围内,或要求数据之间满足一定的关系。

■ 并发(Concurrency)控制:当多个用户的并发进程同时存取、修改数据库时,可能会发生相互干扰而得到错误的结果并使得数据库的完整性遭到破坏,因此必须对多用户的并发操作加以控制和协调。

■ 数据库恢复(Recovery):计算机系统的硬件故障、软件故障、操作员的失误以及人为的破坏也会影响数据库中数据的正确性,甚至造成数据库部分或全部数据的丢失。DBMS 必须具有将数据库从错误状态恢复到某一已知的正确状态(也称为“完整状态”或“一致状态”)的功能。1.1.4 常见数据库

数据库技术经过几代的发展,现在已经非常成熟。当前阶段在市场占主要市场份额的数据库如表1-1所示。表1-1 常见数据库

1.Oracle

Oracle数据库在价格定位上更着重于大型的企业数据库领域。对于数据量大、事务处理繁忙、安全性要求高的企业,Oracle无疑是比较理想的选择。随着Internet的普及,带动了网络经济的发展,Oracle适时地将自己的产品紧密地和网络计算结合起来,成为在Internet应用领域数据库厂商的佼佼者。

2.DB2

DB2系统在企业级的应用中十分广泛,目前全球DB2系统用户超过6000万,分布于约40万家公司。

3.SQL Server

SQL Server可以与Windows操作系统紧密集成,这种安排使SQL Server能充分利用操作系统所提供的特性,不论是应用程序开发速度还是系统事务处理运行速度,都能得到较大的提升。另外,SQL Server可以借助浏览器实现数据库查询功能,并支持内容丰富的扩展标记语言(XML),提供了全面支持Web功能的数据库解决方案。对于在Windows平台上开发的各种企业级信息管理系统来说,不论是C/S(客户机/服务器)架构还是B/S(浏览器/服务器)架构,SQL Server都是一个很好的选择。SQL Server的缺点是只能在Windows系统下运行。

4.MySQL系列

MySQL是一个小型关系型数据库管理系统,与其他的大型数据库,例如Oracle、DB2、SQL Server等相比,MySQL有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。这4个软件都是自由或开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。1.2 数据模型

数据(Data)是描述事物的符号记录;模型(Model)是现实世界的抽象;数据模型(Data Model)是数据特征的抽象,是数据库管理的数学形式框架。

数据模型由以下3个要素组成。

■ 数据结构:数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型的基础,数据操作和约束都建立在数据结构上。不同的数据结构具有不同的操作和约束。

■ 数据操作:数据操作主要描述在相应的数据结构上的操作类型和操作方式。

■ 数据约束:数据约束主要描述数据结构内数据间的语法、词义联系,它们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容。

数据模型按不同的应用层次分成以下3种类型。

■ 概念数据模型(Conceptual Data Model):简称概念模型,即用简单、清晰、用户易于理解的概念来描述现实世界中具体事物及事物之间的关系,它是现实世界到信息世界的抽象,是数据库设计人员进行数据库设计的工具,与具体的数据库管理系统无关。此外,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及 DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据管理系统无关。概念数据模型必须换成逻辑数据模型,才能在DBMS中实现。

■ 逻辑数据模型(Logical Data Model):简称逻辑模型,这是用户从数据库所看到的模型,是具体的DBMS所支持的数据模型,如网状数据模型(Network Data Model)、层次数据模型(Hierarchical Data Model)等。此模型既要面向用户,又要面向系统,主要用于数据库管理系统的实现。

■ 物理数据模型(Physical Data Model):简称物理模型,是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且还与操作系统和硬件有关。每一种逻辑数据模型在实现时都有其对应的物理数据模型。DBMS 为了保证其独立性与可移植性,大部分物理数据模型的实现工作由系统自动完成,而设计者只设计索引、聚集等特殊结构。

在概念数据模型中最常用的是E-R模型、扩充的E-R模型、面向对象模型及谓词模型。在逻辑数据类型中最常用的是层次模型、网状模型、关系模型。数据库领域采用的数据模型有层次模型、网状模型和关系模型,其中应用最广泛的是关系模型。1.2.1 概念模型

概念模型用于信息世界的建模。概念模型不依赖于某一个DBMS支持的数据模型。概念模型可以转换为计算机上某一DBMS支持的特定数据模型。

概念模型具有如下特点。

■ 具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识;

■ 应用简单、清晰、易于用户理解,是用户与数据库设计人员之间进行交流的语言。

为了用信息来描述现实世界,需要了解一些信息世界中的基本概念,如下。

■ 实体(Entity):客观存在并可相互区别的事物称为“实体”。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个雇员、一个学生、学生的一次选课、老师与系的工作关系等都是实体。

■ 属性(Attribute):实体所具有的某一特性称为“属性”。一个实体可以由若干个属性来刻画。例如,雇员实体可以由雇员编号、姓名、工作、部门负责人、薪资、部门等属性组成。(7369,SMITH,CLERK,7902,17-12 月-80,800,20)这些属性组合起来表示了一个雇员。

■ 码(Key):唯一标识实体的属性或属性的集合称为“码”。

■ 域(Domain):属性的取值范围称为该属性的“域”。例如,雇员编号的域为4位整数,姓名的域为字符串集合,性别的域为(男,女)。

■ 实体型(Entity Type):用实体名及其属性集合来抽象和刻画同类实体,称为“实体型”。例如,雇员(编号、姓名、工作、部门负责人、薪资、部门)就是一个实体类型。

■ 实体集(Entity Set):同型实体的集合称为“实体集”。

■ 联系(Relationship):现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系。

常见的两个实体之间的关系分为“一对一”、“一对多”和“多对多”,具体介绍如下。

■ 一对一关联(1:1)

如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之关联,反之亦然,则称实体集A与实体集B具有一对一关联,记为1:1。例如,假设一个部门只有一个部门经理,且一个部门经理只能任职于一个部门,则部门与部门经理之间只有一对一关联。

■ 一对多关联(1:n)

如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之关联,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之关联,则称实体集A与实体B有一对多关联,记为1:n。例如,一个部门中有若干雇员,且一个雇员只能就职于一个部门,则部门与雇员之间具有一对多关联。

■ 多对多关联(m:n)

如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之关联,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之关联,则称实体集A与实体B具有多对多关联,记为m:n。例如,一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课程与学生之间具有多对多关联。

实体之间关系如图1-2所示。图1-2 两个实体型之间的3种关联关系

实体型之间的一对一、一对多、多对多联系不仅存在于两个实体型之间,也存在于两个以上的实体型之间。同一个实体集内的各实体之间也可以存在一对一、一对多、多对多的联系。

概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示出上述信息世界中的常用概念。概念模型的表示方法很多,其中最为著名、最为常用的是P.P.S.Chen于1976年提出的实体—联系方法(Entity-Relationship Approach)。该方法用E-R图来描述现实世界的概念模型,E-R方法也称为“E-R模型”。

E-R图提供了表示实体、属性和联系的方法,如图1-3所示。图1-3 E-R方法的图形元素

在图1-3中,各个图形元素所表示的含义是:

■ 实体:用矩形表示,矩形框内写明实体名;

■ 属性:用椭圆形表示,并用无向边将其与相应的实体连接起来;

■ 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n、m:n)。

以班级、课程与学生为例,E-R图如图1-4所示。

由矩形、椭圆形、菱形以及按一定要求相互连接无向线构成了一个完整的E-R图。用E-R图表示的概念模型独立于具体的DBMS所支持的数据模型,它是各种数据模型的共同基础,因而比数据模型更一般、更抽象、更接近现实世界。图1-4 班级、课程与学生E-R图示例

在概念上,概念模型中的实体、属性与联系是3个有明显区别的不同概念。但是在分析客观世界的具体事物时,对某个具体数据对象,究竟它是实体还是属性或联系,则是相对的,所做的分析设计与实际应用的背景以及设计人员的理解有关。这是工程实践中构造E-R图的难点之一。1.2.2 逻辑数据模型

当前流行的逻辑数据模型有4种,即层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relational Model)和面向对象模型(Object Oriented Model)。它们的区别在于记录之间联系的表示方式不同。其中,关系模型是目前应用最为广泛的数据模型,目前绝大多数数据库管理系统的数据模型都是关系模型。

1.层次模型

层次模型是数据库系统中最早使用的模型,它的数据结构类似一棵倒置的树,每个节点表示一个记录类型,记录之间的联系是一对多的联系,基本特征是:

■ 一定有且只有一个位于树根的节点,称为根节点;

■ 一个节点下面可以没有节点,即向下没有分支,那么该节点称为“叶节点”;

■ 一个节点可以有一个或多个节点,前者称为“父节点”,后者称为“子节点”;

■ 同一父节点的子节点称为“兄弟节点”;

■ 除根节点外,其他任何节点有且只有一个父节点。

层次模型示例如图1-5所示。

层次模型中,每个记录类型可以包含多个字段,不同记录类型之间、同一记录类型的不同字段之间不能同名,如果要存取某一类型的记录,就要从根节点开始,按照树的层次逐层向下查找,查找路径就是存取路径,如图1-6所示。图1-5 层次模型示例图1-6 层次模型

层次模型结构简单,容易实现,对于某些特定的应用系统效率很高,但如果需要动态访问数据(如增加或修改记录类型),效率并不高。另外,对于一些非层次性结构(如多对多联系),层次模型表达起来比较烦琐而且不直观。

2.网状模型

网状模型可以看作是层次模型的一种扩展。它采用网状结构表示实体及其之间的联系。网状结构的每一个节点代表一个记录类型,记录类型可包含若干字段,联系用链接指针表示,去掉了层次模型的限制。网状模型的特征是:

■ 允许一个以上的节点没有父节点;

■ 一个节点可以有多于一个的父节点。

例如,图1-7(a)和图1-7(b)都是网状模型的例子。图1-7(a)中节点3有两个父节点,即节点1和节点2;图1-7(b)中节点4有两个父节点,即节点1和节点2。图1-7 网状模型的几个例子

由于网状模型比较复杂,一般实际的网状数据库管理系统对网状都有一些具体的限制。在使用网状数据库时有时候需要一些转换。例如如图1-8所示的网状模型。

网状模型与层次模型相比,提供了更大的灵活性,能更直接地描述现实世界,性能和效率也比较好。网状模型的缺点是结构复杂,用户不易掌握,记录类型联系变动后涉及链接指针的调整,扩充和维护都比较复杂。图1-8 转换后的学生、课程和选课的网状模型

3.关系模型

关系模型是目前应用最多、也最为重要的一种数据模型。关系模型建立在严格的数学概念基础上,采用二维表格结构来表示实体和实体之间的联系,二维表由行和列组成。下面以教师信息表和课程表为例,说明关系模型中的一些常用术语,如表1-2和表1-3所示。表1-2 教师信息表(表名为:tea_info)表1-3 课程表(表名为:cur_info)

■ 关系(或表):一个关系就是一个表,如上面的教师信息表和课程表;

■ 元组:表中的一行为一个元组(不包括表头);

■ 属性:表中的一列为一个属性;

■ 主码(或关键字):可以唯一确定一个元组和其他元组不同的属性组;

■ 域:属性的取值范围;

■ 分量:元组中的一个属性值;

■ 关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,……,属性n);

关系模型的基本特征是:

■ 建立在关系数据理论之上,有可靠的数据基础;

■ 可以描述一对一、一对多和多对多的联系;

■ 表示的一致性,实体本身和实体间联系都使用关系描述;

■ 关系的每个分量的不可分性,也就是不允许表中表。

关系模型概念清晰、结构简单,实体、实体联系和查询结果都采用关系表示,用户比较容易理解。另外,关系模型的存取路径对用户是透明的,程序员不用关心具体的存取过程,减轻了程序员的工作负担,具有较好的数据独立性和安全保密性。

关系模型也有一些缺点,在某些实际应用中,关系模型的查询效率有时不如层次和网状模型。为了提高查询的效率,有时需要对查询进行一些特别的优化。

4.面向对象模型

面向对象模型是采用面向对象的观点来描述现实世界中实体及其联系的模型,现实世界中的实体都被抽象为对象,同类对象的共同属性和方法被抽象为类。面向对象模型有如下的常用术语。

■ 对象

对象是现实世界中某个实体的模型化。每个对象都有一个唯一标识符,称为“对象标识”(Object Identity)。图1-9中,学生对象的对象标识为学号“120021”。对象还包括属性集合(描述对象的状态、组成和特征)、方法集合(描述对象的行为特征和实现)和消息集合(对象操作请求的传递)。图1-9 一个学生对象

■ 类

类是具有相同结构对象的集合。类是一个抽象的概念,对象是类的实例,如图1-10所示,李勇和小梅是学生类的具体实例。图1-10 类和对象的关系

■ 封装

封装是一种面向对象的技术,通过封装可以把对象的某些实现与外界隔离,这样一方面可以使外部的应用简化,不用关心具体的实现;另一方面提高数据的独立性,内部的修改不会影响到外部的应用,提高了数据的独立性,如图1-11所示。

■ 继承

面向对象模型的一个特色是可以实现继承。在现实世界中,有许多事物具有密切相关的层次关系。面向对象模型提供了建立类结构层次的功能,可以定义一个类的子类,形成树形结构,如图1-12所示。

图1-11 对象封装示意图

图1-12 类的继承

面向对象模型是一种接近现实世界、很自然的模型,可以定义复杂数据关系。由于具有继承特性,面向对象模型提供了快速创建各种变种记录类型的能力。面向对象模型的缺点是查询功能相对比较弱。1.3 关系模型理论

网状数据库和层次数据库已经很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。而后来出现的关系数据库较好地解决了这些问题。关系数据库理论出现于60年代末到70年代初。1970年,IBM的研究员埃德加·考特(Edgar Frank Codd)博士的著名论文《大型共享数据库数据的关系模型》(A Relational Model of Data for Large Shared Data Banks)一文提出了关系模型的概念。后来考特又陆续发表多篇文章,奠定了关系数据库的基础。关系模型有严格的数学基础,抽象级别比较高,而且简单清晰,便于理解和使用。但是当时也有人认为关系模型是理想化的数据模型,用来实现DBMS是不现实的,尤其担心关系数据库的性能难以接受,更有人视其为当时正在进行中的网状数据库规范化工作的严重威胁。为了促进对问题的理解,1974年ACM牵头组织了一次研讨会,会上开展了一场分别以考特和Bachman为首的支持和反对关系数据库两派之间的辩论。这次著名的辩论推动了关系数据库的发展,使其最终成为现代数据库产品的主流。

关系数据库系统是支持关系模型的数据库系统。关系数据库系统与非关系数据库系统的区别是:关系数据库系统只有“表”这一种结构,而非关系数据库系统还有其他数据结构。

关系模型由关系数据结构、关系操作集合和关系完整性约束3部分组成。

1.单一的数据结构——关系

关系模型的数据结构是单一的。

在现实世界中各事物与事物之间的各种联系均可使用关系来表示,也就是说,关系不仅表示数据的存储,其中也包含着数据之间的联系。

从用户角度来看,关系模型中数据的逻辑结构是一张二维表。

2.关系操作集合

关系操作采用集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为“一次一集合”的方式。关系模型中常用的关系操作包括如下两类。

■ 查询操作,包括选择(select)、投影(projection)、连接(join)、除(divide)、并(union)、交(intersection)、差(difference)等。

■ 增(insert)、删(delete)、改(update)操作。

表达(或描述)关系操作的关系数据语言可以分为3类,如表1-4所示。表1-4 关系操作的关系数据语言分类表

■ 关系代数

关系代数是用关系的运算来表达查询要求的方式。

■ 关系演算

关系演算是用谓词来表达查询要求的方式。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。关系代数、元组关系演算和域关系演算3种语言在表达能力上是完全等价的。

关系代数、元组关系演算和域关系演算均是抽象的查询语言,这些抽象的语言与具体的DBMS中实现的实际语言并不完全一样,但它们能用作评估实际系统中查询语言能力的标准或基础。

■ 介于关系代数和关系演算之间的语言SQL(Structured Query Language)

SQL不仅具有丰富的查询功能,而且具有数据定义和数据控制功能,是集查询、DDL、DML和DCL于一体的关系数据语言。它充分体现了关系数据语言的特点和优点,是关系数据库的标准语言。

3.关系的3类完整性约束

关系模型允许定义3类完整性约束:实体完整性、参照完整性和用户定义的完整性约束。其中实体完整性约束和参照完整性约束是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。1.3.1 关系

1.域(Domain)

域是一组具有相同数据类型的值的集合。

例如,自然数、整数、介于0~100之间的整数,甚至长度在1~10之间的字符串等,都可以看作是域。

2.笛卡儿积(Cartesian Product)

给定一组域D,D,…,D,这些域中可以有相同的。D,D,…,D的12n12n笛卡儿积为:

D×D×…×D={(d,d,…,d)|d∈D,i=1,2,…,n}12n12nii

其中,每一个元素(d,d,…d)叫作一个n元组(N-Tuple)或12n简称元组(Tuple);元素中的每一个值d叫作一个分量i(Component)。

若D(i=1,2,…,n)为有限集,其基数(Cardinal Number)为im(i=1,2,…,n),则D×D×…×D的基数M为:i12n

笛卡儿积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。例如给出3个域:

则D、D、D的笛卡儿积为:123

其中(刘金涛,应用物理专业,费菲)等都是元组,刘金涛、应用物理专业、费菲等都是分量。

该笛卡儿积的基数为2×2×3=12,也就是说,D×D×D一共有2×1232×3=12个元组,这12个元组可列成一张二维表,如表1-5所示。

3.关系(Relation)

D×D×…×D的子集叫作在域D,D,…,D上的关系,表示为12n12nR(D,D,…,D)。12n

其中:

■ R表示关系的名字;

■ n是关系的目或度(Degree),当n=l时,称该关系为一元关系(Unary Relation),当n=2时,称该关系为二元关系(Binary Relation);

■ 关系中的每个元素是关系中的元组,通常用t表示。表1-5 D,D,D的笛卡儿积123

关系是笛卡儿积的有限子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须为每列起一个名字,称为“属性”(Attribute)。n目关系必有n个属性。

若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate Key)。

若一个关系有多个候选码,则选定其中一个为主码(Primary Key)。主码的诸属性称为“主属性”(Prime Attribute)。不包含在任何侯选码中的属性称为“非码属性”(Non-key Attribute)。在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为“全码”(All-key)。

例如,可以在表1-5的笛卡儿积中取出一个子集来构造一个关系。由于一名硕士研究生只师从于一位导师,学习某一个专业,所以笛卡儿积中的许多元组是无实际意义的,从中取出有实际意义的元组来构造关系。该关系的名字为SAP,属性名就取域名,即TEACHER,MAJOR和MASTER。则这个关系可以表示为:

假设导师与专业是一对一的,即一位导师只有一个专业;导师与硕士研究生是一对多的,即一位导师可以带多名硕士研究生,而一名硕士研究生只有一位导师。这样SAP关系可以包含3个元组,如表1-6所示。表1-6 SAP关系续表

假设研究生不会重名,则MASTER属性的每一个值都唯一地标识了一个元组,因此可以作为SAP关系的主码。

关系可以有3种类型:基本关系(通常又称为“基本表或基表”)、查询表和视图表。基本表是实际存在的表,它是实际存储数据的逻辑表示。查询表是查询结果对应的表。视图表是由基本表或其他视图表导出的表,不对应实际存储的数据。

关系可以是一个无限集合。由于笛卡儿积不满足交换律,所以按照数学定义(d1,d2,…,dn)≠(d2,d1,…,dn)。当关系作为关系数据模型的数据结构时,需要给予如下的限定和扩充。

■ 无限关系在数据库系统中是无意义的。因此,限定关系数据模型中的关系必须是有限集合。

■ 通过为关系的每列附加一个属性名的方法取消关系元组的有序性,即(d,d,…,d,d,…,d)=(d,d,…,d,d,…,12ijn12jid)(i,j=l,2,…,n)。n

因此,基本关系具有以下6条性质。

■ 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域;

■ 不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。

例如,在上面的例子中,也可以只给出两个域,如下所示。

SAP关系的导师属性和研究生属性都从PERSON域中取值。为了避免混淆,必须给这两个属性取不同的属性名,而不能直接使用域名。例如定义导师属性名为TEACHER-PERSON(或TEACHER),硕士研究生属性名为MASTER-PERSON(或MASTER)。

■ 列的顺序无所谓,即列的次序可以任意交换。

由于列顺序是无关紧要的,因此在许多实际关系数据库产品中(如Oracle)增加新属性时,永远是插至最后一列。

■ 任意两个元组不能完全相同。

■ 行的顺序无所谓,即行的次序可以任意交换。

■ 分量必须取原子值,即每一个分量都必须是不可分的数据项。

关系模型要求关系必须是规范化的,即要求关系模式必须满足一定的规范条件。这些规范条件中最基本的一条就是关系的每一个分量必须是一个不可分的数据项。规范化的关系简称为“范式”(Normal Form)。例如,表1-7虽然很好地表达了导师与硕士研究生之间的一对多关系,但由于MASTER分量取了两个值,不符合规范化的要求,因此这样的关系在数据库中是不允许的。表1-7 非规范化关系1.3.2 关系模式

在数据库中要区分型和值。关系数据库中,关系模式是型,关系是值。关系模型是1970年由E.F.Codd提出的。与层次、网状模型相比,它有以下特点。

■ 数据结构简单——二维表格;

■ 扎实的理论基础(关系运算理论、关系模式设计理论)。

关系模式是对关系的描述,那么如何对一个关系进行描述呢?

首先,应该知道,关系实质上是一张二维表,表的每一行为一个元组,每一列为一个属性。一个元组就是该关系所涉及的属性集的笛卡儿积的一个元素。关系是元组的集合,因此关系模式必须指出这个元组集合的结构,即它由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映像关系。

其次,一个关系通常是由赋予它的元组语义来确定的。元组语义实质上是一个n目谓词(n是属性集中属性的个数)。凡使该n目谓词为真的笛卡儿积中的元素的全体就构成了该关系模式的关系。

现实中的事物都是随着时间在不断变化的,因此在不同的时刻,关系模式的关系也会有所变化。但是,现实中的许多已有事实限定了关系模式所有可能的关系必须满足一定的完整性约束条件。这些约束或者通过对属性取值范围的限定,例如,职工年龄小于60岁(60岁以后必须退休),或者通过属性值间的相互关联反映出来。关系模式应当描绘出这些完整性约束条件。因此一个关系模式应当是一个5元组。

关系的描述称为“关系模式”(Relation Schema)。它可以形式化地表示为:

R(U,D,dom,F)

其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映像集合,F为属性间数据的依赖关系集合。

本章中关系模式仅涉及关系名、各属性名、域名、属性向域的映像等4部分。

例如,在上面的例子中,由于导师和研究生皆出自“人”这同一个域,所以要取不同的属性名,并在模式中定义属性向域的映像,即说明它们分别出自哪个域,如:

关系模式通常可以简记为:

R(U)或R(A,A,…,A)12n

其中R为关系名,A,A,…,A为属性名。而域名及属性向域的映12n像常常直接说明为属性的类型、长度。

关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际中,人们常常把关系模式和关系都称为“关系”,这不难从上下文中加以区别。1.3.3 关系的完整性

关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有3类完整性约束:实体完整性、参照完整性和用户定义的完整性。

1.实体完整性(Entity Integrity)

实体完整性规则 若属性A是基本关系R的主属性,则属性A不能取空值。

例如,在关系“SAP(MANAGER,DEPARTMENT,EMPLOYEENAME)”中,雇员姓名“EMPLOYEENAME”属性为主码(假设雇员不会重名),那么雇员姓名不能取空值。

实体完整性规则规定基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。例如网上商店中的订单关系“订单(订单号,用户号,折扣率)”中,“订单号、用户号”为主码,则“订单号”和“用户号”两个属性都不能取空值。

对于实体完整性规则具体说明如下。

■ 现实世界中的实体是可区分的,即它们具有某种唯一性标识。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载