Access数据库与VBA面向对象程序设计(txt+pdf+epub+mobi电子书下载)


发布时间:2020-11-01 12:34:04

点击下载

作者:黎升洪

出版社:中国铁道出版社

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

Access数据库与VBA面向对象程序设计

Access数据库与VBA面向对象程序设计试读:

前言

大数据时代数据存储的核心技术是关系数据库。这对财经管理类专业学生掌握关系数据库的核心概念和工作原理以及结构化和面向对象编程等知识提出了更高要求。Access作为桌面级数据库是一种易用的关系数据库系统,它具有实体完整性和参照完整性等大型数据库具备的特性。VBA作为Access的自动化编程语言具有简单易学的特性,同时具备当前面向对象程序设计语言的图形化界面、事件驱动等面向对象特性,非常适合财经管理类专业与非计算机专业学生学习关系数据库知识。Access 2010将关系数据库管理知识、结构化程序设计和面向对象程序设计有机结合,提供了开发简单信息系统所需要的所有功能。Access的这些特点使其具有使用简单、起点低等特性,是目前流行的关系数据库,也是全国计算机等级考试的可选内容之一。《Access数据库与VBA面向对象程序设计》的编写围绕教育部高等学校文科计算机基础教学指导委员会制定的《高等学校文科类专业大学计算机教学基本要求(2011年版)》,吸纳当今计算机学科发展中出现的新技术、新成果,强调理论与应用相结合,注意合理取材和安排,力求重点突出、概念清晰、讲究实效,注重培养学生掌握计算机的基础知识、基本概念和基本操作技能,使学生具有能够应用计算机进行学习、工作以及解决实际问题的能力。本书的主要特色如下:(1)以学生熟悉的教学管理系统为背景介绍数据库各种相关知识,同时以图书馆管理系统为背景来设置相应的练习,好处是易于理解。(2)数据库概念部分详细介绍数据库完整性约束思想,通过数据库完整性约束的主键和外键约束,使数据库模式具备数据判定功能,避免垃圾数据进入数据库。(3)如同地图使用和地图绘制知识是分离的一样,数据库关系模式设计与关系数据库记录的查询、更新、插入、删除等知识也是分离的。数据库关系模式设计需要数据库范式理论知识,通过数据库模式设计,可以定义一个关系数据表。而关系数据库记录的查询、更新、插入、删除等操作是最常见的关系数据库操作。本书将弱化前者,强化后者。这样安排的目的是:使非计算机类专业的学生在具备正确数据库概念的基础上,集中精力更好地掌握关系数据库的操作和使用。(4)抽象了面向对象程序设计思想框架,以便于学生自主学习面向对象程序设计示例。基于面向对象系统观认为系统由对象和对象间交互构成。具体说,描述和构造一个系统过程为三步:

①刻画该系统中的各个核心概念——类和它具有的属性和方法(或事件)。

②将类实例化为对象。对于初次涉及面向对象编程的用户,为简化问题,通常不涉及编写自己的类代码,仅需将系统提供的类实例化为对象。

③在所有控件已经命名的基础上,描述这些对象间的交互,即这些对象间的消息关系。

因此,基于这三步,编写图形化窗体程序时的步骤可概括为:

①设计窗体界面的过程,就是实例化各种控件对象。

②编写事件过程,就是实现对象间交互。

这样做的好处是:使读者能从较高层面理解基于图形化界面的面向对象程序设计思想,避免只见树木、不见森林的情况,也不会被Access对象模型中多个对象、多个属性、多个事件(或方法)困扰。面向对象编程的重点是理解VBA对象属性和方法(或事件)的引用方式,而某个属性、事件或方法的具体功能可通过翻阅书籍或联机帮助了解。这样有助于学生的模仿和理解,进而编写自己的图形化界面代码。总之,在事件触发的图形化界面程序设计中,其宏观层面是面向对象程序设计思想,但微观层面是结构化程序设计思想。

为便于学生自学,本书附录中给出了VBA函数一览表和VBA语言简明手册等实用内容,并附有索引。本书给出了每章例子的(程序)源码,并为教师提供电子课件,可从中国铁道出版社网站下载。

本书内容涵盖以下三部分:(1)关系数据库基础知识,包括数据库基本概念、数据库角色、主键(外键)和数据库实体(参照)完整性等内容。(2)结构化编程知识,包括数据类型、常量、变量、函数、表达式和三种基本控制结构等内容。(3)面向对象程序设计知识,包括面向对象核心概念、面向对象编程的基本步骤、Access对象模型、Access控件(窗体)属性和方法(或事件)调用方式、DAO数据库编程对象模型等内容。

32课时授课,32课时上机的参考课时安排如下:第1章(2授课,0上机);第2章(0授课,2上机);第3章(8授课,8上机);第4章(0授课,2上机);第5章(选讲);第6章(2授课,2上机);第7章(8授课,8上机);第8章(4授课,2上机);第9章(6授课,8上机);机动课时(2授课,0上机)。

本教程由黎升洪编著,万常选主审。万常选教授对本书初稿进行了认真审阅,提出了许多宝贵意见和建议。此外,郭勇博士和刘谦副教授为本教程提供了资料,徐升华、吴京慧教授和毛小兵院长对本书编写给予了许多帮助,在此表示衷心的感谢。

虽然本书是关于Access和VBA的教材,但在编写过程中,力图反映大型数据库和面向对象语言具备的特性,力求反映数据库新技术,以保持其先进性和实用性。由于编者水平有限,疏漏和不足之处在所难免,恳请同行专家和广大读者批评指正。联系邮件lee.shenghong@gmail.com。

编者2016年7月第1章数据库系统概述

