第一章 数据库基础
1.1 数据管理概述
1.1.1 什么是数据管理
与我们人类相比,计算机的最大优势就是能够高速、精准地运行,其运行的过程就是执行程序代码和操作指令、处理数据的过程。可以说,数据处理是计算机最基本的功能,而数据
管理则是数据处理的重要组成部分。在进一步讲解之前,我们需要先明确一下几个相关的一些基本概念。
信息(Information
)是反映现实世界中客观事物状态、发展变化及其规律的信号与消息。这里
的所谓“客观事物”可以是具体的(如人、兽、鸟),也可以是抽象的(事件、现象或行为,如
潮起潮落、云卷云舒)。或者说,信息是能够通过数字、符号、文字、声音或图像等介质来表现
且能为人类所获知的知识。作为人们工作生活中分析、决策与行为的依据,信息具有客观性、适
用性、可传输性和共享性等特征。当然,信息并不为我们人类所独有,鸟语(鸟的鸣叫)传递的
就是鸟类的信息。
数据(Data
)是信息的具体表示形式,如前述的数字、符号、文字、声音或图像等。在计算
机技术中,数据指的是程序或指令执行时所处理的那些内容,而程序代码和指令则不属于“数据”
的范围。当然从广义上讲,程序代码和指令也属于“数据”的范畴。
数据通常由数据名称(数据含义)、数据类型、数据值等要素组成,其中数据值还会受到数
据类型与取值范围的约束。数据对于信息的表示有定性表示(如人的体重状况为“营养不良”、
“正常体重”、“肥胖”)和定量表示(如人的体重数值为18.5
公斤)之分。
数据处理(Data
Processing)是指对数据进行的采集、组织、整理、加工、存储和传播等工作。
从广义上讲,一切涉及到数据的工作均可认为是在处理数据。
数据处理由可细分为数据管理、数据加工和数据传播三种类型:
- ? 数据管理
收集信息,将信息用数据表示,对数据进行分类、组织并保存,以能够在需要的时候提供数
据。
- ? 数据加工
对数据的转换、提取和运算操作。对现有数据(原始数据)进行加工会得到更有用的数据(即
处理结果,比如一次购物中的商品总价、会员在指定时间段内的消费总额),以指导人的行为或
事物的运行发展。
- ? 数据传播
即信息的传播——在空间或时间上以各种形式传递数据,包括数据的显示操作,传播过程中
不会改变数据的结构、性质和内容,但可以表现为不同的形式或效果(比如表格、图形、实物模
型、音频/
视频等),使更多的人得到信息。
上面已提到,数据管理(Data
Management)是指对数据的分类、组织、编码、保存、维护、
检索和统计。具体说来,就是将采集到的数据合理地分类组织,将之编码、并保存到在物理存储
设备(如磁盘)中,使数据能够被长期保存;数据维护是指根据需要插入新数据、修改原有数据
和删除失效数据等操作;数据检索(即数据查询)和数据统计功能则是为了快速地得到所需要的
数据,满足各种使用要求。
1.1.2 计算机数据管理技术发展历程
随着人类进入信息化社会,在计算机应用技术领域,对数据管理方面的需求日益旺盛,计算
机数据管理技术迅速发展起来,其发展历程大致可分为三个阶段:
1. 手工管理阶段
在计算机技术发展初期,计算机主要用于科学计算,其硬件存储设备主要是外接的磁带机、
卡片机、纸带机等,当时还未发明磁盘等直接存取的存储设备;软件方面也处于初级阶段——还
没有操作系统和专门管理数据的软件。这一时期的数据组织、存储和管理完全靠程序员手工完成,
因此称为“手工管理阶段”。
手工管理数据方式的特点是:
–
数据不单独保存,而是与程序代码混合在一起,因而没有独立性,要修改数据则必须修
改程序;
–
程序员必须自己在程序中定义数据的存储结构、实现其存取操作,迫使程序员直接与物
理设备打交道,这加大了程序设计难度,编程效率低下。
–
数据与程序相关,这意味着即使多个不同的程序用到了相同数据,也无法实现共享,只
得各自进行数据的定义、存储和管理,这样很容易造成数据的高度冗余,无法保证数据
的一致性。
可以看出,这一阶段阶段的数据管理效率很低。
2. 文件管理阶段
将数据以文件的形式组织和长久保存在计算机存储设备中,并由操作系统中的文件系统实现
统一的管理——文件系统有专门的数据管理软件提供有关数据存取、查询及维护功能,规定了统
一的文件结构和共同的存取方法。
数据文件的管理并不针对特定的应用程序,但仍缺乏数据与程序的独立性,也就无法做到真
正的数据共享。另一个问题是,当数据的逻辑结构改变时,必须同时修改数据文件的结构定义和
相应的程序代码,这会增加程序维护升级的难度。
3. 数据库管理阶段
数据库管理从前面的文件管理演化而来,是计算机数据管理技术的高级阶段。为满足大量数
据的集中存储、不同类型程序共享数据、多用户并发访问、维护数据的完整性、分布式处理以及
安全性方面的需求,人们开始尝试使数据的存储和管理与应用程序彻底独立,并最大限度地减少
数据冗余,于是出现了数据库管理系统。数据库管理方式的特点在下一节中会做详细介绍。
1.2
数据库概述
1.2.1 数据库主要特点
顾名思义,数据库是存储数据的场所。准确地说,数据库(Data
Base,DB)是依照某种数据
模型组织起来的数据集合,同时也提供了数据管理功能。数据库具有如下主要特点:
- ? 数据共享度高
数据共享包含两方面的含义:不同用户可以同时存取数据库中的数据,其具体用法可以;用
户可以采用不同方式访问数据库,比如使用管理管理工具直接操作数据库、或在网络客户端应用
程序中通过编程接口访问数据库。
- ? 减少数据冗余
同文件系统相比,由于数据库系统实现了数据共享,从而避免了用户为其应用程序创建专用
的数据文件。减少了可能出现的重复数据(数据冗余),便于维护数据的一致性。
? 数据和程序间具有较高的独立性
数据的独立性包括数据库中数据的逻辑结构和应用程序相互独立,也包括数据物理存储结构
的变化不影响数据的逻辑结构。有关数据库存储结构方面的知识在后文中会做详细介绍
- ? 实现对数据的集中管理
由数据库管理系统对外提供统一的数据存储、维护(增加、删除和修改数
据)、检索和简单统计功能,使用数据的应用程序只需遵循统一的接口与数据库管理系统打交道,
调用其数据管理管理功能,而不必各自为战。
实现数据集中管理的前提是,建立统一的数据模型对数据进行组织、并能够体现数据之间的
联系,而文件管理方式则很难做这一点,文件管理的数据处于一种分散的状态,
文件类型、存储结构不够统一,在保证数据一致性、并发访问方面的性能也非常有限。
? 确保数据的一致性、安全性和可靠性
只有实现了数据的集中管理,才能保证共享数据的可靠性,否则很容易导致多应用程序并发
访问数据时的不一致性问题。数据库管理系统支持对数据的并发式访问(允许同时对数据进行多
路存取),能够很好地控制用户间的交互,保证数据的一致性;
安全性和可靠性更是数据库技术中恒久不变的主题,数据库管理系统均会提供相关的技术、
机制或方法,防止非法操作、错误更新和越权使用数据,并提供故障检测、诊断和恢复方面的工
具或功能。
1.2.2 数据库相关术语
数据库(Database,DB)
数据库是依照某种数据模型组织起来的数据集合,集合中的数据尽可能不重复,并以最优方
式为某个特定组织的多种应用服务,集合中的数据结构独立于使用它的应用程序,对数据的增、
删、改和检索由统一的软件(数据库管理系统)进行管理和控制。
数据库管理系统(Database Management System,DBMS)
数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。DBMS
对数据库进行统一的管理和控制,包括数据的增、删、改和检索操作,以保证数据库的安全性和
完整性。用户通过 DBMS 访问数据库中的数据,数据库管理员也通过 DBMS 进行数据库的维护工
作。DBMS
提供多种功能,支持多应用程序和多用户以不同方式对数据库进行并发式访问。
数据库管理员(Database Administrator,DBA)
数据库管理员是负责创建、监控和维护整个数据库的人员,其职责包括:数据库安装、数据
库配置和管理、权限设置和安全管理、监控和性能调节、备份和恢复、解决其它一般性问题,以
使数据能被任何得到授权的人有效使用。
数据库管理员是一种专业性很强的职位,相对来说工作更稳定、薪水较高,一般由技术水平
高、资历较深的人员担任。目前,国内这一领域的分工还不很明细,多数中小型企业没有专门的
DBA,而是由网络管理员等兼任。
数据库应用系统(Database Application System,DBAS)
在数据库领域内,人们常把使用了数据库的各类应用系统统称为数据库应用系统。准确地说,
数据库应用系统是一个可以实际运行的存储、维护和处理数据的软件系统,通常由数据库、数据
库管理系统、数据库管理员、应用程序和最终用户五部分组成。其中,数据库集中保存数据,数
据库管理系统提供对数据库的统一管理和维护,这二者合在一起就是我们通常所说的数据库软件;
应用程序与数据库管理系统交互、间接访问和操作数据库中数据;数据库管理员操作数据库管理
系统,实现对数据库的管理和维护;而最终用户则只与应用程序进行交互。
数据库
数据库管理系统
应用程序 最终用户
数据库管理员
数据仓库(Data Warehousing)
数据仓库(Data
Warehouse )是一个面向主题的(Subject Oriented )、集成的(Integrate
)、
相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。
数据仓库是一个环境,而不是一件产品,提供用户用于决策支持的当前和历史数据,这些数
据在传统的操作型数据库中很难或不能得到。数据仓库技术是为了有效的把操作型数据集成到统
一的环境中以提供决策型数据访问的各种技术和模块的总称。所做的一切都是为了让用户更快更
方便查询所需要的信息,提供决策支持。
简单地说,数据仓库就是把不同数据库的数据收集到一起,加以整理,主要用于做长期趋势
分析。数据仓库应用一般体现为操作比较复杂,涉及到的数据量比较大,但并发工作的程度不太
多,对速度的要求也不太强烈,这类应用除了要求数据库系统有较强的数据管理手段,如:完整
性控制、安全性控制、
可靠性保障等之外,还特别要求数据库系统能支持大数据量,支持有效的
语句优化,强有力的统计功能以及较强的批处理能力等。
1.2.3 数据库分类及发展沿革
前文已提及,数据库(数据库管理系统)的出现克服了文件管理系统的局
限性,其后来的展则是受到如下需求的推动:提供应用程序与数据之间更大的独立性,进而降低
应用程序的开发及维护成本;管理日益复杂的数据类型和结构;降低对数据库用户的技术要求—
—使用者不必须具备编程基础、也不需要详细了解数据在数据库中的存储及管理细节;提供更简
便、快速的数据访问服务;支持更强的数据共享性、一致性、安全性和可靠性;提供更强大的数
据统计、决策支持功能。
数据库系统的核心和基础是数据模型各种数据库系统都是基于某种数据模型而工作的,因而通常是按照数据模型的特点将传统
数据库系统分成网状数据库、层次数据库和关系数据库三种。
网状数据库
顾名思义,网状数据库采用的是以记录类型为结点的网状数据模型,是一种导航式
(Navigation)的数据库——用户在操作数据库时不但要指明要访问的对象(数据),还要规定其
存取路径。
世界上第一个网状数据库管理系统(也是第一个数据库管理系统)是由美国通用电气公司
Charles Bachman等人在20
世纪60年代初年开发成功的,这款名为 IDS (Integrated
DataStore,集
成数据存储)的数据库管理系统奠定了网状数据库的基础,在当时得到了广泛的推广和应用,做
为初级阶段的数据库产品,IDS
只能在通用公司的主机上运行。
1971年,美国数据系统委员会(Conferenceon Data Systems Languages,CODASYL
)中的数
据库任务组(Data Base Task Group,DBTG)提出了一个著名的DBTG
报告,对网状数据模型和
语言进行了定义,并在1978年和1981年两度进行修改和补充。因而网状数据模型又称为CODASYL
模型或DBTG
模型。1984 年,美国国家标准协会(ANSI)提出了一个网状定义语言(Network
Definition Language,NDL)的推荐标准。
20世纪 70 年代,曾经出现过大量的网状数据库的 DBMS 产品。比较著名的有
Cullinet软件公
司的IDMS 、Honeywell公司的 IDSII、Univac 公司的 DMS1100、以及HP公司的IMAGE 等。
网状数据库模型对于层次和非层次结构的信息都能比较自然的模拟,在关系数据库出现之前
网状DBMS 要比层次DBMS
用得普遍。在数据库发展史上,网状数据库占有重要地位。
层次型数据库
层次型数据库紧随网络型数据库之后出现,它采用层次数据模型(类似于数据结构中的“树”)
来模拟现实世界中按层次组织起来的事物。层次数据库管理系统也是按记录来存取数据的,层次
数据模型中最基本的数据关系是基本层次关系,它代表两个记录型之间一对多的关系,也叫做双
亲-子女关系(Parent-Child
Relationship,PCR )。数据库中有且仅有一个记录型无双亲,称为根节
点。其他记录型有且仅有一个双亲。
层次数据模型的优点是结构简单、层次清晰、易于理解,并能够提供良好的完整性支持。其
缺点包括:处理非层次性联系如多对多联系的数据时比较繁琐,只能通过引入冗余结点或虚拟结
点来实现;查询子结点必须通过父结点,即从根节点开始访问,这样降低了数据访问效率;层次
型数据库对数据插入和删除有较多限制。
最著名的层次数据库产品是IBM 公司的 IMS (Information Management System
),这是IBM
公司研制的最早的大型数据库系统。
关系型数据库
关系型数据库(Relationship Database,
RDB)采用二维表结构储存与管理数据,并规定了表内
和表间数据的依存关系。可以简单地理解为,关系数据库中的表结构与我们日常生活中经常使用
的数据表(比如
Office 办公软件Word/Excel
中的表格)对应,当然关系型数据库中经过抽象后的
数据表结构可以支持更多的数据类型,并附加所需的约束条件,这也符合技术来源于现实世界、
并服务于现实世界生产活动的本质规律。
关系型数据库采用结构化查询语言(Structured Query Language,SQL
)作为客户端程序与数
据库服务器间沟通的桥梁——客户端发送SQL
指令到服务器端,服务器端执行相关的指令并返回
其查询的结果结果。关系模型结构简单、概念单一、易学易用。关系模型的查询效率往往不如非
关系模型,需进行优化以提高性能,这一定程度上要增加用户的负担,并对用户在数据库的整体
知识上有较高的要求。
1970年的 6 月, IBM 公司的研究员 Edgar Codd 发表了其著名的论文《大型共享数据库数据
的关系模型》(A Relational
Model of Data for Large Shared Data
Banks),这是数据库发展史上的
一个里程碑,从此开始了关系型数据库软件革命。经过 30
余年的持续发展进步,关系型数据库已
是当今的应用主流,目前流行的大型关系型数据库包括 Oracle、IBM DB2、Microsoft SQL
Server 、
SyBase 、Informix 等。
版权说明:
本书为北京新科海学校-v512 工作室原创教材,版权所有,流通者不得用于盈利目的,转载请注明出处。
联系作者:
张利国 zhangliguo@tsinghua.org.cn
相关资源:
新科海学校
http://www.jobedu.com.cn/
v512工作室 http://www.v512.com
高清视频下载
http://www.verycd.com/topics/215898/