1.1 数据库系统
1.1.1 数据与数据处理
数据是存储在某一媒体上,对客观事物进行描述的物理符号。数据不仅包括数字、字母、汉字等文本形式,也包括图像、声音、视频等多媒体形式。
数据的概念包括内容和形式两个方面。数据的内容指所描述的客观事物的具体特性,即数据的值;数据形式是指存储数据内容的具体形式。例如,描述某人的出生日期可以使用“2000年6月25日”,也可以使用“2000/6/25”,采取这两种不同形式所表示的数据的值是相同的。
数据处理是对数据的采集、整理、存储、分类、计算、加工、检索和传输等一系列操作的总和。其目的是从大量原始的数据中,获得有价值的信息,作为人们行为和决策的依据。数据处理是将数据转化为信息的过程。数据是信息的载体,信息是经过加工的数据。例如,在班主任的成绩单中,记录着各位学生的学号、姓名、各科成绩,这些属于数据。由此计算出各位学生的总分,统计成绩排名情况,作为评定奖学金的依据,这就属于信息。
1.1.2 计算机数据管理
早期的计算机主要用于科学计算。随着计算机硬件技术、软件技术和计算机应用范围的不断发展,人们逐渐将计算机用于数据管理。计算机数据管理经历了3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。
1. 人工管理阶段
20世纪50年代中期以前,计算机硬件方面,外存储器只有纸带、卡片、磁带,没有像硬盘一样可以随机访问、直接存取的外部存储设备;软件方面,没有操作系统软件和数据管理软件。
此阶段的数据处理有以下特点。
(1)数据不保存。用户把应用程序和数据一起输入内存,通过应用程序对数据进行处理,输出处理结果。任务完成后,数据随着应用程序从内存一起释放。
(2)数据和程序不具有独立性。数据由应用程序自行管理。应用程序中不仅要规定数据的逻辑结构,还要阐明数据在存储器上的存储地址。当数据改变时,应用程序也要随之改变。
(3)数据不能共享。一个应用程序中的数据无法被其他应用程序所利用。程序和程序之间不能共享数据,因而产生大量重复的数据,称为数据冗余。
例1.1 图1.1所示的是两个C语言的计算机程序。程序一的功能是计算学生各科成绩的平均分,程序二的功能是计算并显示每门功课的平均分。这两个程序所要处理的数据作为数组存放在程序中。
图1.1 使用数组来处理数据的C语言程序
2. 文件系统阶段
20世纪50年代后期至60年代中后期,随着计算机在数据管理中的广泛应用,大量的数据存储、检索和维护成为紧迫的要求。硬件方面,可直接存取的磁盘成为主要外存,软件方面,出现了高级语言和操作系统。
文件系统(见图1.2)阶段的数据处理有以下特点。
图1.2 文件系统
(1)数据长期保存。数据项集合为记录,长期保存在磁盘的数据文件中,供用户反复调用和更新。
(2)程序与数据有了一定的独立性。应用程序和数据分别存储在程序文件和数据文件中,应用程序按文件名访问数据文件,不必关心数据在存储器上的位置、输入/输出方式。
(3)数据的独立性低。由于应用程序对数据的访问基于特定的结构和存取方法,当数据的逻辑结构发生改变时,必须修改相应的应用程序。
(4)数据的共享性差,存在数据冗余和数据的不一致。大多数情况下,一个应用程序对应一个数据文件。当不同的应用程序所处理的数据包含相同的数据项时,通常是建立各自的数据文件,从而产生大量的数据冗余。当一个数据文件的数据项被更新,而其他数据文件中相同的数据项没有被更新时,将造成数据的不一致。
例1.2 图1.3所示的是两个C语言的计算机程序。程序的功能与例1.1相同,但是程序所要处理的数据存放在数据文件score.txt和course.txt中,如图1.4所示。
图1.3 使用数组来处理数据的C语言程序
图1.4 记录学生成绩的数据文件和课程成绩的数据文件
3. 数据库系统阶段
20世纪60年代后期,大容量和快速存储的磁盘相继投入市场,为新型数据管理技术奠定了物质基础。此外,计算机管理的数据量急剧增长,多用户、多程序实现数据共享的要求日益增强。在这种情况下,文件系统的数据管理已经不能满足需求,数据库技术应运而生。
数据库系统(见图1.5)阶段的数据处理有以下特点。
(1)数据的共享性高,冗余度低。建立数据库时,以面向全局的观点组织数据库中的数据。数据可被多个用户、多个应用程序共享使用,大大减少数据冗余。
(2)采用特定的数据模型。数据库中的数据是以一定的逻辑结构存放的,这种结构由数据库管理系统所支持的数据模型来决定。目前流行的数据库管理系统大多建立在关系模型的基础上。
(3)数据独立性高。数据与应用程序之间彼此独立。当数据的存储格式、组织方法和逻辑结构发生改变时,不需要修改应用程序。
(4)统一的数据控制功能。数据库由数据库管理系统来统一管理,并提供对数据的并发性、完整性、安全性等控制功能。
图1.5 数据库系统
例1.3 图1.6所示的是存放成绩的数据库。在数据库管理系统中使用如图1.7所示的两个SQL语句,即可完成例1.1程序中所要求的计算学生的平均分和课程的平均分的功能。
图1.6 存放成绩的数据库
图1.7 计算学生的平均分和课程的平均分的查询语句
1.1.3 数据库系统的组成
数据库系统(DataBase System,DBS)是指引入数据库技术的计算机系统。它实现了有组织地、动态地存储大量相关数据,提供了数据处理和信息资源共享的便利手段。数据库系统通常由5部分组成:硬件系统、数据库、数据库管理系统、相关软件和各类人员,其层次示意图如图1.8所示。
图1.8 数据库系统层次示意图
1. 硬件系统
硬件系统主要指计算机硬件设备,包括CPU、内存、外存、输入/输出设备等。由于要运行操作系统、数据库管理系统的核心程序和应用程序,要求计算机有足够大的内存;同时,由于数据库、系统软件和应用软件都保存在外存中,对计算机的外存容量的要求也很高。此外,对于网络数据库系统,还需要有网络通信设备的支持。
2. 数据库集合
数据库(DataBase,DB)可直观地理解为数据的仓库。数据库是指存储在计算机外存中,结构化的相关数据的集合。它不仅包含了描述事物本身的数据,还包含了相关数据之间的联系。
数据库以文件的形式存储在外存中,用户通过数据库管理系统来统一管理和控制数据。
3. 数据库管理系统
数据库管理系统(DataBase Management System,DBMS)是对数据实行专门管理的系统软件,是数据库系统的核心。它在操作系统的基础上运行,方便用户建立、使用和维护数据库,提供数据的安全性和完整性等统一控制机制。
目前,广泛使用的大型数据库管理系统有Oracle、Sybase、DB2等,小型数据库管理系统有SQL Server、Visual FoxPro、Access等。
数据库管理系统主要功能如下。
(1)数据定义:DBMS提供数据定义语言(Data Definition Language,DDL),负责数据库对象的建立、修改和删除等。
(2)数据操纵:DBMS提供数据操纵语言(Data Manipulation Language,DML),实现数据的基本操作。例如,对表中数据的查询、插入、删除和修改。
(3)数据控制:包括安全性控制、完整性控制和并发性控制等。
安全性控制主要是通过授权机制实现,DBMS提供数据控制语言(Data Control Language,DCL),设置或者更改数据库用户的权限。在访问数据库时,由DBMS对用户的身份进行确认,只有具有指定权限的用户才能进行相应的操作。
完整性控制是保证数据库中数据的正确性和有效性。例如,百分制的成绩的值应该是0~100之间的数值,一旦在数据库中定义了这个约束性条件,在插入和修改成绩时,DBMS都会进行检查,保证不符合条件的数据不会存入数据库。
并发控制是指当多个用户同时对同一项数据进行操作时,DBMS采取一定的控制措施,防止数据的不一致。例如,两个终端的应用程序在同时购买车票,为避免将同号的车票卖给不同的用户,DBMS可以采取对数据加锁的方法,以保证当一个用户在存取该数据时其他用户不能修改此数据。
(4)数据库维护:包括数据库的备份和恢复,数据库的转换、数据库的性能监视和优化等。
4. 相关软件
除了数据库管理系统,数据库系统还必须有相关软件的支持,包括操作系统、数据库应用系统、数据库开发工具等。
数据库应用系统,是指开发人员结合各领域的具体需求,利用数据库系统资源,使用开发工具所开发的给一般用户使用的应用软件,如图书管理系统、学籍管理系统、商品进销存系统等。
数据库开发工具是指开发人员编写数据库应用系统所使用的软件平台。通常可分为两类:一类是基于客户机/服务器模式(C/S)的开发工具,如Visual Basic、Visual C++、Delphi等,Visual FoxPro本身也可作为开发工具;另一类是基于浏览器/服务器模式(B/S)的开发工具,如ASP、JSP、PHP等。
C/S模式如图1.9所示,在服务器结点存放数据及执行DBMS功能,客户机安装应用系统。客户端的用户请求被传送到服务器,服务器进行处理后,将处理结果返回给用户。
图1.9 C/S模式
对于不需要共享使用的数据库系统,通常将数据库、DBMS、数据库应用系统装在一台计算机上,由个人用户独占使用数据。
随着因特网的广泛使用,B/S模式得到了广泛的应用,如图1.10所示。客户端仅安装浏览器软件,用户通过URL向Web服务器发出请求,Web服务器运行脚本程序,向数据库服务器发出数据请求。数据库服务器执行处理后,将结果返回给Web服务器。Web服务器根据结果产生网页文件,客户端接收到网页文件后,在浏览器中显示出来。
图1.10 B/S模式
5. 各类人员
数据库系统中还包括设计、建立、管理、使用数据库的各类人员。
(1)数据库管理员(Database Administrator,DBA)。数据库管理员是负责全面管理和实施数据库控制与维护的技术人员,他要参与数据库的规划、设计和建立,负责数据库管理系统的安装和升级;规划和实施对数据库的备份和还原;规划和实施数据库的安全性,控制和监视用户对数据库的存取访问;监督和记录数据库的操作状况,进行性能分析,实施系统优化。
(2)开发人员。开发人员负责应用系统的需求分析,设计应用系统的功能,使用开发工具实现应用系统。
(3)最终用户。最终用户只需通过执行数据库应用系统来处理数据,不需要了解数据库的设计、维护和管理等问题。