计算机已成为信息社会人们日常工作中处理数据的得力助手和工具,渗透到人们生活和工作中的各个领域。数据处理、科学计算、过程控制和辅助设计是计算机四大应用。数据处理的主要技术是数据库技术。本章讲解数据库技术的基本知识和概念,重点是关系数据库、数据完整性和数据库模式的概念。1.1数据库技术

信息社会中,信息是一种资源。对企业来说,各种必需的信息是其赖以生存和发展的基石;对一个国家来说,信息决定其如何建设和发展;对一个人来说,信息是其决定如何发展才能适应社会的基本要素。信息是维持生产活动、经济活动和社会活动必不可少的基本资源,它是有价值的,是构成客观世界的三大要素(信息、能源和材料)之一。因此,人们为了获取有价值的信息用于决策,就需要对信息和用于表示信息的数据进行处理和管理。人们用计算机对数据进行处理的应用系统称为计算机信息系统,而计算机信息系统的核心是数据库。1.1.1 信息与数据

信息和数据是数据处理中的两个核心概念。在一些不是很严格的场合下,对它们没有做严格的区分,甚至当作同义词来使用。这里, 数据 是记录现实世界中各种信息并可以识别的物理符号,是信息的载体,是信息的具体表现形式。数据的表示形式不仅仅只是数字,还包括字符(文字和符号)、图表(图形、图像和表格)及声音(视频)等形式。数据以某种特定格式来表示事实和概念,这种形式有助于通信、解释和处理。数据有两方面的特征:一是客体属性的反映,这是数据的内容;二是记录信息的符号,这是数据的形式。

信息 是数据所包含的意义。信息具有如下重要特征:(1)信息具有表征性。它能够表达事物的属性、运动特性及状态。(2)信息具有可传播性。信息可以进行获取、存储、传递、共享。(3)信息具有可处理性。信息可以进行压缩、加工、再生。(4)信息具有可用性、可增值性、可替代性。

数据与信息是密切关联的。信息是向人们提供有关现实事物的知识,数据则是承载信息的物理符号,二者是不可分离而又有一定区别的两个相关的概念。信息可以用不同形式的数据来表示,也不随它的数据形式不同而改变。例如,张平同学的高考成绩总分为630分。这里符号630就是数据;630解释为高考成绩总分,表示的是630的含义,即信息。

总之,数据形式是信息内容的表现方式,信息内容是数据形式的实质,即“数据是信息的载体,信息是数据的内涵”。1.1.2 数据处理

要使获得的信息能够充分地发挥作用,就必须对其进行处理,这种处理称为数据处理。 数据处理 是指利用计算机对各种形式的数据进行一系列的存储、加工、计算、分类、检索、传输等处理。如果稍加扩展就包括数据的采集、整理、编码、输入和输出等数据组织,数据组织过程也应属于数据处理的内容,只不过数据组织过程主要是由人对其进行有效的处理,并把数据组织到计算机中。1.1.3 数据库系统

下面介绍数据库系统的相关知识。

1.数据库的概念

在日常工作中,需要处理的数据量往往很大,为便于计算机对其进行有效的处理,可以将采集的数据存放在建立于磁盘、光盘等外存媒介的“仓库”中,这个“仓库”就是 数据库 (DataBase,DB)。数据集中存放在数据库中,便于对其进行处理,提炼出对决策有用的数据和信息。这就如同一个学校采购大量的图书存放在图书馆(书库),供学生借阅。因此,数据库就是在计算机外部存储器中存储的数据仓库。

与书库需要管理员和一套管理制度一样,数据库的管理也需要一个管理系统,这个管理系统就称为 数据库管理系统 (DataBase Management System,DBMS)。以数据库为核心,并对其进行管理的计算机系统称为 数据库系统 (DataBase System,DBS)。那么,什么是数据库呢?数据库是一个复杂的系统,给它下一个确切的定义是困难的,目前还没有一个公认的、统一的定义。

但对一个特定数据库来说,它是集中、统一地保存、管理着某一单位或某一领域内所有有用信息的系统,这个系统根据数据间的自然联系结构而成,数据较少冗余,且具有较高的数据独立性,能为多种应用服务。

2.数据库的发展

数据管理的发展经历了人工管理、文件系统到数据库系统三个阶段。

在人工管理阶段,由于没有软件系统对数据进行管理和计算机硬件的限制,数据的管理是靠人工进行的,而计算机只能对数据进行计算。当时对数据处理的过程是:先将程序和数据输入计算机,计算机运行结束后,将结果再输出,由人工保存,计算机并不存储数据。

20世纪50年代后期到60年代中期,由于计算机外存得到发展,软件又有了操作系统,对数据管理产生了文件系统。在文件系统阶段,是按照数据文件的形式来存放数据的,在一个文件中包含若干“记录”,一个记录又包含若干“数据项”,用户通过对文件的访问实现对记录的存取。这种数据管理方式称为文件管理系统。文件管理系统的一个致命的不足是:数据的管理没有实现结构化组织,数据与数据之间没有联系,文件与文件之间没有有机的联系,数据不能脱离建立其数据文件的程序,从而也使文件管理系统中的数据独立性和一致性差,冗余度大,限制了大量数据的共享和有效的应用。

20世纪60年代末期,随着计算机技术的发展,为了克服文件管理系统的缺点,人们对文件系统进行了扩充,研制了一种结构化的数据组织和处理方式,即数据库系统。数据库系统建立了数据与数据之间的有机联系,实现了统一、集中、独立地管理数据,使数据的存取独立于使用数据的程序,实现了数据的共享。从20世纪90年代至今,数据库技术得到飞速的发展。

3.数据库的特征

