1.1 数据库系统概述
数据库系统是指引进数据库技术后的整个计算机系统,它可以有效地管理和存取大量的数据资源,满足多用户、多应用的不同需求。
1.1.1 数据与数据管理技术
1.数据
数据(Data)是描述事物的符号记录,可以有多种表现形式,如数字、文字、图形、图像、声音等,它们经过数字化后可以存入计算机。
数据是数据库中存储的基本对象,数据与其语义(数据的含义)是密不可分的。例如,75是一个数据,可以表示某个人的身高,也可以表示某个人的体重,还可以表示一个同学某门课的成绩等。
2.数据管理技术
数据管理是指对数据进行分类、组织、编码、存储、检索和维护,是数据处理的中心问题。而数据处理则是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。
数据库技术是应数据管理任务的需要而产生的。随着计算机软、硬件技术的不断发展和计算机应用范围的不断拓宽,在应用需求的推动下,数据管理技术经历了人工管理、文件系统和数据库系统3个发展阶段。
(1)人工管理阶段 在20 世纪50 年代中期以前,计算机主要用于科学计算。那时,硬件上没有磁盘等直接存取的存储设备,软件上没有操作系统,更没有管理数据的软件。
人工管理数据的主要特点包括以下4点。
① 数据不保存。
② 应用程序管理数据。
③ 数据不共享。一组数据只能对应一个程序,数据冗余量大(一个程序中的数据无法被其他程序利用,因此程序与程序之间存在大量的重复数据,称为数据冗余)。
④ 数据不具有独立性。数据与程序彼此依赖,应用程序不仅要规定数据的逻辑结构,而且要设计物理结构(如存储结构、存取方法、输入方式等)。
人工管理阶段的应用程序与数据之间的对应关系如图1.1所示。
图1.1 人工管理阶段的应用程序与数据之间的对应关系
(2)文件系统阶段 从20世纪50年代后期到20世纪60年代中期,硬件方面有了磁盘、磁鼓等直接存取存储设备,软件方面操作系统中已经有了专门的数据管理软件— 文件系统。
文件系统管理数据的主要特点如下。
① 数据以文件形式长期保存。
② 数据由文件系统管理。在文件系统的支持下,应用程序通过文件名访问数据文件,程序员不必过多地考虑数据存储等物理细节。
③ 数据共享性差,冗余度大。在文件系统中,一个(或一组)数据文件基本上对应于一个应用程序,数据文件之间没有联系,同一数据项可能重复出现在多个文件中。
④ 数据独立性差。在文件系统阶段,数据和程序可以分开存储,数据与程序之间有了一定的独立性,但文件系统中的文件是为某一特定应用服务的,数据仍高度依赖于程序。
文件系统阶段的应用程序与数据之间的对应关系如图1.2所示。
图1.2 文件系统阶段的应用程序与数据之间的对应关系
(3)数据库系统阶段20世纪60年代后期以来,计算机用于管理的规模越来越大,为满足多用户、多应用共享数据的需求,出现了统一管理数据的专用软件系统— 数据库管理系统。
数据库系统的主要特点如下。
① 数据结构化。数据库系统实现整体数据的结构化,数据库中的数据不再仅仅针对某一个应用,而是面向全组织;不仅内部数据是结构化的,整体也是结构化的,数据之间是具有联系的。
② 数据由数据库管理系统统一管理和控制。数据库管理系统负责数据库的建立、使用和维护,并提供数据保护和控制功能。
③ 数据的共享性高,冗余度小,易扩充。数据库系统采用面向全局的观点组织数据,数据不再面向某个应用,因此,可以被多个用户、多个应用共享使用。
④ 数据独立性高。在数据库系统中,应用程序与数据的逻辑结构和物理存储结构无关,数据具有较高的逻辑独立性和物理独立性。
数据库系统阶段的应用程序与数据之间的对应关系如图1.3所示。
图1.3 数据库系统阶段的应用程序与数据之间的对应关系
1.1.2 数据库系统
1.数据库
数据库(DataBase,DB)是指长期存储在计算机内,有组织的、大量的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
数据库中不仅包括描述事物的数据本身,而且包括相关事物之间的联系。对数据库中数据的增加、删除、修改和查询等操作,均由数据库管理系统统一管理和控制。
2.数据库管理系统
数据库管理系统(DataBase Management System,DBMS)是位于用户与操作系统之间的一层数据管理软件,在操作系统支持下工作,是数据库系统的核心组成部分。
DBMS的主要功能包括以下4方面:
(1)数据定义 定义数据库结构,包括定义表、索引、视图等数据对象。
(2)数据操纵 实现对数据库的查询和更新(插入、删除、修改)操作。
(3)数据库的运行管理 数据库在建立、运行和维护时由DBMS统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用,以及发生故障后的系统恢复。
安全性控制可防止未经允许的用户存取数据,完整性控制可保证数据的正确性、有效性和相容性,并发控制可防止多用户并发访问数据时由于相互干扰而产生的数据不一致。
(4)数据库的建立和维护 包括数据库初始数据的输入和转换,数据库的转储和恢复,数据库的重组织,性能监视和分析等。
3.数据库系统
数据库系统(DataBase System,DBS)是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统和数据库管理员构成。
数据库管理员(DataBase Administrator,DBA)是负责数据库的建立、使用和维护的专门人员。
数据库应用系统就是利用数据库系统资源,为特定应用环境开发的应用软件,如教学管理系统、人事管理系统、财务管理系统、图书管理系统等。
数据库系统各部分之间的关系如图1.4所示。
图1.4 数据库系统各部分之间的关系示意图
1.1.3 E-R模型
E-R(Entity-Relationship,实体-联系)模型是一种描述信息世界的方法,它用E-R图来组织数据库系统的信息结构。
E-R模型独立于具体的计算机系统,是用户与数据库设计人员之间进行交流的工具。
E-R模型的主要成分是实体、联系和属性,它们的概念如下。
(1)实体(Entity)客观存在并可相互区分的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个职工、一个部门、职工与部门的工作关系等都是实体。
(2)属性(Attribute)实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。例如,学生实体有学号、姓名、性别、出生日期等属性。
实体名和各个属性名的集合构成实体型(Entity Type)。例如,学生(学号,姓名,性别,出生日期)就是一个实体型,(310201,张君,男,1986/6/12)就是学生实体型的一个实体。
同一类型的实体的集合构成实体集(Entity Set),例如,全体学生就是一个实体集。
(3)联系(Relation)现实世界的事物之间总是存在某种联系,包括实体内部的联系(通常指组成实体的各属性之间的联系)和实体之间的联系。
两个实体之间的联系可分为以下3类。① 一对一联系(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.1】 用E-R模型描述某高校的教学组织情况:学校有若干系部,每个系部有若干学生,每名学生可选修多门课程。
本例涉及“系部”、“学生”和“课程”3个实体,系部与学生之间的“隶属”关系为一对多的联系,学生与课程之间的“选课”关系为多对多的联系。
假设“系部”实体的属性有系号、系名和系主任,“学生”实体的属性有学号、姓名和性别,“课程”实体的属性有课程号、课程名和学分,“选课”联系中包含成绩属性。
E-R模型如图1.5所示。其中,矩形表示实体型,矩形框内为实体名;椭圆表示属性,椭圆框内为属性名;菱形表示联系,菱形框内为联系名;无向边用来连接实体型与联系,边上注明联系类型(1:1,1:n或m:n);属性与对应的实体型或联系也用无向边连接。
图1.5 描述某高校教学组织情况的E-R模型
1.1.4 数据模型
数据模型是现实世界数据特征的抽象,它将数据库中的数据按照一定的结构组织起来,以反映事物本身及事物之间的各种联系。
任何一个DBMS都是基于某种数据模型的。为了把现实世界中的具体事物抽象和组织为某一DBMS支持的数据模型,人们通常先将现实世界抽象为信息世界(如用E-R模型表示),然后再将信息世界转换为机器世界(用数据模型表示)。
目前常用的数据模型有4 种:层次模型、网状模型、关系模型、面向对象模型。相应地,数据库也分为层次型数据库、网状型数据库、关系型数据库、面向对象数据库。下面简要介绍前3种数据模型。
(1)层次模型 用树状结构表示实体及实体间联系的数据模型称为层次模型,它是数据库系统最早使用的一种模型。
层次模型的特征是:有且仅有一个节点没有父节点,它就是根节点;其他节点有且只有一个父节点。图1.6所示为一个层次模型示例。
图1.6 层次模型示例
在层次模型中,每个节点表示一个实体型,存储一条记录。节点之间的连线(有向边)表示实体之间的联系,这种联系表示一对一或一对多的关系。
层次模型结构简单、处理方便、算法规范,适于表达现实世界中具有一对多联系的事物,如行政关系、家族关系等,但不能直接表达实体间的多对多联系。
(2)网状模型 用网状结构表示实体及实体间联系的数据模型称为网状模型。
网状模型的特征是:允许一个以上的节点没有父节点,允许一个节点有多个父节点。图1.7所示为一个网状模型示例。
图1.7 网状模型示例
网状模型能够更为直接地描述现实世界,表示实体间的各种联系,但它的结构复杂,实现的算法也复杂。
层次模型和网状模型在本质上是一样的,即每个节点表示一个实体型,存储一条记录,节点之间的连线表示实体间的联系,用链接指针来实现。
(3)关系模型 用二维表结构来表示实体及实体间联系的数据模型称为关系模型。关系数据模型以关系数学理论为基础,一个关系对应一个二维表。
关系模型的概念单一,无论实体还是实体之间的联系都用关系来表示。例如,学生、课程、学生与课程之间的“选课”联系都用关系来表示。图1.8所示为一个关系模型示例。
图1.8 关系模型示例
关系模型是目前最常用也是最重要的一种数据模型。20世纪80年代以来,新推出的数据库管理系统几乎都支持关系模型,如Oracle、SQL Server、Sybase、Visual FoxPro,以及本书所要介绍的Microsoft Access,它们都是基于关系模型的关系数据库管理系统。