信息技术基础与应用(下册)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

模块9 数据库基础与应用

任务9.1 数据库基础知识

9.1.1 学习要点

学习要点如下。

♦ 数据管理、数据库、数据库管理系统及数据库系统的基本概念。

♦ 实体、实体之间的关系。

♦ 表、字段、记录、关键字。

♦ 选择、连接、投影3种关系运算。

9.1.2 知识准备

每学期考试之后,都需要使用数据库记录每个同学的考试成绩,并做分段、排序等操作。目前,许多单位的业务发展也离不开数据库,如银行、证券市场、飞机订票、火车订票、超市、购物网站等。如果支持这些业务的数据库出现故障,那么相关的业务将无法正常运营。

9.1.2.1 数据管理技术的发展历程

数据管理是指分类、组织、编码、存储、检索和维护数据,它是数据处理的核心问题。

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

1. 人工管理阶段

人工管理阶段主要是在20世纪50年代中期以前,其应用背景如表9-1所示。

表9-1 人工管理阶段的应用背景

人工管理阶段的主要特点是难以保存数据,数据需要应用程序管理。并且没有文件概念、数据面向程序,该阶段应用程序与数据之间的对应关系如图9-1所示。

图9-1 人工管理阶段应用程序与数据之间的对应关系

2. 文件系统阶段

文件系统阶段主要是在20世纪50年代后期至60年代中后期,其应用背景如表9-2所示。

表9-2 文件系统阶段的应用背景

文件系统的主要特点是可以长期保存并管理数据、数据可重复使用、文件组织多样化(如索引文件、链接文件)、数据的存取基本以记录为单位;其不足是数据共享性差且冗余度大、文件之间缺乏联系。该阶段应用程序与数据之间的对应关系如图9-2所示。

图9-2 文件系统阶段应用程序与数据之间的对应关系

3. 数据库阶段

数据库阶段为20世纪60年代后期至今,计算机已经应用于社会的各个领域,此阶段的特点是数据结构化、数据共享、数据冗余度小、数据独立性高,以及数据的统一控制。该阶段应用程序与数据之间的对应关系如图9-3所示。

图9-3 数据库阶段应用程序与数据之间的对应关系

9.1.2.2 数据库的基本概念

1. 数据和信息

数据是一种符号,是人们认识、记录和描述现实世界中各种事物的工具。它包括数字、声音、图像、视频、汉字、英文和各种符号等,在使用之前必须加工和处理。

信息是数据经过加工和处理之后使用的状态,是人们使用和交流的一种媒介。

数据和信息是两种不同的概念,数据只有经过加工和处理之后才能称为“信息”,而信息在人们认识和感知世界的过程中以数据形式出现。

2. 数据库、数据库管理系统和数据库系统

数据库即长期存储在计算机内、有组织且统一管理的相关数据的集合。

数据库管理系统是数据库系统中专门用来管理数据的软件,位于用户和操作系统之间。

数据库系统是实现有组织且动态存储大量关联数据,以方便多用户访问的计算机硬件、软件和数据资源组成的系统,包括数据库、操作系统、数据库管理系统、数据库应用系统、数据库管理员和用户。

数据库、操作系统、数据库管理系统与用户的关系如图9-4所示。

图9-4 数据库、操作系统、数据库管理系统与用户的关系

需要注意的是数据库、数据库管理系统和数据库系统是3个不同的概念,各自关注的重点如下。

(1)数据库强调的是数据。

(2)数据库管理系统强调的是系统软件。

(3)数据库系统强调的是数据库的整个运行系统。

3. 数据描述及联系

概念设计是指根据用户的需求设计数据库所表达的概念,其基本含义如下。

(1)实体:事物的抽象,即客观存在并可相互区别的任何事物的统称。

(2)实体集:性质相同的同类实体的集合。

(3)属性:通常实体具有很多特性,每一特性即为属性。

(4)实体标识符:能唯一标识实体的属性(或多个属性的组合)称为“实体标识符”。

逻辑设计是指从概念设计得到的数据库概念出发来设计数据库的逻辑结构,即实现数据存取的表达方式和方法,其基本含义如下。