作为信息管理中的核心技术,数据库技术在计算机应用中得到迅速的发展,目前已经成为信息管理的最新、最重要的技术。数据库有以下明显特点:(1)数据结构化。数据库中的数据不再像文件系统中的数据那样从属特定的应用,而是按照某种数据模型组织成为一个结构化的数据整体。它不仅描述了数据本身的特性,而且描述了数据与数据之间的种种联系,这使数据库具备了复杂的内部组织结构。(2)实现数据共享。这是数据库技术先进性的重要体现。由于数据库中的数据实现了按某种数据模型组织为一个结构化的数据,实现了多个应用程序、多种语言及多个用户能够共享一个库中的数据,甚至在一个单位或更大的范围内共享,大大提高了数据的利用率,提高了工作效率。(3)减少数据冗余度。在数据库技术之前,许多应用系统都需要建立各自的数据文件,即使相同的数据也都需要在各自的系统中保留,造成大量的数据重复存储,这一现象称为数据的冗余。由于数据库实现了数据共享,减少了存储数据的重复,节省了存储空间,减少了数据冗余。(4)数据独立性。数据库技术中的数据与操作这些数据的应用程序相互独立,互不依赖,不因一方的改变而改变另一方,这大大简化了应用程序设计与维护的工作量,同时数据也不会随应用程序的结束而消失,可长期保留在计算机系统中。(5)统一的数据安全保护。数据共享在提供了多个用户共享数据资源的同时,还需解决数据的安全性、一致性和并发性问题。这里安全性是指只有合法授权的用户才能对数据进行操作;一致性是指当多个用户对同一数据操作时不能互相干扰,从而出现操作结果不确定或不一致的情况;在保证一致性的前提下,数据库系统提供并发功能,使多用户同时对数据库的操作有一致的正确结果。

4.数据库的角色

数据库的系统结构及角色如图1-1所示。

图1-1 数据库系统结构及角色

由内至外,一个数据库系统角色及其负责功能如下:(1)数据库软件开发商负责数据库软件开发工作,其编程基础是操作系统提供的各种功能,开发的软件称为数据库管理系统。数据库管理系统功能是完成对数据定义、描述、操作、维护等功能(例如,SQL语句功能的实现),接受并完成用户程序及终端命令对数据库的不同请求,并负责保护数据免受各种干扰和破坏。数据库软件的核心是数据库管理系统。(2) 数据库管理员 (DataBase Administrator,DBA)负责应用程序的开发工作。应用程序通常是图形化界面的程序,它封装了数据库操作知识,使得没有数据库知识的普通用户也能够使用数据库操作、存储数据。数据库管理员必须理解数据库管理系统提供的各种功能(如SQL语句编写和图形化面向对象编程知识)。数据库管理员负责数据库的设计、建立、执行和维护,以及应用程序开发。(3)普通用户负责日常事务处理软件的操作。普通用户只要会操作图形化用户界面(Graphic User Interface,GUI)的程序即可,不需要理解数据库的SQL和编程等知识。因为图形化用户接口将普通用户对界面的操作最终转换为相应的SQL语句等有数据库管理系统提供的功能。

本书介绍成为关系数据库管理员所必须具备的基础知识。1.2数据模型

提到模型人们自然会联想到建筑模型、飞机模型等事物。广义地说,模型是现实世界特征的模拟和抽象。在数据库中,用数据模型(Data Model)这个工具来对现实世界进行抽象。 数据模型 是数据库系统中用于提供信息表示和操作手段的形式构架。数据模型应满足三方面要求:一是能比较真实地模拟现实世界;二是容易为人所理解;三是便于在计算机上实现。数据模型要很好地满足这三方面的要求在目前尚很困难。

在数据库系统中针对不同的使用对象和应用目的,采用不同的数据模型。不同的数据模型是提供给人们模型化数据和信息的不同工具。根据模型应用的目的,可以将数据模型分为两种类型:第一类模型是 概念模型 ,也称信息模型,它是独立于计算机之外的模型,如实体—联系模型,这种模型不涉及信息在计算机中如何表示,而是用来描述某一特定范围内人们所关心的信息结构,它是按用户的观点来对数据和信息建模,主要用于数据库设计;另一类模型是数据模型,它是直接面向计算机的,是按计算机系统的观点对数据进行建模,主要用于DBMS的实现,常称为 基本数据模型 ,数据库中常用的基本数据模型有网状模型、层次模型和关系模型。

数据模型是数据库系统的核心和基础。各种机器上实现的DBMS软件都是基于某种数据模型的。

图1-2显示了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型的过程。过程包括:(1)将现实世界经过信息抽象变成信息模型(也称概念模型)。(2)信息模型(概念模型)经过数据抽象编程计算机实现。

这里,信息模型使用实体—联系模型描述,计算机实现使用数据模型表示。

图1-2 数据抽象过程1.2.1 数据模型的三要素

数据模型是现实世界中的各种事物及其间的联系用数据和数据间的联系来表示的一种方法。一般地讲,数据模型是严格定义的概念的集合,这些概念精确地描述系统的静态特性、动态特性和完整性约束条件。因此,数据模型通常由数据结构、数据操作和完整性约束三部分组成。

1.数据结构

数据结构是所研究对象和对象具有的特性、对象间的联系的集合,它是对数据静态特性的描述。这些对象是数据库的组成部分。如网状模型中的数据项、记录、系型,关系模型中的域、属性、关系等。

在数据库系统中,通常按照数据结构的类型来命名数据模型,如层次结构、网状结构和关系结构的模型分别命名为层次模型、网状模型和关系模型。

2.数据操作

数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。通常对数据库的操作有检索和更新(包括插入、删除和修改)两大类,这些操作反映了数据的动态特性。现实世界中的实体及实体间的联系是在不断变化的,数据模型应能反映出这种变化。

