数据库原理与应用

数据库的发展过程是曲折的,但是人类的智慧也是无穷的. 从计算 机的兴起,到操作系统的实现,我们的数据从人工管理阶段过渡到文件系统管理 阶段,人类从复杂又麻烦的机械式数据管理中罢手,交由强大的文 件系统管理,说白了,人类学会了利用计算机强大的计算能力,人类做一些简单的 活.但这时,文件虽然更加具体化,文件的抽象组织还是人类的活,因为计算机只看 到文件的0,1,对于文件之间的抽象关系,在早期并没有模型 使用.随着计算机和网络的普及,以及中心化服务器的出现,使得数据庞大 到人工无法有效管理.由电脑替人类完成抽象层面上的文件管理可能吗? 由此,一大批大牛开始对数据进行抽象,希望找到一种简单而又有效的 模型,让计算机更加自动的管理数据.于是,发展出了许许多多模型和解决方案 各种解决方案各有侧重点,但每种模型都不能足够简单的归纳所有类型的 数据.现在的数据库大环境下是多种模型并存的局面.数据是现今社会发展 规划的基石,如今社会的各个领域都离不开数据库.

第一章 数据库系统概论

一. 数据管理的发展

数据管理的发展经历了三个阶段:人工管理阶段,文件系统管理阶段,数据库管理系统管理 阶段.在 人工管理阶段时期 ,由于计算机的刚刚起步,并没有储存数据的设备,每次运行程序 需要程序员自己设计数据结构,在硬件层面上对数据进行管理,数据无法储存,不同程序之间 不能共享数据.到 文件系统管理阶段 ,操作系统开始从底层抽象出来,应用程序可以不用考虑 底层,而且由于磁盘等RAM的出现,数据出现了管理的问题,于是文件统一由操作系统进行管理 ,增加了一层抽象层,可以实现物理独立性,但是从文件系统目录树中可以看到,文件还是由操 作系统实现文件的建立,存取,查询,和更新等各种操作.文件的共享性,和逻辑独立性还是不 够,尤其是在数据规模越大的时候,数据的重要性和数据管理难度之大等突出问题,人们在解决 问题的过程中,形成了以数据为中心的系统模型.同时也在数据和物理层中再插入了一层抽象层 .数据管理在第三阶段,也就是 数据库管理阶段 ,数据储存在名为数据库(database)的文件中, 由数据库管理系统(DBMS)统一管理,形成了由物理层到操作系统,再到DBMS,最后用不同应用 程序实现不同功能的整个数据库系统.在这个阶段,前面提到的各种问题都能得到基本解决.

二. 数据库的发展

在文件系统中,尽管每个文件(文件由记录组成,每个记录都是由若干个数据项组成)内部都是有结构 的,但是文件之间是没有联系的.换句话说,文件系统储存数据属性,但是不储存数据关系.数据库 解决问题的思路是,如何在储存数据时,也将它们之间的关系也储存起来.围绕这个基本思想,先后发展 出了IDS(Integrated Data Store),基于层次模型的IMS(Information Management System) ,网状模型方案,关系模型方案.从数据库的发展来看,采用数据模型表示数据能较为深入的研究数据的管 理,形成强大的理论支撑,为数据库的实现提供高效的解决方案.数据库设计的另一个思想就是提高数据地 位,在数据之下兴建一个抽象层,由DBMS统一管理能保证数据的共享性,降低数据冗余,能在整体上对数据 统一管理,能实现逻辑上的独立性.数据共享可以使数据系统应用功能易于扩充,即数据新的应用所需的数 据均能从数据库中获得数据集合.

基本概念

数据是信息的符号表示或称为信息的载体.信息则是数据的内涵是对语义的解释.
数据处理是指对各种数据进行收集,存储,加工和传播的一系列活动的总称.
数据管理是指对数据进行分类,组织,编码,检索和维护,它是数据处理的中心问题.
数据库是长期储存在计算机内,有组织的,统一管理的,可共享的相关数据的集合.

三. 现在的数据库系统

