第 1章 数据库原理及基本概念本章主要是介绍数据库的基本原理和概念,数据库技术的发展,数据库系统简介,数据库管理系统的基本功能和层次结构,数据库模型的基本概念和分类,以及如何设计数据库等 。
本章重点
早期的计算机主要应用于科学计算。随着生产的发展,社会的进步,计算机应用进入了数据处理的时代。在当今社会,计算机应用已经涉足到社会的各个领域,人们的日常生活,工作与计算机的关系也愈加紧密。
数据处理是计算机四大应用(科学计算、过程控制、数据处理和辅助设计)的一个重要方面。数据库技术是在文件技术的基础上发展起来的,它是数据处理的一种最新的方法。本章将从数据处理的发展过程简要介绍数据库系统所涉及的基本概念。
第 1章 数据库原理及基本概念
1.1 数据库系统
1.2 数据库管理系统
1.3 数据库模型
1.4 关系数据库的设计
1.5 Access 2002与数据库的关系
1.6 习题
1.1 数据库系统
1.1.1 数据处理
数据是描述事物的符号记录。数字、文字、图形、图像、
声音等都是常见的数据表现形式。例如,20是一个数据,它可以代表一个人的年龄,或者是一个学生的选修课程数目等信息。所以数据的表现形式还不能完全表达内容,只有经过解释,才能将其变成有意义的数据。另外,数据之间是有联系,有结构的。例如,学生的编号、姓名、性别等。
数据处理是指对大量的各种形式的数据进行收集、加工、
传输和存储的一系列工作。其目的就是从原始的大量的数据中提炼出对人们有价值的信息,帮助人们对环境进行控制和做出行动的决策。
1.1.2 数据库
在数据处理中,数据的计算比较简单,数据的管理比较复杂。数据管理就是指数据的收集、整理、组织、存储和检索等操作。数据管理是数据处理的核心,而数据库技术就是对数据进行管理的。
在日常生活中我们经常会遇到数据库,例如教师上课的课程表,学生的成绩登记等。简单来说,数据库是存放数据的地方,相当于是存放数据的仓库,并且是以结构化的方式进行存储,以便于查询、应用、数据更新和删除等操作。数据库的一个被大家普遍接受的更为严格的定义是:
数据库是一组相互关联的数据集合,它用系统的方法将数据组织起来,具有较小的数据冗余,可以供多个用户使用,
具有较高的数据独立性,具有安全控制机制,能够确保数据的安全、可靠,能有效、及时地处理数据,并能保证数据的一致性与完整性。
1.1.3 数据库技术的发展
数据库技术是计算机科学技术中发展最快的重要分支之一,它已经成为计算机信息系统和应用系统的重要技术支柱。
数据库技术的发展大致经历了人工管理阶段、文件系统阶段和数据库系统阶段。
1.人工管理阶段
在 20世纪 50年代中期,计算机主要用于科学计算。外存只有磁盘、卡片、磁带,没有磁盘等直接存取的存储设备;
软件只有汇编语言,没有操作系统,没有管理数据的软件;
数据处理方式是批处理。这个时期数据不保存;没有相应的软件系统负责数据的管理工作,数据由应用程序管理;数据不共享,一组数据只对应一个程序;数据不具有独立性,当其逻辑结构或物理结构发生变化后,必须对应用程序做相应的修改。
2.文件系统阶段
20世纪 50年代后期到 60年代中期,硬件方面有了磁盘、
磁鼓等直接存储设备;软件方面有了专门的数据管理软件,
一般为文件系统;处理形式上不仅有了批处理,而且能联机实时处理。所以,数据可以长期保存;可以由文件系统管理数据,但是数据共享性仍然较差,冗余度大,数据的独立性差。
3.数据库系统阶段
20世纪 60年代以来,计算机用于管理的规模越来越大,
应用越来越广泛,硬件有了大容量磁盘,出现越来越多的系统软件,并且出现了统一管理数据的专门软件系统 —— 数据库系统。它采用复杂的数据模型结构;有较高的数据独立性;
可以提供方便的用户接口;并能提供数据控制功能。
1.1.4 数据库系统简介
数据库系统由三部分组成:数据库( DB)、数据库管理系统( DBMS)和数据库应用系统,三部分之间的关系如图 1-1所示。
1.数据库( DataBase)
数据库是用来存储数据的,它是按一定结构存储在计算机中相互关联的数据的集合。例如,可以将描述学生的姓名、
年龄、性别、家庭住址,E-mail信箱等相关信息存储在一个数据库中;为了加强对图书馆的图书管理,可以对每一本图书进行分类编号,然后将描述图书的编号、书名,作者、出版社、定价等相关信息存储在一个数据库中等。
数据库中有两类数据,一类是用户数据,如“学生表”
中每个学生的信息;一类是系统数据,如“学生表”中的结构,系统数据又称为数据字典。
图 1-1 数据库系统的组成
2.数据库管理系统 DBMS( DataBase
Management System)
数据库管理系统是位于用户与操作系统之间的一类通用的软件系统,它由一组计算机程序组成。
数据库管理系统能够对数据库进行有效的管理,这其中包括存储管理、安全性管理、完整性管理等,
可以对数据库进行包括定义、查询、更新以及各种控制等操作。数据库管理系统是指在数据库系统中对数据进行管理的系统软件。它是数据库系统的核心组成部分,用户能够方便快捷地建立、维护、查询、存取和处理数据库中数据。例如,Microsoft
Access 2002就是关系型桌面数据库管理系统。
3.数据库应用系统
数据库应用系统 DBAS( Database Application Systems)
是指数据库应用程序系统,它是针对某一个实际应用管理对象而进行设计开发的面向用户的软件系统。它是建立在
DBMS基础之上,具有较好的人机交互操作性和友好的用户界面。如学生管理系统、图书馆管理系统、民航售票系统等都是数据库应用系统。
数据库应用系统涉及系统开发人员、数据库管理员和用户。
( 1)开发人员主要负责应用系统的开发设计编程,并进行调试和安装。
( 2)控制和管理数据库的人员称作数据库管理员 DBA
( DataBase Administrator)。 DBA负责整个数据库系统的建立、管理、维护以及所有使用系统人员的协调工作等。
( 3)用户是应用程序的使用者,他通过应用程序的用户接口使用数据库。
BACK
1.2 数据库管理系统
1.2.1 数据库管理系统的基本功能
一般来说,一个数据库管理系统应具备以下功能:
1.数据库定义功能
它能定义数据的存储结构与数据间的关系,更进一步地定义数据的完整性。
2.数据库操作功能
实现对数据库数据的基本操作,包括数据的增加、删除、
修改、数据库的备份等。
3.数据库查询功能
为用户提供各种灵活的方式,来查询数据库内的数据。
4.数据库控制功能
负责数据库的安全性控制、完整性控制、多用户环境下的存取控制等。
5.数据库通信功能
提供分布式数据库或网络操作功能,以便与网络上的其他应用软件进行关联。
而数据库管理员拥有完整的管理权限来进行管理。
1.2.2 数据库管理系统的层次结构
数据库管理系统可以划分为若干层次,这样有助于它的设计和维护。如图 1-2所示是一个关系数据库管理系统
( RDBMS)的层次结构示例。它根据处理对象的不同,按照最高级到最低级的次序来划分,具有普遍性。图中包括了与关系数据库管理系统密切相关的应用层和操作系统。
最上层是应用层,位于 DBMS核心之外。它处理的对象是各种各样的数据库应用,可以用开发工具开发或者用宿主语言编写。应用程序利用 DBMS提供的接口来完成事务处理和查询处理。
图 1-2 RDBMS的层次结构
第 2层是语言翻译处理层。它处理的对象是数据库语言,
如 SQL。其功能是对数据库语言的各类语句进行语法分析、
视图转换、授权检查、完整性检查和查询优化等。通过对下层基本模块的调用,生成可执行代码。这些代码的运行即可完成数据库语句的功能要求。向上提供的接口是单记录操作。
第 3层是数据存取层。该层处理的对象是单个元组。完成扫描(如表扫描)、排序、查找、插入、删除和封锁等基本操作,完成存取路径维护,并发控制和事务管理、安全控制等工作。向上提供的接口是单记录操作。
第 4层是数据存储层。该层处理的对象是数据页和系统缓冲区。执行文件的逻辑打开、关闭,读写数据页,完成缓冲区管理,内外存交换和外存的数据管理等功能。
操作系统是 DBMS的基础,它处理的对象是数据文件的物理块,执行物理文件的读写操作,保证 DBMS对数据逻辑上读写真实地映射到物理文件上。操作系统提供的存取原语和基本的存取方法通常作为和 DBMS存储层的接口。
这种 DBMS层次结构划分的思想具有普遍性。但具体的系统在划分细节上是多种多样的,可以根据 DBMS实现的环境和系统的规模灵活处理。
BACK
1.3 数据库模型
目前,数据库领域中最常用的数据模型有四种,层次模型,网状模型,关系模型和面向对象模型。
1.3.1 数据模型的基本概念
1.信息、数据和实体
信息是对客观事物或抽象概念的描述。数据是表示信息的,是对客观事物或抽象概念的符号化的描述。客观存在并可相互区别的事物称为实体。如一名学生、一本书、一个工程等。
2.实体间的联系
现实世界中的事物彼此之间是有关联的,任何一个实体都不是孤立存在的。也就是说,实体与实体之间是存在一定联系的,实体与实体之间的联系是比较复杂的,但抽象化后,
可将实体与实体之间的联系分为三类:
( 1)一对一关系。如果有两个实体的集合 A和 B,A中每一个实体最多与 B中的一个实体有联系,反过来,B中每一个实体最多与 A中的一个实体有联系,则称实体集 A和 B之间是“一对一关系”。
这是最简单的实体与实体之间的联系。现实世界中我们常会遇见。如实体集“学生班”和“班长”之间、“工程项目”和“项目负责人”之间就是“一对一关系”。
( 2)一对多关系。如果有两个实体的集合 A和 B,A中每一个实体与 B中的一个或多个实体有联系,反过来,B中每一个实体最多与 A中的一个实体有联系,则称实体集 A和 B之间是“一对多关系”。
例如,实体集“工程项目”和“工程参加者”之间、
“学生班”和“学生”之间就是“一对多关系”。
( 3)多对多关系。如果有两个实体的集合 A和 B,A中每一个实体与 B中的一个或多个实体有联系,反过来,B中每一个实体与 A中的一个或多个实体有联系,则称实体集 A和 B之间是
“多对多关系”。
例如,实体集“图书”和“借书人”之间、“学生”和
“教师”之间就是“多对多关系”。
实际上,“一对一关系”是“一对多关系”的特例,“一对多关系”是“多对多关系”的特例。三者之间的关系如图 1-3
所示。
图 1-3 各种实体之间关系的包含关系
1.3.2 非关系模型数据库系统
层次模型和网状模型统称为非关系模型。
1969年,美国的 IBM公司研制了基于层次模型的数据库管理系统 IMS( Information Management System)。其特点是:数据按层次模型组织,如图 1-4所示。
20世纪 60年代末 70年代初,美国数据系统语言协商会
CODASYL( Conference On Data System Language)下属的数据库任务组 DBTG( Data Base Task Group)提出了若干报告,对网状数据库中的许多概念、方法和技术都进行了详细的说明。 DBTG的方法是网状数据库的典型代表,奠定了网状数据库的基础。其特点是:数据按网状模型组织,
如图 1-5所示。
图 1-4 层次模型数据结构 图 1-5 网状模型数据结构
非关系型数据库系统在 20世纪 60年代末至 20世纪 80年代初非常流行,在数据库系统产品中占据了主导地位,现在已逐渐被关系模型的数据库系统所代替,但是在美国等一些国家里,由于早期开发的应用系统都是基于层次数据库或网状数据库系统的,因此目前仍有不少的层次数据库或网状数据库在使用。
1.层次模型
层次模型是数据库系统最早的一种模型,它的数据结构是一种树型结构,这种树型结构由结点和有向连线组成,如图 1-1所示。层次模型中每个结点为一个记录型,每个记录可以有多个数据项组成,其描述一个实体的类型;结点之间的有向连线表示记录之间的联系。根据结点所在的层次,上层结点称为下层的双亲结点;下层结点称为上层结点的子女结点;没有双亲结点的结点称为根结点;没有子女结点的结点称为叶结点。记录与记录之间存在着一对一的关系和一对多的关系,如图 1-6所示。
图 1-6 层次模型中记录与记录之间的联系
需要注意的是,层次模型树型结构的特点是,每棵树有且仅有一个根结点;除根结点以外,层次模型中的每个结点有且仅有一个双亲结点;每个结点可以有 0个或任意有限多个子结点。在图 1-4中,结点 A是根结点;结点 E是结点 F和 G
的父结点;结点 F和 G是结点 E的子结点。
2.网状模型
网状模型基本结构的是:有一个以上的结点无双亲结点;
至少有一个结点有多于一个的双亲。在图 1-5a中结点 A和 B
无双亲结点;在图 1-5b中结点 C和 D均有两个双亲结点 A和 B。
记录与记录之间不仅存在着一对一的关系和一对多的关系,
而且还存在着多对多的关系,如图 1-7所示。
图 1-7 网状模型中记录之间的多对多联系
1.3.3 关系型模型数据库系统
20世纪 70年代中期,商品化的关系型数据库系统开始问世。 80年代初出现了一批商品化的基于关系型数据模型而建立的关系型数据库系统。如 SQL/DS,DB2,Oracle和
INFORMIN等。现在微机上使用的数据库系统几乎都是关系型数据库系统。
1970年美国 IBM公司 San Jose研究实验室的研究员
E.F.Cord发表了题为“大型共享数据库数据的关系模型”的论文,提出了关系模型的理论,为关系数据库技术奠定了理论基础。关系模型的特点:数据按二维表格组织,如表 1-1
所示。
表 1-1 课程表课 程 号 课 程 名 教 师 学 分
1 高等数学 李萍 6
2 英语 周强 6
3 计算机 王辉 4
关系模型是最重要的一种模型。关系模型的特点是用一组二维表来表示数据和数据之间的联系。二维表结构简单、
直观。目前,关系数据库在数据库管理领域占主导地位。
每一张二维表组成一个关系,一个关系有一个关系名。
一个关系由表头和记录数据两部分组成,表头由描述客观世界中的实体的各个属性(也称数据项或字段)组成,表的每一列为一个字段,表头由每一个字段的字段名构成。表的每一行称为一条记录,它对应客观世界中的一个实体,每条记录的数据由实体在各个字段的值组成。能够区分任意两条记录的字段或字段的集合称为关键字段。
图 1-8 表与表之间的关系表与表之间通过关键字段建立起一对一的关系、一对多的关系和多对多的关系,如图 1-8所示。
一个关系应该具有以下性质:
( 1)一个关系中每列的数据类型是相同的,而且是不可再分的数据项。
( 2)一个关系中不可以有重名的两个字段。
( 3)一个关系中不可以有完全相同的两条记录。
( 4)一个关系中的任意两行或任意两列均可以交换。
1.3.4 面向对象数据库系统
面向对象数据库系统是数据库技术与面向对象程序设计方法相结合的产物。对数据库应用系统的设计,从原有的按模块化程序设计转变为面向对象的数据库系统设计。
传统的数据库只能存储文本信息,随着多媒体应用的扩大,人们希望数据库不仅能够存储文本信息还要具有存储多媒体数据(如声音、图形等)的能力。 20世纪 80年代中期以来,出现了一些商品化的面向对象数据库管理系统,如
SQL/DS,DB2,Oracle,INFORMIN,Unify和 DBASE等。
面向对象的数据模型是 80年代后期的一个重要趋势。
80年代后期,为了适应新的数据库应用,例如计算机辅助设计、软件工程等,人们开展了面向对象的数据模型和数据库管理系统的研究。面向对象的数据模型和面向对象的数据库管理系统至今仍然是热门的数据库研究领域之一。
BACK
1.4 关系数据库的设计
数据库的应用越来越广泛,从小型的单项事务处理系统到大型复杂的信息系统,都采用先进的数据库技术来保持系统数据的整体性、完整性和共享性。目前,一个国家的数据库建设规模(数据库的个数、种类)、数据库信息量的大小和使用频度已成为衡量一个国家信息化程度的重要标志之一。
数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建设中的核心技术。具体来说,数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。这个问题是数据库在应用领域的主要研究课题。
1.4.1 数据库设计方法
数据库设计通常是在一个通用的 DBMS的支持下进行的,
即利用现成的 DBMS作为开发工具。由于数据库中的数据要供不同的应用程序使用,实现数据共享,所以数据库的设计在开发中就成为独立开发活动,而且是在设计应用程序之前进行。
数据库设计主要是指确定数据库的模型。关系型数据库的设计可以运用“关系规范化”理论作为指导,对组成数据库的各个二维表的结构进行设计。
数据库设计方法中比较著名的方法有 —— 新奥尔良( New
Orleans)方法。它的设计思想是,将数据库设计分为四个阶段:需求分析(分析用户要求),概念设计(信息分析和定义),逻辑设计(设计实现)和物理设计(物理数据库设计),
如图 1-9所示。
图 1-9 新奥尔良方法的数据库设计步骤
此后,S.B.Yao等又将数据库设计分为五个步骤。后来
I.R.Plamer等又主张将数据库设计当成一步接一步的过程,
并采用一些辅助手段实现每一个过程。
基于 E-R模型的数据库设计方法,或是基于 3NF(第三范式)的设计方法,或是基于抽象语法规范的设计方法等,
都是在数据库设计的不同阶段上支持实现的具体技术和方法。
规范设计的基本思想是过程迭代和逐步求精。
1.4.2 数据库设计的基本步骤
按照规范化设计的方法,考虑到数据库及其应用系统开发全过程,数据库设计可以分为以下六个阶段。
1.需求分析阶段
进行数据库设计之前,需要详细了解用户需求,采集和分析有关资料和数据。需求分析是整个设计的基础,同时也是最困难、耗时耗力的工作。它需要系统分析人员和用户之间进行反复密切的接触和协商才能完成的一项工作。需求分析结果是否能够做到完整、准确、全面地表述用户的需求直接影响着数据库的设计质量。需求分析做得不好,甚至能够导致整个数据库设计返工重做。
2.概念设计阶段
概念设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳和抽象,形成一个独立于具体的数据库管理系统的概念模型。
3.逻辑设计阶段
选择适宜的数据模型来描述数据和功能,对数据库数据和功能分析有着重大的影响。逻辑设计是将概念模型转换为某个数据库管理系统所支持的数据模型,同时对其进行综合、
细化,以得到优化的数据模型。
4.物理设计阶段
数据库物理设计阶段是为逻辑数据模型选取一个最为合适的物理存储结构。物理存储结构的选取影响着数据库的操作效率、响应时间和物理空间利用率。
5.数据库实施阶段
在此阶段,设计人员运用 DBMS提供的数据语言及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
6.数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。
一个数据库应用系统所使用的数据有两种不同的观察角度。一种观点是从数据的描述出发,主要是指数据的收集、
数据库的建立以及数据库的维护。另一种观点是从数据的使用出发,比如用户对数据查询、统计、打印报表等的要求。
【 例 】 从数据使用出发,做一个比较适合于小型的数据库应用系统的设计。
其开发过程如图 1-10所示。
( 1)需求分析。因为软件开发人员对计算机比较熟悉,对具体业务并不熟悉,而用户则恰恰相反。
所以,对于同一个问题的理解,用户和开发人员可能存在很大差异。因此,在这一阶段开发人员需要和用户以及用户领域的专家进行勾通,统一认识,确定系统的功能、性能、
数据、界面等要求。需求分析阶段实际上包含对处理数据的分析和对用户所希望的软件功能的分析两个方面。
图 1-10 数据库应用系统设计的基本过程
( 2)数据库设计。如何将要处理的数据信息以数据库的形式存储?这一阶段主要是对数据库结构的设计。合理的数据库结构的设计直接关系到整个应用系统的设计工作。
( 3)应用软件设计。应用软件设计需要首先确定软件设计的总体结构,然后再对组成总体结构的每一个模块进行具体的编码设计,最后进行编码的测试工作。
( 4)功能的测试。软件原型形成后,需要按照用户的需求检测软件的功能,如果还有不完善的地方,则需要回溯到数据库设计阶段进行修改,直到应用软件的设计满足用户的需求为止。此时,设计工作便可以进入软件的运行与维护阶段。
( 5)系统运行与维护。开发完一个软件产品投入使用后,
常常由于各种原因需要对其作适当的修改。在软件系统的运行期间对其进行调整和修改,以改正在开发阶段产生,在测试阶段又没有发现的错误,实现软件功能的扩充、性能的改善、使软件适应新的工作环境的需要等,这些工作都是软件运行及维护阶段所要完成的工作。
BACK
1.5 Access 2002与数据库的关系
Microsoft Access 2002是美国微软公司最新推出的办公自动化软件 Office XP的一个组件。 Microsoft Access以易学易用、可视化操作等特点,已成为目前 Windows操作系统下最为流行的功能强大的桌面数据库管理系统开发工具。具体的讲,是一个桌面“关系”数据库管理系统。
目前软件市场上已出现了大量的数据库管理系统软件。
20世纪 80年代,随着微机的普及,dBaseX系列,FoxbaseX
系列,FoxPro等一系列数据库管理软件逐步得到了广泛的应用。与此同时,关系数据库系统的使用在我国与日俱增。如今适宜在网络环境下开发数据库产品的 SQL Server,Oracle、
Sybase,Access等数据库管理系统软件也正在不断的得到应用和发展。
Microsoft Access 2002在原有版本的基础上,增加了一些与网络有关的操作。在 Access的数据库中,数据由表格组成,在表格中具有主关键字和外部关键字的定义,数据库中还提供了完全的引用完整性,保证了数据库的完整性。同时,
Access的表格具有数据确认规则,以避免不精确的数据输入。
表格的每一个字段都具有自己的格式和默认的定义。
Access能作为独立数据库管理系统使用,或作为客户产生结构化查询语言这样的服务程序。
此外,Access数据库具有开放式数据库互连性( ODBC)
特性,用户可以与许多外部数据相连接。
BACK
1.6 习题
1.填空题
( 1)在数据库中存储的是 。
( 2)数据库系统的核心是 。
( 3) 是存储在计算机内的有结构的数据集合。
( 4)新奥尔良方法的数据库设计步骤是,,和 。
2.选择题
( 1)按数据的组织形式,数据模型可分为 三种模型。
A.层次、关系和网状 B.网状、环状和链状
C.小型、中型和大型 D.独享、共享和时
( 2) DBMS是指,是位于 和 之间的一层管理软件。
A.数据库管理系统 B.系统软件
C.操作系统 D.用户
( 3) Microsoft Access 2002是基于 模型的数据库管理系统。
A.关系 B,E-R模型 C.层次模型 D.网状模型
BACK