3.数据的约束条件

数据的约束条件是完整性规则的集合。完整性规则是给定的数据模型中数据及其联系必须满足给定要求。例如,年龄的数据取值一般不能大于150岁。1.2.2 概念模型与实体—联系方法

由图1-2可以看出,信息模型(概念模型)实际上是现实世界到机器世界的一个中间层次。

概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言,因此,概念模型一方面应该具有较强的表达能力,能够方便、直接地表达不同应用中的各种实际知识,另一方面它还应该简单、清晰,易于用户理解。

1.信息世界中的基本概念

信息世界涉及的概念主要有:

l)实体(Entity)

客观存在并可相互区别的事物称为 实体 。实体可以是具体的人、事、物,也可以是抽象的概念或联系,例如,一个具体学生、一门具体的课程等都是实体。

2)实体集(Entity Set)

性质相同的同类实体的集合称为 实体集 ,也称实体整体,如所有的(全体)学生、所有的汽车、所有的学校、所有的课程、所有的零件都称为实体集。

3)实体型(Entity Type)

具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名的集合来抽象和刻画同类实体,称为 实体型 。例如,学生(学号,姓名,性别,出生年份,系,入学时间)就是一个实体型。

4)属性(Attribute)

实体所具有的某一特性称为 属性 。一个实体可以由若干属性来刻画。例如,学生实体可以由学号、姓名、性别、出生年份、系、入学时间等属性组成。属性有“型”和“值”的区分,如学生实体属性的名称(姓名、性别、年龄等)是属性的型,而属性的值是其型的具体内容,如王源、男、18分别是姓名、性别、年龄的值。由此可以看到,事物的若干属性值的集合可表征一个实体,而若干属性型所组成的集合可表征一个实体的类型,简称“实体型”。同类型的实体集合组成实体集。

5)关键字(Key)

能唯一标识实体的属性或属性集称为 关键字 (或码)。例如,学号是学生实体的关键字(码)。本书将混用关键字和码这两个概念。

6)域(Domain)

属性的取值范围称为该属性的 域 。例如,学号的域为8位数字符号,年龄的域为小于128的整数,性别的域为(男,女)。

7)联系(Relationship)

在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系。实体之间的联系通常是指不同实体集之间的联系。

两个实体型之间的联系可以分为三类:

1)一对一的联系(1:l)

如果实体集A中的一个实体至多与实体集B中的一个实体相对应(相联系),反之亦然,则称实体集A与实体集B的联系为一对一的联系。如一个学校只能有一个校长,一个校长也只能在一个学校任职,则学校与校长的联系即为一对一的联系,还有班长与班、学生与座位之间也都是一对一的联系。

2)一对多联系(1:n)

如果实体集A中的一个实体与实体集B中的多个实体相对应(相联系),反之,实体集B中的一个实体至多与实体集A中的一个实体相对应(相联系),则称实体集A与实体集B的联系为一对多的联系。如一个班级可以有多个学生,而一个学生只会有一个班级,班级与学生的联系即为一对多的联系。

3)多对多联系(m:n)

如果实体集A中的一个实体与实体集B中的多个实体相对应(相联系),而实体集B中的一个实体也与实体集A中的多个实体相对应(相联系),则称实体集A与实体集B的联系为多对多的联系。如一门课程可以有多个学生选修,而一个学生同时可以选修多门课程,课程与学生的联系即为多对多的联系。

实际上,一对一联系是一对多联系的特例,而一对多联系又是多对多联系的特例。可以用图形来表示两个实体型之间的这三类联系。

2.概念模型的表示方法

为了在信息世界中简洁、清晰地描述现实世界的实体模型,通常使用实体—联系图(E-R图)描述。E-R图是P.P.S.Chen于1976年提出的 实体—联系模型(E-R模型) (Entity-Relationship Model)。E-R图提供了实体、属性与联系的方法,其图元符号如图1-3所示。在E-R图中,实体集用矩形框表示,并在矩形框里写上实体名。属性用椭圆框表示,并在椭圆框里写上属性名。联系用菱形框表示,并在菱形框里写上联系方式。

图1-3 E-R图图元符号

在图1-4中,分别是学校与校长(一对一)、班级与学生(一对多)、学生与课程(多对多)的E-R实体模型图。班级、学生和课程对应的E-R图如图1-5所示,由于实体班级、学生和课程属性太多,我们这里只画出部分属性,其中带下画线的属性表示对应实体的关键字。

图1-4 实体间的联系

图1-5 班级、学生和课程对应的E-R图(省略了部分属性)1.2.3 数据模型

目前,数据库领域中最常用的数据模型有四种,它们是层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relational Model)、面向对象模型(Object Oriented Model)。

关系模型是本章的重点,将在1.3节中加以介绍。

1.层次模型

层次模型 用树形结构来表示各类实体以及实体间的联系。现实世界中许多实体之间的联系本来就呈现出一种很自然的层次关系,如行政机构、家族关系等。

在层次模型中,每个结点表示一个记录类型,记录(类型)之间的联系用结点之间的连线(有向边)表示,这种联系是父子之间的一对多的联系。这就使得层次数据库系统只能处理一对多的实体联系。

每个记录类型可包含若干字段,这里,记录类型描述的是实体,字段描述的是实体的属性。各个记录类型及其字段都必须命名。各个记录类型、同一记录类型中各个字段不能同名。每个记录类型可以定义一个排序字段,也称码字段,如果定义该排序字段的值是唯一的,则它能唯一地标识一个记录值。图1-6所示为一个层次模型示例。