(1)字段:标记实体属性的命名单位称为“字段”或“数据项”,它是可以命名的最小信息单位。

(2)记录:字段的有序集合称为“记录”,一般用一个记录描述一个实体。

(3)文件:同类记录的集合称为“文件”。

(4)关键码:能唯一标识文件中每个记录的字段,简称“键”。

逻辑设计对应的术语实例如图9-5所示。

图9-5 逻辑设计对应的术语实例

联系是指文件之间的联系,如图9-6所示。

图9-6 文件之间的联系

(1)一对一联系(1:1):若实体集A中的每个实体至多和实体集B中的一个实体有联系,则A与B具有一对一联系;反过来亦此。例如,班级与班长之间的联系。即一个班级只有一个班长,一个班长只在一个班中任职,如图9-7所示。

(2)一对多联系(1:n):如果实体集A中的每一个实体和实体集B中的多个实体有联系,而实体集B中的每个实体至多只和实体集A中一个实体有联系,则A与B是一对多的联系。例如,班级与学生之间的联系。即一个班级中有若干名学生,每个学生只在一个班级中学习,如图9-8所示。

(3)多对多联系(m:n):若实体集A中的每一个实体和实体集B中的多个实体有联系,而实体集B中的每个实体也可以与实体集A中的多个实体有联系,则实体集A与实体集B有多对多的联系。例如,课程与学生之间的联系。即一门课程同时有若干个学生选修,一个学生可以同时选修多门课程,如图9-9所示。

图9-7 1:1联系

图9-8 1:n联系

图9-9 m:n联系

(4)三元联系:有课程、教师与参考书3个实体集,如果一门课程可以有若干位教师讲授、使用若干本参考书、每一位教师只讲授一门课程且每一本参考书只供一门课程使用,那么课程与教师、参考书之间的联系是一对多的三元联系,如图9-10所示。

图9-10 三元联系

9.1.2.3 数据模型

1. 数据库的3级组织结构

从现实世界的信息到数据库存储的数据,以及用户使用的数据是一个逐步抽象的过程。

20世纪70年代,美国国家标准化协会根据数据抽象的级别定义了4种模型。即概念模型、逻辑模型、外部模型和数据库(内部模型),它们之间的关系如图9-11所示。

图9-11 4种模型之间的关系

4种模型的抽象过程为概念模型→逻辑模型→外部模型→内部模型。

(1)概念模型:用来表达用户需求的数据库全局逻辑结构的模型。

(2)逻辑模型:用来表达计算机实现需求的数据库全局逻辑结构的模型。

(3)外部模型:用来表达用户使用需求的数据库局部逻辑结构的模型。

(4)内部模型:用来表达数据库物理结构的模型,它描述数据在磁盘中的存储方式、存取设备和存取方法。

在用户与数据库之间,数据库的数据结构分成为3个层次,即外部模型、逻辑模型、内部模型。这3个层次都要用数据库定义语言来定义。定义之后就有了专门的术语,称为“模式”,即内模式、逻辑模式、外模式。

(1)内模式。

数据最终是要存储在硬盘介质中并表示为一个或多个文件,这些文件有特定的物理结构和存储方式,其描述如下。

• 是顺序文件还是随机文件?

• 索引按照什么方式组织?

• 数据是否经过加密?是否经过压缩?

上述数据物理结构和存储方式的描述被称为“内模式”,也称为“物理模式”或“存储模式”。一个数据库只有一个内模式,它是数据库内部的表示方法。

(2)逻辑模式。

如果让用户记住内模式中的问题并按照相应的方式来访问,显然是不可想象的;否则数据库管理系统也就失去了它的价值。

逻辑模式描述了数据库中全体数据的逻辑结构和特征,例如,在SQL Server中用户能看到的是一张张的数据表、数据视图、数据快照等,而不是直接访问存储在硬盘中的数据文件。

一个数据库只有一个逻辑模式,它以某一种数据模型为基础。

(3)外模式。