数据库系统由数据库,硬件,软件,使用人员组成,软件(DBMS,操作系统,应用程序,应用开发程序) 使用人员(数据库管理员,专业用户,应用程序员,终端用户).现在对其中部分成分进行介绍.

  • 数据库

    从操作系统的角度来看数据库就是一个文件,可能还包括一个日志文件,所以两个文件...

  • 数据库管理系统(Database Management System,DBMS)

    DBMS是位于用户和操作系统之间的一层数据管理软件,所有对数据库中数据的操作都应该由它 完成,它具有如下功能 :

    • 数据库定义功能
      DBMS提供数据库定义语言(Data Definition Language,DDL)对数据库中的数据进行 定义,指定其数据类型,结构,约束等.定义语言储存在数据字典中,是DBMS的基本依据.
    • 数据操纵功能
      DBMS提供数据操纵语言(Data Manipulation Language,DML )用户可以用它来实现 查询,更新功能.
    • 数据的组织,存储,管理
      DBMS要分类组织,存储,管理各种数据,包括数据字典(数据定义,统计信息等),用户数据,存储 路径等.要确定以何种文件结构和存取方式在数据库中组织这些数据,如何实现数据之间的联系
    • 数据库的事务管理和运行管理
      数据的安全性,完整性,并发性,和可恢复性,都能由事务管理器帮助.
    • 数据库的小工具(utility)

    数据库的实现难度比较大,从底层到顶层,数据库的实现不仅要充分利用系统资源,还要在数据分析等数学 层面上提供较好解决方案

  • 数据库使用人员
    • 数据库管理员(DataBase Administrator,DBA)
      对数据库进行全局的任何细节的设计
    • 专业用户
      参与对数据库的设计中
    • 应用程序员
      为数据库进行应用程序开发
    • 终端用户
      终端用户对整个系统来讲是最底层的,他们是消费者,所有的设计和努力都是为了他们.

四. 数据库系统的理论发展

三级模式结构

数据库发展到最后形成完善的数学模型来最高抽象这个世界,是对世界的数学描述,其中的转化过程 由数据库系统完成.整个系统模型由具体到抽象,保存与搬运,分析和结论,再从抽象到具体.这是人类 社会数字化管理的智慧结晶.在数据库系统下的ANSI/SPARC体系结构根据面向不同抽象层次的使用 人员,大致将DBMS划分为三类模式.概念模式,内模式和外模式.模式反应的是数据的结构和之间的联系, 与之容易引起混淆的快照是指数据库在某一个时间点的状态.以下介绍三种模式结构

i)概念模式(conceptual schema)
    概念模式也称为逻辑模式或者模式,是数据库中全体数据的逻辑结构和特征的描述,是对概念级
    数据视图的描述.它是数据库的中间层,所以既不涉及底层的存储细节和硬件环境,也与具体的
    应用程序无关.
ii)外模式(external schema)
    外模式是概念模式的子集,与应用有关,所以也称子模式或者用户模式.是数据库用户能够看见
    和使用的局部数据和逻辑结构和特征的描述,是对外部级用户数据视图的描述.
iii)内模式(internal schema)
    内模式也称存储模式,它是数据库的物理存储结构和存储方式的描述,是数据在数据库系统内部
    的表示方式.但是内模式也独立于具体的存储设备,它假定数据存储在一个无限大的线性内存空
    间中.

设计数据库模式结构时应首先确定数据库的概念模式,即全局的数据逻辑结构,内模式独立于外模式,也独 立于具体的存储设备,但是依赖于概念模式,它将概念模式中所定义的全局的数据结构按照一定的物理存储 策略进行组织,使数据库有较好的时间和空间效率.

DBMS三级模式的实现可以使用DDL(数据库定义语言)对模式中的数据库对象进行定义.一般来讲DBMS一般 不会将各类模式定义语言独立开来,而是用一种综合集成语言执行概念模式定义,子模式定义和数据操纵, 但是内模式一般会独立出来因为内模式定义物理存储结构,以调优系统性能,变化小,使用人员也少.现在 典型的综合数据库语言是SQL,它结合了概念模式定义语言(DDL),视图定义语言(View Definition Language,VDL)和数据操纵语言(DML)功能.内模式定义从早期的版本中删去,使得sql语言主要考虑概 念层和外部层.