层次模型的优点主要有:(1)层次数据模型本身比较简单。(2)对于实体间联系是固定的,且预先定义好的应用系统,采用层次模型来实现,其性能优于关系模型,不低于网状模型。(3)层次数据模型提供了良好的完整性支持。

层次模型的缺点主要有:(1)现实世界中很多联系是非层次性的,如多对多联系、一个结点具有多个双亲等,层次模型表示这类联系的方法很笨拙,只能通过引入冗余数据(易产生不一致性)或创建非自然的数据组织(引入虚拟结点)来解决。(2)对插入和删除操作的限制比较多。(3)查询子女结点必须通过双亲结点。(4)由于结构严密,层次命令趋于程序化。

图1-6 一个层次模型示例

可见,用层次模型对具有一对多的层次关系的部门描述非常自然、直观。容易理解这是层次数据库的突出优点。

2.网状模型

与层次模型一样, 网状模型 中每个结点表示一个记录类型(实体),每个记录类型可包含若干字段(实体的属性),结点间的连线表示记录类型(实体)之间一对多的父子联系。

层次模型中子女结点与双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一。因此,要为每个联系命名,并指出与该联系有关的双亲记录和子女记录。两个结点之间有多种联系(称之为复合联系),因此网状模型可以更直接地描述现实世界。而层次模型实际上是网状模型的一个特例。图1-7所示为一个网状数据库模型。

图1-7 学生/选课/课程的网状数据库模式

网状数据模型的优点主要有:(1)能够更为直接地描述现实世界,如一个结点可以有多个双亲。(2)具有良好的性能,存取效率较高。

网状数据模型的缺点主要有:(1)结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握。(2)其数据定义语言(DDL)、数据操纵语言(DML)复杂,用户不容易使用。

由于记录之间联系是通过存取路径实现的,应用程序在访问数据时必须选择适当的存取路径,因此,用户必须了解系统结构的细节,加重了编写应用程序的负担。

3.面向对象模型

面向对象模型 中最基本的概念是对象(Object)和类(Class)。对象是现实世界实体的模型化,与关系模型中记录的概念相似,但要复杂得多。每个对象都有一个唯一的标识符,把对象的数据(属性的集合)和操作(程序)封装在一起。共享同一属性集合和方法集合的所有对象组合在一起,构成一个类。类的属性定义域可以是任意的类,因此类有嵌套结构。一个类从其类层次中的直接或间接祖先那里继承(Inherit)所有的属性和方法。这样,在已有类的基础上定义新的类时,只需定义特殊的属性和方法,而不必重复定义父类已有的东西,这有利于实现可扩充性。

面向对象模型不但继承了关系数据库的许多优良的性能,还能处理多媒体数据,并支持面向对象的程序设计。1.3关系数据库

作为当前数据库系统的主流模型,关系数据库有其许多独特特性。下面从关系概念、关系运算和完整性约束等方面介绍。1.3.1 关系模型

首先,给出关系模型的概念。

1.关系模型的基本概念

关系的含义是数据间的联系,例如,学号、姓名、性别、出生日期等组成有意义的学生信息。多条这样的有意义信息组成一个关系,基于这样方式组织信息的技术称为 关系数据模型 的数据库系统,简称关系数据库。现在使用的数据库管理系统通常是关系数据库管理系统。学习Access关系数据库系统,需要理解和掌握有关关系数据库的基本概念。图1-8是贯穿本书的教学管理数据库关系模型。

图1-8 教学管理数据库关系模型

1)关系

一个 关系 就是一张二维表,通常将一个没有重复行、重复列的二维表看成一个关系,每个关系都有一个关系名。

下面给出贯穿本书的五个关系组成的数据表,它们是“班级表”“学生表”“成绩表”“课程表”和“家庭成员表”(此表内容省略),如表1-1~表1-4所示。本书后面所有例子的数据实例与这里列出的相同。

表1-1 班级表

表1-2 学生表

续表

表1-3 成绩表

续表

表1-4 课程表

2)元组

二维表的每一行在关系中称为一个 元组 。在Access中,一个元组对应表中一条记录。

3)属性

二维表的每一列在关系中称为 属性 ,每个属性都有一个属性名,属性值则是各个元组属性的取值。在Access中,一个属性对应表中一个字段,属性名对应字段名,属性值对应于各个记录的字段值。

数据表操作涉及数据表各个字段的数据类型,一旦字段数据类型确定,则其具有的操作确定,其数据表示的范围确定。Access中,对“文本”数据类型的给出了文本长度描述,例如,“班号”文本字段的长度为10。对“数字”数据类型的则给出了整型、长整型、单精度和双精度等进一步的描述。例如,“入学成绩”为单精度类型,小数点后为2位。图1-9~图1-11分别给出了班级表、学生表、课程表和成绩表的字段名称和数据类型。

4)域

属性的取值范围称为 域 。域作为属性值的集合,其类型与范围由属性的性质及其所表示的意义具体确定。同一属性只能在相同域中取值。

5)关键字(Key)

关系中能唯一区分、确定不同元组的属性或属性组合,称为该关系的一个 关键字 。单个属性组成的关键字称为单关键字,多个属性组合的关键字称为组合关键字。需要强调的是,关键字的属性值不能取“空值”。所谓空值就是“不知道”或“不确定”的值,它无法唯一地区分、确定元组,因此关键字不能取空值。

图1-9 班级表字段名称和类型

图1-10 学生表字段名称和类型

图1-11 课程表和成绩表的字段名称和类型

学生表中,“学号”属性可以作为使用单个属性构成的关键字,因为学号不允许重复。而“姓名”及“出生日期”等则不能作为关键字,因为学生中可能出现重名或出生日期相同。

6)候选关键字