有了模式,用户可以排除数据存储细节的干扰,而以一种逻辑的方式访问数据,但是还有如下问题要解决。

• 如何为多个用户划分权限?

• 不同用户看到的数据有何不同?

• 不同用户的结构、类型、长度、保密级别等的要求如何实现?

外模式是模式的子集,也称“子模式”或“用户模式”,它是用户能够看见和使用、局部、逻辑结构和特征的描述,并与某一应用有关的数据逻辑表示。一个数据库可以有多个外模式,不同用户的外模式的描述不同。

2. 数据抽象过程

(1)根据用户需求设计数据库的概念模型。

(2)根据转换原则把概念模型转换为数据库的逻辑模型。

(3)根据用户的业务特点设计不同的外部模型给数据库开发人员使用。

(4)根据逻辑模型设计其内部模型。

下面说明概念模型和逻辑模型。

(1)概念模型。

概念模型普遍采用“实体-联系”模型,也称为“E-R模型”。该模型用E-R图表示实体及其联系,其中的元素如下。

• 实体类型:用矩形表示,矩形框内写明实体集名。

• 属性:用椭圆形表示,并用无向边将其与相应的实体或联系连接起来。

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

我们通过购物流程案例来讲解,商品(名称、价格、编号、库存)、商品类别(类别ID)、订单(订单号、生成日期、总价格)、客户(客户名、电话、注册时间、地址)之间关系的E-R图如图9-12所示。

图9-12 商品、商品类别、订单和客户之间关系的E-R图

通过E-R图可看出概念模型的特点如下。

• 表达的是数据库的整体逻辑结构。

• 从用户需求的观点出发为数据建模。

• 与硬件和软件无关。

• 是数据库设计人员与用户之间进行交流的工具。

(2)逻辑模型。

数据库的结构形式称为“数据模型”,由数据结构、数据操作和数据约束组成。它是数据库管理系统用来表示实体与实体之间联系的一种方法,一个具体的数据模型应能正确地反映数据之间存在的整体逻辑关系。

逻辑模型中的基本概念如下。

• 实体:客观存在并且可以区别的事物,如一位教师、一名学生等。

• 属性:实体的特性,如一位学生的属性包含学号、姓名、性别、年龄等。

数据库中的数据从整体上看是有结构的,也就是所谓的结构化。这种结构决定了数据及相互间的联系方式和数据库的设计方法,根据数据间不同的结构方式可将数据库分为如下5种模型。

(1)层次模型(Hierarchical Model):总体结构为一个倒立的树形,在不同的数据之间只存在单纯的联系,如图9-13所示。

图9-13 层次模型

层次模型的特点可以概括如下。

• 仅有一个节点,称为“根节点”。

• 除根节点外,其余节点有且仅有一个双亲节点。

(2)网状模型:总体结构呈网状,在两个数据中间允许存在两种或多种联系,如图9-14所示。

图9-14 网状模型

网状模型的特点可以概括如下。

• 有一个以上的节点没有双亲节点。

• 允许一个节点有多个双亲节点。

• 允许节点间有复合链。

(3)关系模型:对象和属性之间的联系可以看作是二维表的形式,以学生表为例说明,如表9-3所示。

表9-3 关系模型

学生表是一个二维关系表,其中的每一行称为“一个元组”,每一列称为“一个属性”。属性可以有多个。关系模型可以用关系名(属性名1,属性名2,…,属性名n)表示。

例如,学生(学号,姓名,性别,年龄)。

“学生”是实体名,实体的属性与关系的属性相对应。加了下画线的是关键字,其属性是唯一的。即标志一条记录,而且不能重复。

在关系模型数据库中一个数据库可以包含多个表,每个二维表存放特定的信息,如表9-4和表9-5所示。

表9-4 课程表

表9-5 学生成绩表

关系模型的特点如下。

• 表达的是数据库的整体逻辑结构。

• 从数据库实现的角度出发建模。

• 独立于硬件,依赖于软件,特别是数据库管理系统。

• 是数据库设计人员与应用程序员之间交互的工具。

(4)外部模型。

