1.1 数据库系统概念
数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、数据库应用系统、用户(其中包括数据库管理员等)构成,如图1-1所示。
图1-1 数据库系统的组成
数据库的作用是帮助用户更好地管理事务,它是相互联系的表和其他结构的集合。
数据库管理系统(DataBase Management System,DBMS)是用于创建、处理和管理数据库的计算机系统软件。
数据库应用系统包括为特定应用环境建立的数据库、开发各类应用程序及编写的文档资料,它们是一个有机整体。数据库应用系统涉及到各个方面,比如高考志愿填报系统、学生选课系统等。通过运行数据库应用系统可以实现对数据库中数据的添加、删除、修改、查询等操作。
用户是指使用数据库应用程序记录信息,并使用程序界面读取、录入和查询数据的人。
1.1.1 数据库
1.信息与数据
为了了解世界,与世界交流,人们需要描述各种事物。用自然语言描述虽然很直接,但过于烦琐,不利于用计算机表达。为此,人们常常只抽取那些感兴趣的事物特征或属性来描述事物,将描述事物的符号记录为数据,数据是数据库中存储的基本对象,而信息是从数据中获得的有意义的内容。数据在大多数人头脑中的直观反映就是数字(1、2、3……)。实际上数字只是数据的一种最简单的形式,是数据的一种传统和狭义的理解。广义的理解,数据的种类很多,文本(Text)、图形(Graph)、图像(Image)、音频(Audio)、视频(Video)、学生的档案记录、商品的销售情况等都是数据。通常将描述事物的符号记录称为数据。数据有多种形式,它们都可以经过数字化后保存在计算机中。在日常生活中,人们可以直接用自然语言(如汉语)来描述事物。例如,可以这样来描述某高校计算机系一位同学的基本信息:李梅,女,1995年6月生,安徽省阜阳市人,2014年入学。在计算机中描述如下:
(李梅,女,1995-06,安徽省阜阳市,计算机系,2014)
即把学生的姓名、性别、出生年月、出生地、所在院系、入学时间等组织在一起,组成一条记录,描述了李梅同学的信息。因此将从数据中获得的有意义的内容称为信息。这里的学生记录就是描述学生的数据。这样的数据是有结构的表述数据语义。记录是计算机中表示和存储数据的一种格式或一种方法。
数据和信息之间是相互联系的。数据是反映客观事物属性的记录,是信息的具体表现形式。数据经过加工处理后,就成为信息;而信息需要经过数字化转变成数据才能存储和传输。
2.数据库
数据库可以形象地理解为存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定格式存放的。在科学技术飞速发展的今天,数据量急剧增加,海量数据涌现,过去人们把数据存放在文件柜中,现在人们借助计算机和数据库技术科学地保存和管理大量的复杂的数据,以便能方便而充分地利用这些宝贵的信息资源。
严格地讲,数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。概括地讲,数据库数据具有永久存储、有组织和可共享三个特点。
3.数据处理与数据管理
数据管理是数据处理的基础工作,数据库是数据管理的技术和手段。数据库中的数据具有整体性和共享性。
数据处理也称信息处理,就是将数据转换为信息的过程。数据处理的内容主要包括数据的收集、整理、存储、加工、分类、维护、排序、检索和传输等一系列活动。数据处理的目的是从大量的数据中,根据数据自身的规律及其相互关系,通过分析、归纳、推理等科学的方法,利用计算机技术、数据库技术等手段,提取有效的信息资源,为进一步分析、管理和决策提供依据。
所谓数据管理,是指对各种数据进行分类、组织、编码、存储、检索和维护。发展到现在,数据管理技术经历了三个阶段,分别为人工管理阶段、文件系统阶段和数据库系统阶段。
(1)人工管理阶段
20世纪50年代中期以前,由于计算机硬件还没有像现在这样的磁盘、软件没有专门管理数据的软件,所以,计算机只局限于科学技术方面,数据则由计算和处理它的程序自行携带。该时期被称为人工管理阶段。
人工管理阶段的特点如下:
● 数据不能长期保存。
● 程序本身管理数据。
● 数据不能共享。
● 数据不具有独立性。
(2)文件系统阶段
随着技术的发展,在20世纪50年代后期到20世纪60年代中期,计算机不仅应用于科学技术,而且开始用于管理。在该时期由于计算机硬件出现了磁盘,计算机软件出现了高级语言和操作系统,因此,程序和数据有了一定的独立性,出现了程序文件和数据文件,这就是所谓的文件系统阶段。
文件系统阶段的特点如下:
● 数据可以长期保存。
● 数据由文件系统来管理。
● 数据冗余大,共享性差。
● 数据独立性差。
(3)数据库系统阶段
随着网络技术的发展,计算机软、硬件功能的进步,在20世纪60年代后期,计算机可以管理规模巨大的数据,这时如果计算机还使用文件系统来管理数据,则远远不能满足当时各种应用需求,于是出现了数据库技术,特别是关系型数据库技术。该阶段就是所谓的数据库系统阶段。
数据库系统阶段的特点如下:
● 数据实现结构化。
● 数据实现了共享性。
● 数据独立性强。
● 数据粒度变小。
注意:数据管理与数据库管理区别是,数据管理是应用于整个组织的功能,它是一个面向管理的功能,主要关系一个组织某单位数据的隐私和安全问题;而数据库管理是一个技术性更强的功能,专用于特定的数据库,包括处理该数据库的应用。
1.1.2 数据库管理系统
1.数据库管理系统(DBMS)的定义
数据库管理系统(Database Management System,DBMS)安装于操作系统之上,是一个管理、控制数据库中各种数据库对象的系统软件,如图1-2所示。数据库用户无法直接通过操作系统获取数据库文件中的具体内容;数据库管理系统通过调用操作系统的服务,如进程管理、内存管理、设备管理及文件管理等服务,为数据库用户提供管理、控制数据库中各种数据库对象、数据库文件的接口,实现对数据的管理和维护。
图1-2 数据库管理系统与操作系统之间关系图
数据库管理系统通常会选择某种“数学模型”存储、组织、管理数据库中的数据,常用的数学模型包括“层次模型”“网状模型”“关系模型”及“面向对象模型”等。基于“关系模型”的数据库管理系统称为关系数据库管理系统(Relation-al Database Management System,RDBMS)。随着关系数据库管理系统的日臻完善,目前关系数据库管理系统已占据主导地位。
通过关系数据库管理系统,数据库开发人员可以轻而易举地创建关系数据库容器,并在该数据库容器中创建各种数据库对象(表、索引、视图、存储过程、触发器、函数等),以及维护各种数据库对象。
数据库管理系统的目标是让用户能够更方便、更有效、更可靠地建立数据库和使用数据库中的信息资源。数据库管理系统不是应用软件,它不能直接用于诸如工资管理、人事管理资料管理等事务管理工作,但数据库管理系统能够为事务管理提供技术和方法、应用系统的设计平台和设计工具,使相关的事务管理软件很容易设计。也就是说,数据库管理系统是为设计数据管理应用项目提供的计算机软件,利用数据库管理系统设计事务管理系统可以达到事半功倍的效果。
数据库管理系统与数据库应用系统的区别如下:
1)前者是提供数据库管理的计算机系统软件,后者是实现某种具体信息管理功能的计算机应用软件。
2)前者是为后者提供了数据库的定义、存储和查询方法,后者是通过前者管理数据库。
3)前者及其数据库安装在服务器端,它们之间通过数据访问技术进行数据通信。后者安装在客户端,由专门的开发系统或语言设计。
2.数据库管理系统(DBMS)的主要功能
数据库管理系统是位于用户与操作系统之间的一层数据管理软件,和操作系统一样是计算机的基础软件,也是一个大型复杂的软件系统。
其主要功能包括如下几个方面:
(1)数据库的建立和维护
数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监听、分析功能等。这些功能通常是由一些实用程序或管理工具完成的。
(2)数据定义功能
DBMS提供数据定义语言(Data Definition Language,DDL),用户通过它可以方便地对数据库中的数据对象进行定义。
(3)数据组织、存储和管理
DBMS要分类组织、存储和管理各种信息,包括数据字典、用户数据、数据的存取路径等。要确定以何种文件结构和存取方式在存储器上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率和方便存取,提供多种存取方法(如索引查找、Hash查找、顺序查找等)来提高效率。
(4)数据操作功能
DBMS还提供了数据操作语言(Data Manipulation Language,DML),用户可以使用DML操作数据,实现对数据库的基本操作,如查询、插入、删除和修改等。
(5)数据库事务管理和运行管理
数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。
(6)其他功能
包括DBMS与网络中其他软件系统的通信功能;一个DBMS和另一个DBMS或文件系统的数据的转换功能;异构数据之间的互访和互操作功能等。
3.常见的关系型数据库管理系统
目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟。主要有Oracle公司的Oracle和MySQL,IBM公司的DB2,SYBASE公司的Sybase,Microsoft公司的SQL Server、Access和Visual FoxPro等。
(1)Oracle
Oracle是美国Oracle公司开发的一种适用于大型、中型和微型计算机的关系数据库管理系统。提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(Cli-ent/Server)或B/S体系结构的数据库之一。Oracle数据库由三种类型的文件组成,即数据库文件、日志文件和控制文件。Oracle自动建立并更新一组数据字典,用来记录用户名、数据库元素及用户权限等信息。DBA可通过数据字典来监视Oracle的状态,并帮助用户完成其应用。Oracle本身也是根据数据字典来管理和控制整个数据库的。
Oracle数据库最新版本为Oracle Database12c。
(2)DB2
DB2是IBM公司研制出的一种关系型数据库管理系统,分别在不同的操作系统平台上服务。DB2主要应用于大型应用系统,具有较好的可伸缩性,可以支持从大型机到单用户环境,应用于OS/2、Windows等平台下。DB2提供了高层次的数据利用性、完整性、安全性和可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2还采用了数据分级技术,能够使大型数据很方便地下载到LAN数据库服务器,使C/S用户和基于LAN的应用程序可以访问大型数据,并且使数据库本地化及远程连接透明化。
(3)Sybase
Sybase是美国SYBASE公司推出的客户机/服务器(C/S)模式的关系数据库系统,也是世界上第一个真正的基于客户机/服务器架构的关系数据库管理系统。Sybase数据库将用户分为四种不同的类型,即系统管理员、数据库管理员、数据库对象管理员和其他一般用户。系统管理员可访问所有数据库和数据库对象。
(4)MySQL
MySQL是目前最流行的关系型数据库管理系统之一,由瑞典MySQLAB(AB,在瑞典语中表示“股份公司”,是“aktiebolag”的首字母缩写)公司开发,目前属于Oracle公司。在Web应用方面,MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。目前最新的版本是5.6,本书也将以此版本作为讲述对象。
MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
(5)SQL Server
SQL Server是美国微软公司开发的一个关系数据库管理系统,采用客户/服务器体系结构,以T-SQL作为其数据库查询和编程语言。SQL Server采用二级安全验证、登录验证以及数据库用户许可验证等安全模式。SQL Server支持两种身份验证模式:WindowsNT身份验证和SQL Server身份验证,权限分配非常灵活。SQL Server可以在不同的Windows操作平台上运行,并支持多种不同类型的网络协议,如TCP/IP、IPX/SPX等。近年来,SQL Server不断更新版本,最新版本为SQL Server2014。
(6)PostgreSQL
PostgreSQL是一个开放源代码的关系型数据库管理系统,它是在加州大学伯克利分校计算机系开发的POSTGRES基础上发展起来的。目前,PostgreSQL数据库已经是一个非常优秀的开源项目,很多大型网站都使用PostgreSQL数据库来存储数据。
PostgreSQL支持大部分SQL标准,并且提供了许多其他特性,如复杂查询、外键、触发器、视图、事务完整性和MVCC。同样,PostgreSQL可以用许多方法扩展,例如,通过增加新的数据类型、函数、操作符、聚集函数和索引方法等。
(7)Access
1992年,Microsoft公司首次发布了Access。Access是Microsoft公司推出的基于Windows的桌面关系数据库管理系统(RDBMS),是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化,为建立功能完善的数库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的功能。由于Access只是一种桌面数据库,所以它适合数据量少(记录数不多和数据库文件不大)的应用。目前最新版本为Access 2013。
(8)Visual FoxPro
Visual FoxPro简称VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。Visual FoxPro源于美国Fox Software公司推出的数据库产品FoxBase,在DOS上运行,与xBase系列相容。FoxPro原来是FoxBase的加强版,最高版本曾出过2.6。之后,Fox Software被微软收购,加以发展,使其可以在Windows上运行,并且更名为Visual Fox-Pro。目前最新版为Visual FoxPro 9.0。在桌面型数据库应用中,处理速度极快,是日常工作中的得力助手。
注:Visual FoxPro、Access和SQL Server都是Microsoft公司的产品,只能在Microsoft公司Windows系列的操作系统上运行。而Oracle、DB2、MySQL和PostgreSQL等数据库是可以跨平台的,它们不仅可以在Windows系列的操作系统上运行,还可以在其他操作系统(例如UNIX、Linux和Max OS)上运行。
1.1.3 数据库管理员
数据库管理员(DataBase Administrator,DBA)是负责管理和维护数据库服务器的人。数据库管理员负责全面管理和控制数据库系统。
在数据库系统环境下,有两类共享资源:一类是数据库,另一类是数据库管理系统软件。因此,需要有专门的管理机构来监督和管理数据库系统。DBA则是这个机构的人员,负责全面管理和控制数据库系统。具体职责包括:
(1)决定数据库中的信息内容和结构
数据库中要存放哪些信息,DBA要参与决策。因此,DBA必须参加数据库设计的全过程,并与用户、应用程序员、系统分析员密切合作共同协商,搞好数据库设计。
(2)决定数据库的存储结构和存取策略
DBA要综合各用户的应用要求,和数据库设计人员共同决定数据的存储结构和存取策略以求获得较高的存取效率和存储空间利用率。
(3)定义数据的安全性要求和完整性约束条件
DBA的重要职责是保证数据库的安全性和完整性。因此,DBA负责确定各个用户对数据库的存取权限、数据的保密级别和完整性约束条件。
(4)监控数据库的使用和运行
DBA还有一个重要职责就是监视数据库系统的运行情况,及时处理运行过程中出现的问题。例如,系统发生各种故障时,数据库会因此遭到不同程度的破坏,DBA必须在最短时间内将数据库恢复到正确状态,并尽可能不影响或少影响计算机系统其他部分的正常运行。为此,DBA要定义和实施适当的后备和恢复策略,如周期性的转储数据、维护日志文件等。有关这方面的内容将在下面做进一步讨论。
(5)数据库的改进和重组重构
DBA还负责在系统运行期间监视系统的空间利用率、处理效率等性能指标,对运行情况进行记录、统计分析,依靠工作实践并根据实际应用环境,不断改进数据库设计。不少数据库产品都提供了对数据库运行状况进行监视和分析的实用程序,DBA可以使用这些实用程序完成这项工作。
另外,在数据运行过程中,大量数据不断插入、删除、修改,时间一长,会影响系统的性能。因此,DBA要定期对数据库进行重组织,以提高系统的性能。当用户的需求增加和改变时,DBA还要对数据库进行较大的改造,包括修改部分设计,即数据库的重构造。
1.1.4 应用系统
应用系统(数据库应用系统)是在数据库管理系统(DBMS)支持下建立的计算机应用系统,简写为DBAS。例如,以数据库为基础的财务管理系统、人事管理系统、图书管理系统等等。无论是面向内部业务和管理的管理信息系统,还是面向外部提供信息服务的开放式信息系统,从实现技术角度而言,都是以数据库为基础和核心的计算机应用系统。
1.1.5 用户
用户是指最终用户(End User)。最终用户通过应用系统的用户接口使用数据库。常用的接口方式有浏览器、菜单驱动、表格操作、图形显示、报表等,给用户提供简明、直观的数据表示。
最终用户可以分为如下三类:
偶然用户。这类用户不经常访问数据库,但每次访问数据库时往往需要不同的数据库信息,这类用户一般是企业或组织机构的高、中级管理人员。
简单用户。数据库的多数最终用户都是简单用户。其主要工作是查询和修改数据库,一般都是通过应用程序员精心设计并具有友好界面的应用程序存取数据库。例如,高考在线报名的考生、旅馆总台服务员等都属于这类用户。
复杂用户。复杂用户包括工程师、科学家、经济学家、科学技术工作者等具有较高科学技术背景的人员。这类用户一般都比较熟悉数据库管理系统的各种功能,能够直接使用数据库语言访问数据库,甚至能够基于数据库管理系统的API编制自己的应用程序。