关系中能够成为关键字的属性或属性组合可能不是唯一的。凡在关系中能够唯一区分、确定不同元组的属性或属性组合均为 候选关键字 。

7)主关键字(Primary Key,PK)

在候选关键字中选定一个作为关键字,称为该关系的 主关键字 。关系中主关键字是唯一的。图1-8中所示的各表中小钥匙表示该表的主键。

8)外部关键字(Foreign Key,FK)

关系中某个属性或属性组合并非关键字,但却是另一个关系的主关键字,称此属性或属性组合为本关系的 外部关键字 。关系之间的联系是通过外部关键字实现的。例如,“学号”字段是“学生表”与“家庭成员表”联系字段,在“学生表”中是主关键字,但在“家庭成员表”中是外部关键字;同理,“班号”是“班级表”与“学生表”联系字段,它是“班级表”的主关键字,同时又是“学生表”的外部关键字。

思考: “学生表”与“成绩表”的联系字段是什么?指明两个表中的其主键和外键。“成绩表”与“课程表”的联系字段又是什么?指明两个表中的其主键和外键。

9)关系模式

对关系的描述称为 关系模式 ,其格式为:

关系既可以用二维表格来描述,也可以用数学形式的关系模式来描述。一个关系模式对应一个关系的结构。在Access中,也就是表的结构。

如学生表对应的关系模式可以表示为:

2.关系的基本特点

在关系模型中,关系具有以下基本特点:(1)关系必须规范化,属性不可再分割。规范化是指关系模型中每个关系模式都必须满足一定的要求,最基本的要求是关系必须是一张二维表,每个属性值必须是不可分割的最小数据单元,即表中不能再包含表。(2)在同一关系中不允许出现相同的属性名。(3)关系中不允许有完全相同的元组。(4)在同一关系中元组的次序无关紧要。也就是说,任意交换两行的位置并不影响数据的实际含义。(5)在同一关系中属性的次序无关紧要。任意交换两列的位置也并不影响数据的实际含义,不会改变关系模式。

以上是关系的基本性质,也是衡量一个二维表格是否构成关系的基本要素。在这些基本要素中,有一点是关键,即属性不可再分割,也即表中不能套表。

3.关系的运算

关系作为一张二维表,其可进行的 关系运算 包括选择、投影、自然连接。注意:关系运算的输入是一个或多个关系,其输出为一个关系。

1)选择运算

给定一个关系,从中筛选出满足某种条件的记录(或元组)的过程称为 选择 。如图1-12所示的选择运算是所有少数民族的学生。选择运算的结果是一个新的关系。

图1-12 学生表关系的选择与投影运算

2)投影运算

给定一个关系,从中只检索期望得到的字段(或属性)的过程称为 投影 。如图1-12所示的投影运算是从学生表得到只有三个字段(学号、姓名、入学成绩)的关系。同样投影运算的结果是一个新的关系。

3)自然连接运算

与选择、投影运算只需一个关系参与运算不同, 自然连接 运算(也称内连运算,Inner Join)要求两个关系参与运算,其结果为一个新的关系。参与自然连接运算的两个关系间有一个公共的属性(称为连接属性),在一个关系(称为一表)中它是主键,而在另一个关系(称为多表)中它是外键。这是自然连接运算必须的条件。如图1-8所示,“班级表”(一表)中主键是班号,而班号在“学生表”(多表)中是外键。自然连接运算的结果:在属性上是两个参与运算关系的属性叠加;在元组上是在多表元组的记录基础上,扩展连接属性相同时的一表对应的数据值。如图1-13所示,左侧深色部分表示在学生表基础上扩展的字段。

图1-13 班级表(一表)和学生表(多表)的自然连接运算

4.关系模型的优点

关系数据模型具有下列优点:(1)关系模型与非关系模型不同,它是建立在严格的数学概念的基础上的。(2)关系模型的概念单一,无论实体还是实体之间的联系都用关系表示。对数据的检索结果也是关系(即表),所以其数据结构简单、清晰,用户易懂易用。(3)关系模型的存取路径对用户透明(用户无须关心数据存放路径),从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。

所以,关系数据模型诞生以后发展迅速,深受用户的喜爱。1.3.2 关系完整性约束

关系完整性约束 是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。完整性通常包括实体完整性、参照完整性、域完整性和用户定义完整性。其中实体完整性和参照完整性,是关系模型通常必须满足的完整性约束条件。通俗地说,数据库关系完整性约束实际上是定义数据必须满足的基本要求,当数据违反数据库关系完整性约束时,数据库将拒绝违反关系完整性的数据的插入或更新,通过关系完整性可以保证数据库中没有冗余、垃圾数据。或者说通过定义关系的完整性约束,使得数据库有了一定的行为能力。当用户提交那些违背数据库关系完整性约束的数据时,数据库将拒绝用户提交的操作,这样保证数据库中的数据是真实有效的。

1.实体完整性

一个关系对应现实世界中一个实体集, 实体完整性 是指一个关系中不能存在两个完全相同的记录。实体完整性是通过关系的主关键字(PK)来实现的,即主关键字取值不同一定代表两个完全不同的记录,即使它们的其他属性取值相同。在现实世界中的实体是可以相互区分、识别的,也即它们应具有某种唯一性标识。在关系模式中,按实体完整性规则要求,主属性不得取空值,如主关键字是多个属性的组合,则所有主属性均不得取空值。否则,表明关系模式中存在着不可标识的实体(因空值是“不确定”的),这与现实世界的实际情况相矛盾,这样的实体就不具备实体完整性。

例如,一个学校的“学生表”中可能存在姓名相同的人,但他们是两个不同的人,因此用“姓名”作为主关键字是不可取的。而“学号”能唯一标识一个学生,因此“学号”是主关键字。这里学号一定不得取空值,否则无法对应某个具体的学生,这样的表格不完整,对应关系不符合实体完整性规则的约束条件。