外部模型是一种用户观点下的数据库局部逻辑结构模型,用于满足特定用户的数据要求。例如,在上面的关系模型基础上设计一个能满足查询学生课程成绩需要的外部模型。假定将其命名为“学生成绩”,该视图模式如下。

学生成绩(学号,姓名,课程名称,成绩)

外部模型的特点如下。

• 反映了用户使用数据库的观点,是针对用户需要的数据而设计的。

• 通常是逻辑模型的一个子集。

• 硬件独立且软件依赖。

(5)内部模型。

内部模型又称为“物理模型”,是数据库最低层的抽象。用于描述数据在磁盘中的存储方式、存取设备和存取方法,与硬件紧密相连。

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

DBMS是一个可运行并且按照数据库方法存储、维护和向应用系统提供数据支持的系统,即数据库、硬件、软件和数据库系统管理员(DataBase Administrator,DBA)的集合体。

DBA负责数据库系统的正常运行,并承担创建、监控和维护数据库结构的责任。

1. DBMS的工作模式

如图9-15所示。

图9-15 DBMS的工作模式

(1)接收应用程序的数据请求。

(2)将用户的数据请求(高级指令)转换为其代码(底层指令)。

(3)实现要求的数据操作。

(4)从对数据库的操作中接收查询结果。

(5)对查询结果进行处理(格式转换)。

(6)将处理结果返回应用程序。

2. DBMS的主要功能

(1)数据定义:DBMS提供数据定义语言(Data Definition Language,DDL),供用户定义数据库的3级模式结构、两级映像,以及完整性和保密性等约束。DDL主要用于建立、修改数据库的库结构,所描述的库结构仅仅给出了数据库的框架,该框架信息被存放在数据字典(Data Dictionary)中。

(2)数据操作:DBMS提供数据操作语言(Data Manipulation Language,DML)供用户实现对数据的追加、删除、更新、查询等操作。

(3)数据库运行管理:包括多用户环境下的并发控制、安全性检查和存取限制控制、完整性检查和执行、运行日志的组织管理,以及事务的管理和自动恢复等,这些功能保证了数据库系统的正常运行。

(4)数据组织、存储与管理:DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等,需确定以何种文件结构和存取方式在存储级上组织这些数据,以及如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率,并选择合适的存取方法提高存取效率。

(5)数据库保护:数据库中数据的保护至关重要,DBMS对数据库的保护通过4个方面来实现。即数据库安全性控制、数据库的并发控制、数据库的完整性控制和数据库的恢复,其他保护功能还有系统缓冲区的管理,以及数据存储的某些自适应调节机制等。

(6)数据库的维护:包括数据库的数据载入、转换、转储、重组、重构及性能监控等,这些功能分别由相应的应用程序来完成。

(7)通信:DBMS具有与操作系统的联机处理、分时系统及远程作业输入的相关接口,负责处理数据的传送。网络环境下的数据库系统还应该包括DBMS与网络中其他软件系统的通信功能,以及数据库之间的互操作功能。

9.1.2.5 关系模型的基本概念

1. 关系模型及其术语

关系模型指用二维表格(关系)表示实体集,用外键表示实体之间联系的模型,有关术语如下。

(1)关系中的行:称为“元组”,元组的个数称为“基数”。

(2)关系中的列:称为“属性”,属性的个数称为“元数”。

(3)属性的取值范围:称为“域”。

(4)描述:称为“关系模式”,如学生(学号、姓名、性别、出生日期)、课程(课程号、课程名、学分)、选修(学号、课程号、成绩)。

(5)候选键(也称“候选码”):在关系中能唯一标识元组属性(或属性集)的键。

(6)主键(也称“主码”):用户从候选码中选做标识元组属性(或属性集),一般称为“键”。

(7)外键(也称“外码”):如果关系模式R中的属性K不是R的候选键,但它是其他关系模式的主键,那么K在R中称为“外键”。

例如,学生、课程和选修3个关系,它们的关系的描述如下:

学生(学号,姓名,性别,出生日期)

课程(课程号,课程名,学分)

