1.1 数据与数据管理技术
数据库是数据管理的主要技术,是计算机科学的重要分支。对于一个国家来说,数据库的建设规模、数据库信息量的大小和使用频度已成为衡量这个国家信息化程度的重要标志。数据库变得越来越重要,而且无处不在,比如今日头条等网络新闻的存储、QQ好友信息同步、求职信息发布、选课信息呈现、电子商务平台的个性化信息的推荐等,都离不开数据库。
因此,数据库已经成为现代信息系统不可分离的重要组成部分。具有数百万甚至数十亿字节信息的数据库已经普遍存在于金融、教育、工业、农业、服务业和政府部门等诸多行业部门的信息系统中,是计算机领域中发展最快的技术之一。
数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。这样既便于数据的集中管理,又有利于应用程序的研制和维护,提高了数据的利用率和相容性,目前的大数据技术提高了决策的可靠性。
1.1.1 数据库系统的基本概念
1.数据与信息
现代社会是信息的社会,信息正在以惊人的速度增长。因此,如何有效地组织和利用它们已成为急需解决的问题。引入数据库技术的目的就是为了高效地管理及共享大量的信息,而信息与数据是分不开的。
数据是描述事物的符号记录,也是数据库中存储、用户操纵的基本对象。数据不仅是数值,而且可以是文字、图形、动画、声音、视频等。数据是信息的符号表示。例如,可以这样来描述某高校计算机系一位同学的基本信息:李梅,女,1995年6月生,安徽省阜阳市人,2014年入学。在计算机中描述如下:(李梅,女,1995-06,安徽省阜阳市,计算机系,2014),即把学生的姓名、性别、出生年月、出生地、所在院系、入学时间等组织在一起,组成一条记录。这些符号被赋予了特定的语义,具体描述了一条信息,具有了传递信息的功能。数据有如下特性。
1)数据是有“型”和“值”之分。数据的型是指数据的结构,数据的值是指数据的具体取值。如表1-1中的课程信息是由“课程编号”“课程名称”“学分”“学时”“教师编号”等数据项构成的。第一行就可以看作课程数据的型,第二行开始就是课程的信息,即课程型的值。
表1-1 课程信息表
从表1-1可以看出,数据项“教师编号”还可以与教师信息表中的教师编号建立联系。因此数据的型不仅可以表示数据内部的构成,还能表示数据之间的联系。
2)数据有定性表示和定量表示之分。比如一个人的健康情况可以用“良好”和“一般”来表示,而学生的成绩可以用数字表示。
3)数据受数据类型和取值范围的约束。数据类型是针对不同的应用场合设计的数据约束。数据类型不同,则数据的表示形式、存储方式以及能进行的操作运算也各不相同。比如一个人的年龄就必须用整数表示。在使用计算机处理信息时,就应该为数据选择合适的类型。常见数据类型有字符型、数值型、日期型等。
4)数据具有载体和多种表现形式。数据的载体可以是纸张、硬盘等,也可以是报表、语音以及不同语言符号表示。
信息是有一定含义的、经过加工处理的、对决策有价值的数据。例如,农民在实际的生产过程中,从生产规划、种植前准备、种植期管理,到采收、销售等环节,可以从“天时、地利、人和”三方面理解数据收集。“天时”可以指实时的气象数据,如降水、温度、风力、湿度等;“地利”可以指动静态的土壤数据,如土壤水分、土壤温度,作物品种信息、作物病虫害信息等;“人和”则是从人力资源给出的信息,如农资产品使用、农产品加工和流通渠道、农产品市场价格等。通过整合农民机械化农场设备的种植和产量数据,以及气象、种植区划等多样数据,可以得到较为详尽的种植决策信息,精准化农事生产,帮助农民提高产量和利润。利用信息通过对农业生产全过程的精准化、智能化管理,可以极大限度地减少化肥、水资源、农药等投入,提高作业质量,使农业经营变得有序化,从而为转向规模化经营打下良好基础。因此,信息是对现实世界中存在的客观实体、现象、联系进行描述的有特定语义的数据,它是人类共享的一切知识及客观加工提炼出的各种消息的总和。
从以上可以看出,信息和数据既有联系又有区别。在数据库领域,通常处理的是像学生记录这样的数据,它是有结构的,称之为结构化数据。正因为如此,通常对数据和信息不作严格区分。
信息与数据的关系可以归纳为:数据是信息的载体,信息是数据的内涵。即数据是信息的符号表示,而信息通过数据描述,又是数据语义的解释。
数据处理又称为信息处理,是指对各种形式的数据进行收集、存储、传播和加工直至产生新信息输出的全过程。数据处理的目的一般有两个:一是借助计算机科学地保存和管理大量复杂的数据,以方便而充分地利用这些宝贵的信息资源;其二是从大量已知的表示某些信息的原始数据出发,抽取、导出对人们有价值的、新的信息。例如,为了统计每个班的男生和女生的人数,首先要获取所有学生的基本数据,如图1-1左表所示,通过数据处理,产生图1-1右表所示的汇总信息,从中可以看到,1701和1703两个班的男生人数均为两人,女生人数均为一人。
图1-1 数据处理示例
数据管理是数据处理的中心问题,是指数据的收集、整理、组织、存储、查询、维护和传送等各种操作,也是数据处理的基本环节,是数据处理必有的共性部分。因此,对数据管理应当加以突出,集中精力开发出通用且方便好用的软件,把数据有效地管理起来,以便最大限度地减轻数据消费者的负担。
总之,数据处理和数据管理是相互联系的,数据管理中各种操作都是数据处理业务必不可少的基本环节,数据管理技术的好坏,直接影响到数据处理的效率。
数据技术所研究的问题是如何科学组织和存储数据,如何高效地处理数据以获取其内在信息。数据库技术正是针对这一目标逐渐完善起来的一门计算机软件技术。
2.数据库
“数据库”这个名词起源于20世纪中叶,当时美军为作战指挥需要建立起了一个高级军事情报基地,把收集到的各种情报存储在计算机中,并称之为“数据库”。起初人们只是简单地将数据库看作是一个电子文件柜、一个存储数据的仓库或容器。后来随着数据库技术的产生,人们引申并沿用了该名词,给“数据库”这个名词赋予了更深层的含义。
那么,数据库到底是什么呢?可以简单归纳为:数据库(DataBase,DB)是按照一定结构组织并长期存储在计算机内的、可共享的大量数据的集合。概括起来说,数据库具有永久存储、有组织和可共享三个基本特点。关于数据库的概念,请注意以下5点。
1)数据库中的数据是按照一定的结构——数据模型来进行组织的,即数据间有一定的联系以及数据有语义解释。数据与对数据的解释是密不可分的。例如,2017,若描述一个学生的入学年份表示2017年,若描述山的高度则表示2017米。
2)数据库的存储介质通常是硬盘,其他介质包括光盘、U盘等。这些数据存储介质可大量地、长期地存储及高效地使用数据。
3)数据库中的数据能为众多用户所共享,能方便地为不同的应用服务,比如资讯平台。
4)数据库是一个有机的数据集成体,它由多种应用的数据集成而来,故具有较少的冗余、较高的数据独立性(即数据与程序间的互不依赖性)。
5)数据库由用户数据库和系统数据库(即数据字典,对数据库结构的描述)两大部分组成。数据字典是关于系统数据的数据库,通过它能有效地控制和管理用户数据库。
3.数据库管理系统
数据库管理系统(Database Management System,DBMS)安装于操作系统之上,是一个管理、控制数据库中各种数据库对象的系统软件。数据库用户无法直接通过操作系统获取数据库文件中的具体内容。数据库管理系统通过调用操作系统的服务,比如进程管理、内存管理、设备管理以及文件管理等服务,为数据库用户提供管理、控制数据库中各种数据库对象、数据库文件的接口,实现对数据的管理和维护。
数据库管理系统通常会选择某种“数学模型”存储、组织、管理数据库中的数据,常用的数学模型包括“层次模型”“网状模型”“关系模型”“面向对象模型”等。基于“关系模型”的数据库管理系统称为关系数据库管理系统(Relational Database Management System,RDBMS)。随着关系数据库管理系统的日臻完善,目前关系数据库管理系统已占据主导地位。
通过关系数据库管理系统,数据库开发人员可以轻而易举地创建关系数据库容器,并在该数据库容器中创建各种数据库对象(表、索引、视图、存储过程、触发器、函数等)以及维护各种数据库对象。
数据库管理系统的目标是让用户能够更方便、更有效、更可靠地建立数据库和使用数据库中的信息资源。数据库管理系统不是应用软件,它不能直接用于诸如工资管理、人事管理、资料管理等事务管理工作,但数据库管理系统能够为事务管理提供技术和方法、应用系统的设计平台和设计工具,使相关的事务管理软件很容易设计。也就是说,数据库管理系统是为设计数据管理应用项目提供的计算机软件,利用数据库管理系统设计事务管理系统可以达到事半功倍的效果。
DBMS主要作用是在数据库建立、运行和维护时对数据库进行统一的管理控制和提供数据服务,可以从以下4个方面理解。
1)从操作系统角度。DBMS是使用者,它建立在操作系统的基础之上,需要操作系统提供底层服务,如创建进程、读写磁盘文件、管理CPU和内存等。
2)从数据库角度。DBMS是管理者,是数据库系统的核心,是为数据库的建立、使用和维护而配置的系统软件,负责对数据库进行统一的管理和控制。
3)从用户角度。DBMS是工具或桥梁,是位于操作系统与用户之间的一层数据管理软件。用户发出的或应用程序中的各种操作数据库的命令,都要通过它来执行。
4)产业化的DBMS称为数据库产品。目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟。主要有Oracle公司的Oracle和MySQL,IBM公司的DB2,SYBASE公司的Sybase,Microsoft公司的SQL Server、Access和Visual FoxPro等。
(1)Oracle
Oracle世界上第一个开放式商品化关系型数据库管理系统,于1983年推出。它采用标准的结构化查询语言(Structured Query Language,SQL),支持多种数据类型,提供面向对象存储的数据支持,具有第四代语言开发工具,支持UNIX、Windows NT、OS/2、Novell等多种平台。除此之外,它还具有很好的并行处理功能。Oracle产品主要由Oracle服务器产品、Oracle开发工具、Oracle应用软件组成,也有基于PC的数据库产品,主要满足对银行、金融、保险等企业、事业单位开发大型数据库的需求。
Oracle数据库最新版本为Oracle Database 19c。
(2)DB2
DB2是IBM公司研制出的一种关系型数据库管理系统,分别在不同的操作系统平台上服务。DB2是基于SQL的关系型数据库产品。20世纪80年代初期DB2的重点放在大型的主机平台上。到20世纪90年代初,DB2发展到中型机、小型机以及PC平台,DB2适用于各种硬件与软件平台,各种平台上的DB2有共同的应用程序接口,运行在一种平台上的程序可以很容易地移植到其他平台。DB2的用户主要分布在金融、商业、铁路、航空、医院、旅游等各个领域,以金融系统的应用最为突出。
(3)Sybase
Sybase是美国SYBASE公司推出的客户机/服务器(C/S)模式的关系数据库系统,也是世界上第一个真正的基于客户机/服务器体系结构的关系数据库管理系统。Sybase数据库将用户分为四种不同的类型,即系统管理员、数据库管理员、数据库对象管理员和其他一般用户。系统管理员可访问所有数据库和数据库对象。Sybase产品主要由服务器产品Sybase SQL Server、客户产品Sybase SQL Toolset和接口软件Sybase Client/Server Interface组成,还有著名的数据库应用开发工具PowerBuilder。
(4)MySQL
MySQL是目前最流行的关系型数据库管理系统,由瑞典MySQL AB(AB,在瑞典语中表示“股份公司”,是“aktiebolag”的首字母缩写)公司开发,目前属于Oracle公司。在Web应用方面MySQL是最好的RDBMS应用软件之一。目前最新的版本是5.7,本书也将以此版本作为讲述对象。
MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源代码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
(5)SQL Server
SQL Server是美国微软公司开发的一个关系数据库管理系统,采用客户/服务器体系结构,以T-SQL作为其数据库查询和编程语言。SQL Server采用二级安全验证、登录验证以及数据库用户许可验证等安全模式。SQL Server支持两种身份验证模式:Windows NT身份验证和SQL Server身份验证,权限分配非常灵活。SQL Server可以在不同的Windows操作平台上运行,并支持多种不同类型的网络协议,如TCP/IP、IPX/SPX等。近年来,SQL Server不断更新版本,最新版本为SQL Server 2017。
(6)PostgreSQL
PostgreSQL是一个开放源代码的关系型数据库管理系统,它是在加州大学伯克利分校计算机系开发的POSTGRES基础上发展起来的。目前,PostgreSQL数据库已经是个非常优秀的开源项目,很多大型网站都使用PostgreSQL数据库来存储数据。
PostgreSQL支持大部分SQL标准,并且提供了许多其他特性,如复杂查询、外键、触发器、视图、事务完整性和MVCC。同样,PostgreSQL可以用许多方法扩展,例如,通过增加新的数据类型、函数、操作符、聚集函数和索引方法等。
(7)Access
1992年,Microsoft公司首次发布Access。Access是Microsoft公司推出的基于Windows的桌面关系数据库管理系统(RDBMS),是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化,为建立功能完善的数库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的功能。由于Access只是一种桌面数据库,所以它适合数据量少(记录数不多和数据库文件不大)的应用。目前最新版本为Access 2019。
(8)Visual FoxPro
Visual FoxPro简称VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。Visual FoxPro源于美国Fox Software公司推出的数据库产品FoxBase,在DOS上运行,与xBase系列相容。FoxPro原来是FoxBase的加强版,最高版本曾出过2.6。之后,Fox Software被微软收购,加以发展,使其可以在Windows上运行,并且更名为Visual FoxPro。目前最新版为Visual FoxPro 9.0。在桌面型数据库应用中,Visual FoxPro处理速度极快,是日常工作中的得力助手。
注:Visual Foxpro、Access和SQL Server都是Microsoft公司的产品,只能在Microsoft公司Windows系列的操作系统上运行。而Oracle、DB2、MySQL和PostgreSQL等数据库是可以跨平台的,它们不仅可以在Windows系列的操作系统上运行,还可以在其他操作系统(例如UNIX、Linux和Max OS)上运行。
DBMS主要功能包括以下几个方面。
1)数据定义功能。DBMS提供数据定义语言(Data Definition Language,DDL),用户通过它可以方便地对数据库中的数据对象进行定义,比如数据库表结构的定义。
2)数据操纵功能。DBMS还提供数据操纵语言(Data Manipulation Language,DML),用户可以使用DML操纵数据以实现对数据库的基本操作,如查询、插入、删除和修改等。
3)数据库的运行管理。数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。
4)数据库的建立和维护功能。数据库的建立是指对数据库各种数据的组织、存储、输入、转换等,包括以何种文件结构和存储方式组织数据,如何实现数据之间的联系等。
数据库的维护是指通过对数据的并发控制、完整性控制和安全性保护等策略,以保证数据的安全性和完整性,并且在系统发生故障后能及时回复到正确的状态。
数据库管理系统是数据库系统的一个重要组成部分。
4.数据库系统
数据库系统(DataBase System,DBS)是指计算机引入数据库后的系统,它能够有组织地、动态地存储大量的数据,提供数据处理和数据共享机制。一般由硬件系统、软件系统、数据库和人员组成。由于数据库的建立、使用和维护等工作只靠一个DBMS是不够的,还需要专门的专业人员协助完成。DBS其简化表示为:
DBS=计算机系统(硬件、软件平台、人)+DBMS+DB
数据库系统包含了数据库、DBMS、软件平台与硬件支撑环境及各类人员;DBMS在操作系统(Operating System,OS)的支持下,对数据库进行管理与维护,并提供用户对数据库的操作接口。一般在不引起混淆的情况下,常常把数据库系统直接简称为数据库。它们之间的关系如图1-2所示。
图1-2 DB、DBMS、DBS之间的关系
5.信息系统
信息系统(lnformation System,IS)是由计算机硬件、网络和通信设备、计算机软件、信息资源、信息用户等组成的以处理信息流为目的的人机一体化系统。它是以提供信息服务为主要目的数据密集型、人机交互的计算机应用系统,具有对信息进行加工处理、存储和传递,同时具有预测、控制和决策等功能。
信息系统的5个基本功能是信息的输入、存储、处理、输出和控制。一个完整的信息系统应包括控制与自动化系统、辅助决策系统、数据库(含知识库)系统以及与外界交换信息的接口等,它是一个综合、动态的管理系统。
从信息系统的发展和系统特点来看,可大致分为数据处理系统、管理信息系统、决策支持系统、虚拟现实系统、专家或智能系统等类型。无论是哪种类型的系统都需要基础数据库及其数据管理的支持,故数据库系统是信息系统的重要基石。
不同的程序设计语言会采用不同的数据库访问技术。主要的数据库访问技术有ODBC、JDBC、ADO. NET、PDO等。
1.1.2 数据管理技术的发展
目前,在计算机的各类应用程序中,用于数据处理的约占80%。数据处理是指对数据进行收集、管理、加工、传播等一系列工作。其中,数据管理是研究如何对数据分类、组织、编码、存储、检索和维护的一门技术,其优劣直接影响数据处理的效率,因此它是数据处理的核心。数据库技术是应数据管理的需求而产生的,而数据管理技术又是随着计算机技术的发展而完善的。数据管理技术经历了人工管理、文件系统管理、数据库系统管理阶段,随着新技术的发展,其研究与应用已迈向高级数据库系统阶段。
1.人工管理
人工管理阶段是计算机数据管理的初级阶段。当时计算机主要用于科学计算,数据量少、不能保存。数据面向应用,多个应用涉及的数据相同时,由于用户各自定义自己的数据,无法共享,因此存在大量的数据冗余。此外,当时没有专门的软件对数据进行管理,程序员在设计程序时不仅要规定数据的逻辑结构,而且还要设计其物理结构(即数据的存储地址、存取方法、输入输出方式等),这样使得程序与数据相互依赖、密切相关(即数据独立性差),一旦数据的存储地址、存储方式稍有改变,就必须修改相应的程序。
人工管理阶段程序与数据的关系如图1-3所示。
图1-3 人工管理阶段程序与数据间关系
人工管理阶段的主要问题如下。
1)无外存或只有磁带外存,输入输出设备简单。数据不能长期保存。
2)无操作系统,无文件管理系统,无管理数据的软件。数据不能共享,冗余度极大。
3)数据是程序的组成部分,数据不独立,修改数据必须修改程序。处理时,数据随程序一起送入内存,用完后全部撤出计算机,不能保留。数据大量重复,不能共享。数据独立性差。
4)文件系统尚未出现,程序员必须自行设计数据的组织方式。
2.文件系统管理
到了20世纪50年代末,计算机不仅用于科学计算,而且大量用于数据管理,同时磁盘、磁鼓等大容量直接存储设备的出现,可以用来存储大量数据。操作系统中的文件系统就是专门用来管理所存储数据的软件模块。主要表现在以下几个方面。
1)外存有了很大的发展,除磁带机外,还出现了大容量的硬盘和灵活的软磁盘。输入、输出能力大大加强。
2)系统软件方面,出现了操作系统、文件管理系统和多用户的分时系统;出现了专用于商业事务管理的高级语言COBOL,它主要用于文件处理,也可以进行非数值处理。
3)数据管理方面,实现了数据对程序的一定的独立性,数据不再是程序的组成部分,修改数据不必修改程序,数据有结构,被组织到文件内,存储在磁带、磁盘上,可以反复使用和保存。文件逻辑结构向存储结构的转换由软件系统自动完成,减轻了系统开发和维护工作。
4)文件类型已经多样化。由于有了直接存取设备,就有了索引文件、链接文件、直接存取文件等,而且能对排序文件进行多码检索。
5)数据存取以记录为单位。
这一阶段数据管理的特点有:数据可以长期保存;对文件进行统一管理,实现了按名存取,文件系统实现了一定程度的数据共享(文件部分相同,则难以共享);文件的逻辑结与物理结构分开,数据在存储器上的物理位置、存储方式等的改变不会影响用户程序(即物理独立性好),但一旦数据的逻辑结构改变,必须修改文件结构的定义,修改应用程序(即逻辑独立性差)。文件系统中程序与数据的关系如图1-4所示。此外,文件是为某一特定应用服务的,难以在已有数据上扩充新的应用,文件之间相对独立,有较多的数据冗余,应用设计与编程复杂。
图1-4 文件系统管理阶段程序与数据间关系
文件系统管理的主要问题如下。
1)逻辑独立性差。文件是为某一特定应用服务的,系统不易扩充。一旦数据逻辑结构改变,就必须修改文件结构的定义及应用程序;应用程序的变化也将影响文件的结构。因而文件仍不能反映现实世界事物之间的联系。
2)数据冗余度较大。文件系统中文件基本上对应于某个应用程序,数据仍是面向应用的,不同应用程序所需数据有相同部分时,仍需建立各自的数据文件,不能共享,数据维护困难,一致性难以保证。
3)文件应用编程复杂。
3.数据库系统管理
随着数据量急剧增加,数据管理的规模日趋增大,数据操作与管理日益复杂,文件系统管理已不能适应需求。20世纪60年代末发生了对数据库技术有着奠基作用的两件大事:1968年美国的IBM公司推出了世界上第一个层次数据库管理系统;1970年美国IBM公司的高级研究员E. F. Codd连续发表论文,提出了关系数据库的理论。这些标志着以数据库系统为手段的数据管理阶段的开始。
数据库系统对数据的管理方式与文件系统不同,它把所有应用程序中使用的数据汇集起来,按照一定结构组织集成,在DBMS软件的统一监督和管理下使用,多个用户、多种应用可充分共享。数据库系统中程序与数据之间的关系如图1-5所示。数据库管理技术的出现为用户提供了更广泛的数据共享和更高的数据独立性,并为用户提供了方便的操作使用接口。
图1-5 数据库系统中程序与数据的关系
现在,数据库系统的管理技术快速发展,正在进入管理非结构化数据、海量数据、知识信息,面向物联网、云计算等新的应用与服务为主要特征的高级数据库系统阶段。数据库系统管理正向着综合、集成、智能一体化的数据库服务系统时代迈进。
数据管理经历的各个阶段有自己的背景及特点,数据管理技术也在发展中不断地完善,其3个阶段的比较见表1-2。
表1-2 数据管理3个阶段的比较
数据库的上述特点使信息系统的研制,从围绕加工数据的以程序为中心转移到围绕共享的数据库来进行,实现了数据的集中管理,提高了数据的利用率和一致性,从而能更好地为决策服务。