基本概念

快照 一个特定时刻数据库中的即时数据称为数据库状态或快照,也称为当前出现或实例集.

二级映射

在一个基于三级模式的DBMS中每个用户实际接触的是自己的外模式,DBMS必须将用户的实际操作与数据库 结合起来,因此各模式之间必然应该由一对一的映射关系.这种映射关系是抽象层之间信息互通所必须的,一般 这种映射关系的编程实现叫应用编程接口(API)通过API能使层级之间,并列的程序之间,终端与终端之间(通过 网络连接)互通消息,求同存异.此外这种相互之间的屏蔽和通讯能有效简化问题,而且能使程序具有独立性.回到 数据库上来,数据库的三层抽象层在两级映射下,能使数据同时具有向上的逻辑独立性,和向下的物理独立性.

基本概念

映射: 在各层之间完成请求和结果转化的过程称为映射(mapping)
逻辑独立性: 指修改概念模式而无需修改外模式或应用程序的能力
物理独立性: 指修改内模式而无需修改概念模式的能力.

五.理论到实际的飞跃

计算机科学的创立和发展都是基于理论的,这跟其他很多学科都是不一样的.马克思主义说明了理论来源于 实际.计算机以及搭建在计算机上的各种程序在人类发明之前是不存在的,数据的抽象层次只对人类来说是 有意义的.换句话说,计算机的出现,人类头一次把自己的抽象意识放在一个实体中.要知道,这种抽象意识 从来没有离开过自己的脑子.所以计算机科学的发展让人类的思考模式发生了革命性的变化.

上一节说明了数据库要实现的功能和如何实现这种功能的大致模型.从具体的实现来讲由于各种实际问题的影响 并不会照本宣科的将理论直接搬运到实际中,比如说某些嵌入式系统中的数据库由于系统资源有限,对完善的三 级模式结构进行阉割能减小系统开销.一些数据库的三级模式界限也没有理由划得那么明显.

对单个产品按照性质和功能进行划分,最后进行组装与调试,是现在社会分工协作和公司化生产的一大特点.前面 说过,开发一个数据库管理系统异常艰难,开发层次的跨度直逼操作系统,数据库管理系统的开发工作不可能一个 人就能完成.利用前人的肩膀,后人的轮子,以及团队的协作,并将数据库开发规划为

1. 查询处理器模块
2. 存储数据管理器模块

同时,根据用户面向的模式的不同,将查询处理器模块又下分为DDL编译器,DML编译器,已编译的事务,执行引擎 各模块实现不同的数据库管理功能.最终产生成品.

六. 实际产品的发展变化

  1. 集中式DBMS体系结构
    计算机发展初期,硬件资源有限,一个主机有多个终端,终端没有计算能力,只提供显示功能.所以DBMS服 务器对数据的所有抽象和逆抽象都由服务器完成.
  2. 客户端/服务器DBMS体系结构
    随着硬件成本下降,每个终端改为具有一定运算能力的客户端,于是数据转换的计算工作一部分由客户端 承担,客户端为用户提供适当的界面以利用这些服务器,同时客户端还提供本地处理能力运行本地应用,在 客户/服务器体系结构中,一个称为开放数据互通(Open DataBase Connectivity,ODBC)的标准提供 了一个应用编程借口(Application Programming Interface,API),只要客户端和服务器上安装了 必要的软件,利用此API客户端就能访问到DBMS了.
  3. web三层客户端/服务器体系结构
    万维网的出现将网络数据显示和抽象过程增加了一层抽象.中建服务器保存了用于访问数据库服务器中数据 的业务规则(过程或约束),接受来自客户端的请求,处理这些请求,并向据库服务器发送数据库命令然后 作为一个通道将来自数据库的数据处理后发送到客户端,并可能对数据做进一步处理和过滤,以GUI的形式 提供给客户.这种体系的优点是可以更加安全的以加密形式将敏感数据传送给客户,再由客户端解密.