2.参照完整性

关系数据库中通常都包含多个存在相互联系的关系(表),关系与关系之间的联系是通过公共属性来实现的。公共属性(连接属性)是一个关系R(称为 被参照关系 或目标关系,常称为 一表 )的主关键字,同时又是另一关系K(称为 参照关系 ,常称为 多表 )的外部关键字。 参照完整性 是指参照关系K中外部关键字的取值必须与被参照关系R中某元组主关键字的值相同,否则违反了参照完整性约束。

如图1-8中所示的二表之间的连线表示二表之间的参照完整性约束。如果将“成绩表”作为参照关系(多表),“学生表”作为被参照关系(一表),以“学号”作为两个关系进行关联的属性,则“学号”是“学生表”关系的主关键字,是“成绩表”关系的外部关键字。即“成绩表”中的“学号”属性取值必须与“学生表”中的某个“学号”值相同。

总之,参照完整性建立了具有主关键字的关系与具有外部关键字的关系之间引用的约束条件。

3.域完整性

域完整性 是指一个或多个列必须满足的约束条件,当用户插入或更新数据时,所插入或更新的数据在指定了域完整性的列上必须满足所施加的约束条件。例如,可以对学生表中的“出生年月”字段使用域完整性约束,要求年龄在12~70岁之间,在此范围之外的年龄数据都违反了域完整性要求,数据库将不允许数据进行插入或更新操作。

4.用户定义完整性

用户定义完整性 是指针对某一具体业务规则提出的关系数据库必须满足的约束条件,它反映某一具体应用所涉及的数据必须满足的应用要求(通常也称商业规则)。例如,有两个数据表,其中一个数据表A的某个属性X存放明细内容;另一个数据表B的一个属性存放数据表A的属性X的求和值,则数据表B中存放的求和值必须等于数据表A中属性X的求和值,否则数据表B中的求和值就没有意义。用户定义完整性由于涉及一些复杂的应用领域知识的表示问题,在现有数据库系统中实现功能上不是很完美。1.4数据库系统应用模式

数据库作为当前信息系统应用的热门软件,有不同的应用模式,目前流行的有客户/服务器模式和浏览器/服务器模式。

1.客户/服务器应用模式

客户/服务器应用模式 (Client/Server System,C/S)是数据库应用所采用的最重要的技术之一,它将安装数据库服务程序的计算机称为服务器,主要负责数据的存储和关键数据处理,从而提高系统的安全性和可靠性。多台计算机安装负责应用程序界面的客户端程序,称为客户机。服务器与客户机通过计算机网络实现连接,如图1-14所示。

图1-14 客户/服务器模式示意图

客户/服务器模式的优点:(1)便于使数据的保存,网络通信过程标准化。(2)可以同时服务多个客户,实现数据资源的灵活应用。(3)可以实现信息数据处理的分散化和在使用上集中化。

客户/服务器模式存在的问题:系统客户方软件安装维护困难,数据库系统无法满足对于成百上千的终端同时联机的需求。由于客户/服务器间的大量数据通信不适合远程连接,因此其更适用于局域网应用。

2.浏览器/服务器应用模式(Browser/Server System,B/S)

在Internet/Intranet领域, 浏览器/服务器结构 (简称B/S结构)是目前流行的模式,如图1-15所示。

图1-15 浏览器/服务器模式示意图

这种结构最大的优点是:客户机统一采用浏览器,而服务器端使用Web服务器(网页服务器)。这不仅方便用户的使用,而且使得客户机不存在安装维护的问题。当然软件发布和维护的工作不是自动消失了,而是转移到了Web服务器端。在Web服务器端,程序员使用脚本语言编写响应页面。使用浏览器的另一个好处是可以实现跨平台的应用,客户机可以是Windows、UNIX或Linux操作系统。当前主流的浏览器包括Internet Explorer、谷歌浏览器和FireFox等,而服务器端脚本语言的编写包括ASP.NET、JSP和PHP等。

客户机同Web服务器之间的通信采用HTTP。HTTP是一种非面向连接的协议,其通信原理如下:浏览器只有在接收到请求后才和Web服务器进行连接,Web服务器马上与数据库通信并取得结果,Web服务器再把数据库返回的结果转发给浏览器,浏览器接收到返回信息后马上断开连接。由于真正的连接时间很短,这样Web服务器可以共享系统资源,为更多用户提供服务,达到可以支持几千、几万甚至于更多用户的能力。电子商务网站、大型公司企业网多使用这种模式。1.5E-R图与关系数据库设计

数据库设计是根据用户需求设计数据库结构的过程,涉及需求分析、概念设计、逻辑设计、物理设计、数据库的实施、数据库的运行和维护。

其中,需求分析目的是弄清用户的真实业务需要,将用户的业务需求使用模型或文字的方式表述。概念设计的目的将用户需求转化为E-R模型来描述实体和实体间的联系。逻辑设计是将概念设计中的E-R模型转换为带主(外)键的表。物理结构设计涉及数据的物理存储结构、数据的存取路径、存放位置、系统配置等内容。数据库的实施是指数据库正式投入运行前对数据库进行实现、试运行、评价等工作。数据库的运行和维护是数据库正式运行后对其进行评价、调整、修改等维护工作。本节将阐述数据库需求分析到逻辑设计的过程,其他部分不做深入探究。

1.需求分析示例【例1-1】 软件需求描述车队、司机和车辆间的业务。

具体描述如下:

有若干车队。每个车队管理了若干司机和车辆。车队有车队号和车队名属性。司机有姓名、准驾车型、聘期属性。车辆有车牌号、车辆品牌和出厂日期属性。【例1-2】 软件需求描述校运动会的业务。

