1.1 数据库概述
从最初的人工管理到当今的各种数据库系统,计算机的数据管理方式发生了翻天覆地的变化。数据库技术作为数据管理的有效手段,极大地促进了计算机应用的发展。目前,许多单位的业务开展都离不开数据库系统,如学校的教务管理、银行业务、证券市场业务、飞机票/火车票的订票业务、超市业务和电子商务等。
1.1.1 数据管理技术的发展历程
1-1 数据管理技术的发展历程
自从世界上第一台电子数字计算机诞生以来,数据管理技术经历了人工管理、文件系统和数据库系统3个阶段。
提示
数据管理是利用计算机技术对数据进行有效地收集、存储、处理和应用的过程。
1.人工管理阶段
在20世纪50年代中期以前,受到当时的计算机软硬件技术的限制,计算机主要用于科学计算。硬件方面,外部存储设备只有磁带、卡片和纸带;软件方面,既没有操作系统,也没有可进行数据管理的软件。在这个阶段,计算机没有数据管理功能,程序员将程序和数据编写在一起,每个程序都有属于自己的一组数据,程序之间不能共享数据,即便是几个程序处理同一批数据,也必须重复存储,数据冗余度很大。人工管理阶段应用程序与数据的关系如图1-1所示。
图1-1 人工管理阶段应用程序与数据的关系
例如,分别编写程序求出10个整数的最大值和最小值,采用人工管理方式的C语言程序示例如图1-2所示。
图1-2 人工管理阶段应用程序与数据处理程序示例
从这个例子可以看出,在人工管理阶段,程序和数据是不可分割的整体。每个程序都有自己的数据,而且数据与程序之间不独立,完全依赖于程序,根本无法实现数据共享,造成严重的数据冗余。
2.文件系统阶段
在20世纪60年代中期,计算机不仅用于科学计算,还大量用于信息处理。硬件上已经有了可直接存取的外部存储设备(如磁盘),软件上出现了操作系统。在这个阶段,数据能够以文件的形式存储在外存上,由操作系统中的文件系统统一管理,按名存取。这就使得程序与数据可以分离,程序与数据之间有了一定的独立性。不同应用程序可以共享一组数据,实现了以文件为单位的数据共享。文件系统阶段应用程序与数据的关系如图1-3所示。
例如,同样是分别编写程序求出10个整数的最大值和最小值,采用文件系统管理方式时,可以将这10个整数存放在一个文本文件(如data.txt)中,用Windows的附件程序“记事本”就可以编辑文本文件,如图1-4所示。然后,让应用程序从该文件中获得数据,实现数据共享。具体的C语言程序示例如图1-5所示。此外,如果想继续求出另外10个整数的最大值和最小值,不需要改变程序,只需要修改文本文件(data.txt)中的数据,从而使程序与数据具有了一定的独立性。
图1-3 文件系统阶段应用程序与数据的关系
图1-4 data.txt文本文件
图1-5 文件系统阶段应用程序与数据处理程序示例
从这个例子可以看出,在文件系统阶段,数据可以长期保存,由文件系统统一管理。但由于文件中只保存了数据,并未存储数据的结构信息,这导致读取文件数据的操作必须在程序中实现,从而使程序与数据之间的独立性仍然有局限性,数据不能完全脱离程序。
3.数据库系统阶段
在20世纪60年代后期,随着计算机应用范围日益广泛,数据管理的规模越来越大,为了解决数据的独立性问题,实现数据的统一管理,达到数据共享的目的,数据库技术应运而生。在数据库系统阶段,应用程序通过数据库管理系统获取数据,实现数据共享。数据库系统阶段应用程序与数据的关系如图1-6所示。数据库系统提供了对数据更高级、更有效的管理,使数据不再面向特定的某个应用,而是面向多个应用甚至整个应用系统。
例如,同样是求10个整数的最大值和最小值,采用数据库系统管理方式时,可以将这10个整数存放在Access数据库的一个data表(见图1-7)中,然后通过Access数据库管理系统提供的结构化查询语言(Structured Query Language,SQL),编写相应的查询语句就能够得出结果。
图1-6 数据库系统阶段应用程序与数据的关系
图1-7 data表
求最大值的SQL查询语句为:Select Max(Num) From data
求最小值的SQL查询语句为:Select Min(Num) From data
其中,Select是查询命令,Max()是求最大值的函数,Min()是求最小值的函数,data是存放数据的表名,Num是表中具体存放数据的列(字段)名称。
从这个例子可以看出,在数据库系统阶段,数据库中不仅保存了数据,还保存了数据的结构信息(如Num列),应用程序可以不考虑数据的存取问题,具体的工作由数据库管理系统完成。只有在数据库系统阶段,数据才真正实现了独立和共享。
随着数据量的不断增大和数据应用场景的不断扩展,各个行业、领域对数据库技术提出了更高的需求。除了传统的数据库系统(层次数据库系统、网状数据库系统和关系数据库系统),还出现了分布式数据库系统、面向对象数据库系统和多媒体数据库系统等。目前,大数据、云计算、人工智能已经成为未来数据库技术的发展趋势。
1.1.2 数据库系统的组成
1-2 数据库系统的组成
数据库系统(DataBase System,DBS)是指引入数据库技术后的计算机系统。DBS实际上是一个集合体,除了计算机硬件系统和操作系统,还包括数据库、数据库管理系统、应用程序和相关人员等,如图1-8所示。
图1-8 数据库系统的组成
1.数据库
数据库(DataBase,DB)是按照一定方式组织起来的有联系、可共享的数据集合。数据库中的数据按照一定的数据模型进行组织、描述和存储,能够被多个用户共享,并独立于应用程序。
2.数据库管理系统
数据库管理系统(DataBase Management System, DBMS)是数据库系统的核心软件,在操作系统的支持下工作,为用户提供使用数据库的界面。DBMS的基本功能如下。
(1)数据定义:DBMS提供了数据定义语言(Data Description Language,DDL)供用户定义数据库的结构、数据之间的联系等。
(2)数据操作:DBMS提供了数据操作语言(Data Manipulation Language,DML)来满足用户对数据库提出的各种要求,以实现数据的插入、修改、删除和检索等基本操作。
(3)数据库运行控制:DBMS提供了数据控制语言(Data Control Language,DCL)来实现对数据库的并发控制、安全性检查和完整性约束等功能。
(4)数据库维护:DBMS提供了一些可用于对已经建立好的数据库进行维护的实用程序,包括数据库的备份与恢复、数据库的重组与重构、数据库性能监视与分析等。
(5)数据库通信:DBMS还提供了与数据库通信有关的实用程序,以实现网络环境下的数据库通信功能。
3.应用程序
应用程序是指利用各种开发工具开发的、用以满足特定应用环境要求的程序。不管使用什么数据库管理系统和开发工具,应用程序的运行模式主要分为两种:客户机/服务器(Client/Server,C/S)模式和浏览器/服务器(Browser/Server,B/S)模式。
腾讯QQ软件就属于C/S模式,需要在客户机上安装专门的应用程序,后台的数据库主要完成数据的管理工作,因此需要开发客户机端应用程序。
互联网上的购物网站就属于B/S模式。只需要在客户机上安装浏览器(如Microsoft Edge),用户即可通过浏览器访问购物网站,但在B/S模式下需要开发服务器端Web应用程序。
4.相关人员
相关人员主要包括数据库管理员、应用程序开发人员和最终用户3类。
(1)数据库管理员(DataBase Administrator,DBA):负责确定数据库的存储结构和存取策略,定义数据库的安全性要求和数据完整性约束条件,监控数据库的使用和运行。
(2)应用程序开发人员:负责应用程序的需求分析、数据库设计、编写访问数据库的应用程序等方面的工作。
(3)最终用户:通过应用程序的接口或数据库查询语言访问数据库。
1.1.3 数据库系统的特点
数据库系统具有以下特点。
1.数据集成性强
数据库系统具有很强的数据集成性,体现在数据库系统中的数据不是仅针对某一个应用程序,而是将与多个应用程序相关的数据存放在同一个数据库中,从而实现数据的集成管理,可以避免数据之间的不相容与不一致。
2.数据共享性高且冗余度低
因为数据库中的数据是与多个应用程序相关的,所以数据可以被多个用户或多个应用程序共享使用,因此数据库系统可以大大降低数据冗余度,节省存储空间。
3.数据独立性高
数据独立性是指数据和应用程序相互独立。把数据的定义从程序中分离出去,并且数据的存取由DBMS来负责,这使开发人员可以把更多的精力放在应用程序的编写上,从而能大大减少应用程序维护和修改的工作量。数据独立性包括逻辑独立性和物理独立性。
·逻辑独立性:是指用户的应用程序与数据的总体逻辑结构是相互独立的,即当数据的总体逻辑结构改变时,只要局部逻辑结构不变,那么应用程序就可以不变。例如,增加新的数据项、增加或删除数据之间的联系,都不必修改原有的应用程序。
·物理独立性:是指当数据的物理存储结构改变时,数据的逻辑结构不会改变,因而应用程序也不必改变。例如,当用户改变数据库的存储位置(存到另一个磁盘上)时,不必修改原有的应用程序。
4.数据由DBMS统一管理和控制
DBMS提供了一套有效的数据管理和控制手段,以保证数据库中数据的安全可靠和正确有效,主要包括数据的安全性控制、数据的完整性检查、数据库的并发访问控制和数据库的故障恢复等功能。
1.1.4 数据库系统的内部体系结构
1-3 数据库系统的内部体系结构
数据库系统的内部体系结构是三级模式和二级映射结构,如图1-9所示。
三级模式分别是外模式、概念模式和内模式,二级映射分别是外模式到概念模式的映射和概念模式到内模式的映射。
1.数据库系统的三级模式
·外模式:也称为子模式或用户模式,它是对数据库用户(包括应用程序开发人员和最终用户)能够看见和使用的局部数据逻辑结构的描述,是与某一应用程序相关的数据的逻辑表示。
·概念模式:也称为逻辑模式,它是对数据库中全局数据逻辑结构的描述,是所有用户(或应用程序)的公共数据视图。它不涉及具体的硬件环境与平台,也与具体的软件环境无关。针对不同的用户需求,一个概念模式可以有若干个外模式。
图1-9 数据库系统的内部体系结构
·内模式:也称为存储模式或物理模式,它是对数据库物理结构和存储方法的描述,是数据在存储介质上的保存方式。内模式对一般用户是透明的,一般用户通常不需要关心内模式的具体实现细节,但它的设计会直接影响到数据库的性能。
数据库系统的三级模式反映了3个不同的环境及要求,其中,内模式处于最底层,它反映了数据在计算机中的实际存储形式;概念模式处于中间层,它反映了设计者的数据全局逻辑要求;而外模式处于最高层,它反映了用户对数据的要求。一个数据库系统通常只有一个内模式和概念模式,但可以有多个外模式。
2.数据库系统的二级映射
·外模式到概念模式的映射:是指外模式与概念模式之间的对应关系。外模式是用户的局部模式,而概念模式是全局模式。当概念模式发生改变时,由数据库管理员负责改变相应的映射关系,使外模式保持不变,也就没有必要修改应用程序,从而保证了数据的逻辑独立性。
·概念模式到内模式的映射:是指数据的全局逻辑结构与物理存储结构间的对应关系。当数据库的存储结构发生改变时,由数据库管理员负责改变相应的映射关系,使概念模式保持不变,从而保证了数据的物理独立性。