选修(学号课程号,成绩)

2. 关系的性质

(1)关系中的每一个属性值都是不可分解的数据项,即不允许表中有表。均满足1NF要求(1NF即1范式,指数据库表中的每一列都是不可分割的基本数据项,同一列中不能有多个值。即实体中的某个属性不能有多个值,或不能有重复的属性。1范式遵从原子性,属性不可再分)。

(2)同一关系中不同的属性要给予不同的属性名。

(3)关系中没有重复的元组,即表中没有重复的记录。

(4)行的次序可以任意交换。

(5)列的次序可以任意交换。

3. 关系模型的3类完整性规则

完整性是指数据的正确性和一致性,关系模型中的3类完整性规则如下。

(1)实体完整性规则:要求关系中的元组在组成主键的属性上不能出现空值,即不知道或无意义的值。如果出现空值,主键便失去了唯一标识记录的作用。

(2)参照完整性规则:与关系之间的联系有关,是指“不允许参照引用与当前关系相联系的另一个关系中不存在的元组”。例如,教师(编号、姓名、职称、课程号),课程(课程号、课程名、学时数)。

(3)用户定义的完整性:允许用户定义属性的数据类型、大小和取值范围,系统采用统一的方法进行检验实施。例如,学生的年龄限制数值为19~35,定义之后DBMS将始终检验这个规则是否满足。

4. 关系模型的优点

(1)采用单一的关系形式表示实体和联系,具有高度的简明性和精确性。

(2)逻辑结构和相应的操作完全独立于数据存储方式,具有高度的数据独立性。

(3)建立在比较坚实的数学基础上。

9.1.2.6 关系代数

关系数据操作语言建立在关系代数基础上,关系代数是以关系为运算对象的一组运算的集合。由于关系定义为属性个数相同的元组的集合,因此集合代数可以引入到关系代数中。

关系代数中的运算可分为传统的集合运算(并、交、差、笛卡儿积和除)和专门的关系运算(投影、选择和连接、自然连接)。

(1)投影运算。

选择指定的属性,形成一个可能含有重复行的表格,删除重复行形πA(R)={r.A|rR}”,其中R是关系名,π是投影运算符,A是被投影的属性或属性集。例如,有学生关系(学号、姓名、性别、年龄)。选取学号和姓名两列构成新的关系π学号,姓名(学生),其投影运算如图9-16所示。

图9-16 投影运算

(2)选择运算。

选择运算是从指定的关系中选择某些元组形成一个新的关系,被选择的元组是用满足某个逻辑条件来指定的。选择运算表示为“σF(R)={r|rRF}”,其中R是关系名,σ是选择运算符,F是逻辑表达式。例如,有学生关系(学号、姓名、性别、年龄)。选取性别为“男”的元组构成新的关系σ性别="男"(学生),其选择运算如图9-17所示。

图9-17 选择运算

从学生关系中选取性别为“男”的学号和姓名组成新的关系π学号,姓名性别="男"(学生)),其选择和投影联合运算如图9-18所示。

图9-18 选择和投影联合运算

(3)笛卡儿积运算。

RS是两个关系,如果Rm元关系,有k个元组且Sn元关系,有l个元组,则广义笛卡儿积R×S是一个m+n元关系、有k×l个元组。广义笛卡儿积可以记作“”。笛卡儿积运算如图9-19所示。

(4)θ连接运算。

θ连接从关系RS的笛卡儿积中选取属性值满足某一θ操作的元组,记为“”,如图9-20所示。

图9-19 笛卡儿积运算

图9-20 θ连接运算

(5)F连接运算。

F连接运算是从关系RS的笛卡儿积中选取属性间满足某一公式F的元组,如图9-21所示。

图9-21 F连接运算

(6)自然连接运算。

在连接运算中最常用的是自然连接运算,它要求被连接的两个关系有若干相同的属性名。计算R×S,设RS的公共属性是A1~AK,挑选R×S中满足R.A1=S.A1及R.AK=S.AK的所有元组并去掉重复的属性,如图9-22所示。

图9-22 自然连接运算