具体描述如下:

大学校运动会有比赛项目和运动员。它们是多对多关系。即一个项目可以由多个运动员参加;一个运动员也可以参加多个项目。比赛项目的主要属性包括:项目编号、项目名称、校记录、项目级别等。运动员的主要属性包括:运动员编号、姓名、性别、年龄、系编号等。运动员又隶属于系运动队,系运动队主要属性包括:系编号、系名称、领队等。比赛项目则抽象到比赛类别,比赛类别主要属性包括:类别编号、类别名称、主管等。

2.概念模型的特征和E-R图设计步骤

概念结构设计 的目标是将需求分析阶段得到用户对现实世界的具体要求用信息世界的结构来进行表达。这一阶段要做的工作是将用户需求抽象为反映用户观点的概念模型。

为表达信息世界的结构,概念模型需要具备以下特征:(1)应具备丰富的语义表达能力,既能表达用户的需求,又能反映现实世界中的各种数据及其复杂的关系,满足用户对数据处理的要求。(2)应易于理解与交流,成为数据库专业设计人员与普通用户的通用工具。(3)应易于修改,以适应用户需求与环境的不断变化。(4)应易于向关系数据模型转换。

基于以上四点考虑,E-R模型是非常适合表达概念模型的工具。在很多情况下,E-R图设计就代表了概念结构设计。

E-R图设计步骤 包括下列五步:

1)确定E-R图的实体

根据用户需求,将用户的数据需求和处理需求中涉及的数据对象进行归类,指明对象的身份是实体、联系还是属性。将其中的实体逐一识别出来。实体用矩形表示。

2)定义实体的属性

对所有识别出的实体,根据其描述信息来识别其属性。属性用椭圆表示。将属性与实体用实线连接。

3)定义实体间的联系

实体间的联系按照其特点可以分成三种类型,即存在性联系(如学生有所属的班级)、功能性联系(如教师教授学生)、事件性联系(如学生借书)。有时,联系也有属性,需要在这一步进行确定。联系用菱形表示,用实线将联系与实体连接,有属性的也需要用实线将属性与联系连接。

4)确定实体的关键字

实体的某个属性或属性组合能够唯一地确定该实体,这就是实体的关键字。用下画线在属性上标识关键字。

5)确定联系的类型

联系方式分为一对一联系、一对多联系、多对多联系。在实体与联系相连接的实线旁标注1、n、m,表达联系的不同类型。

图1-16~图1-18是E-R图的实例。

图1-16 车队管理E-R图实例

3.从E-R图到关系表的转换方法

概念结构设计是用户需求的形式表达,独立于数据库管理系统。为了建立满足用户需求的数据库,必须把概念模型转化为某数据库管理系统所支持的数据模型,这是数据库逻辑结构设计的主要任务,也是数据库系统设计的重要阶段。

当前,大部分数据库系统都是关系型数据库,本教材所采用的也是关系型数据库,因此针对本教材的逻辑结构设计可被视为关系数据模型设计。

图1-17 历史人物与历史事件E-R图实例

图1-18 网上书店E-R图实例

将概念结构设计得到的E-R图转换为关系数据模型,要依托以下规则:

1)实体的转换

对于E-R图中的每一个实体,都应该转换为一个关系表。该关系表包括对应实体的全部属性。实体的关键字,对应为关系表的主关键字。如果需要,可以根据关系表所表达的语义,确定一个属性或多个属性组合作为该关系表的主关键字。

2)一对多联系的处理

对于一对多联系,必须将一方实体关键字放在多方实体对应的关系表中,并将其设置为外键。这样便于在多表中实施外键约束。

3)多对多联系的转换

对于多对多联系则必须单独建立一个关系表,用来联系双方实体集。该关系表的属性除包含在E-R图中指定的属性外,还需要设置联系所连接的两个实体集关键字的组合构成该关系表的主键。同时每一个实体关键字又是外键。

4)一对一联系的处理

一对一联系在实际应用中意义不大,它主要提高系统处理性能。例如,人员姓名、性别、照片等信息放在一个表中,而其对应的档案照片等放置在另一个表中,这两个表格为一对一关系。平时只要打开姓名、性别、照片的表格即可,不需要打开档案照片等信息。

对于一对一联系有两种处理方式。第一种,参考一对多联系的处理方式,将联系对应的属性放置在两个数据表中,且该属性对应为这两个表的主键。第二种,将两个一对一的关系合并到一个表格中。【例1-3】 将多对多E-R图转换为关系表示例。

图1-19所示E-R图例转换为关系模式结果为:

图1-19 E-R图例【例1-4】 需求分析、概念设计及关系表设计完整示例。

1)需求分析

针对学校各个系参与运动会数据管理这一需求,与用户协商,了解用户的需求,需要哪些数据和操作,确定系统中应包含以下实体:比赛类别、比赛项目、系团队、运动员。

比赛类别的属性确定为类别编号、类别名称、主管;系团队的属性确定为团编号、领队、团名称;比赛项目的属性确定为项目编号、项目名称、比赛时间、级别;运动员的属性确定为运动员编号、姓名、年龄、性别。

其中,每个比赛类别可以包含多个比赛项目;每个系团队包括由多个运动员组成;而每个运动员可以参加多个比赛项目,而每个比赛项目由多个运动员参加,每个运动员参加的每个比赛都能获得一个比赛成绩。

2)概念结构设计

画出学校运动会管理系统的E-R图,如图1-20所示。

图1-20 校运动会E-R图实例

3)逻辑结构设计

根据前面的转化规则,学校运动会管理系统的关系模式如下所示:

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载