数据库管理系统(Database-management System, DBMS):由相互关联的数据的集合和一组用以访问这些数据的程序组成,其设计目的是管理大量的信息。
1.1 数据库管理系统的目标
文件处理系统(file-processing system)是传统操作系统支持的数据存储系统,但是其存储信息存在以下弊端:
(1)数据的冗余和一致性问题:既可能存在重复的数据,或者数据的不同副本不一致;
(2)数据访问困难:因为文件管理系统的数据缺乏组织性,因此对于较大数据库,访问需要的数据十分耗时,甚至无法访问;
基于文件处理系统的弊端,我们需要开发通用的,能对变化的需求做出更快反应的数据检索系统。数据库管理系统也就应运而生,它需要解决的主要问题为:
(1)数据孤立(data isolation):由于数据分散在不同文件中,这些文件又可能具有不同的格式,这就导致通过编写新的应用程序来进行数据检索非常困难;
(2)完整性问题(integrity problem):数据库中的数据必须满足某些特定的一致性约束,比如某人的银行存款不能为负数(deposit >= 0);
(3)原子性问题(atomicity problem):是否可分问题;
(4)并发访问异常(concurrent-access anomaly):数据可能同时被多个应用程序访问,就需要经过协调;
(5)安全性问题(sequrity problem):既不同用户的不同访问权限的问题。
1.2 数据抽象
数据库的一个主要目的是给用户提供数据的抽象视图,也就是说,数据库隐藏了关于数据存储和维护的某些细节。
为了让用户更利于使用数据库,数据的开发人员将数据库主要进行了三个层面的抽象,包括物理层、逻辑层和视图层,他们的关系表示为图1所示
图1 数据抽象的三层结构
对应的,我们将在不同层次抽象上的数据库总体设计(模式)称为物理模式、逻辑模式和子模式。
1.3 数据模型
数据库系统的基础是数据模型。数据模型是一个描述数据、联系数据、数据语义以及一致性约束的概念工具的集合。数据模型提供了一种描述物理层、逻辑层以及视图层数据库设计的方式。数据模型主要分为四类:
·关系模型(relational model):使用最广泛的数据模型,用表的集合来表示数据和数据之间的联系;
·实体-联系模型(entity-relationship model, E-R):认为真实世界是由一组实体和实体之间的联系构成的;
·基于对象数据模型(object-based model):可以看作是E-R模型增加了封装、方法(函数)和对象标识等概念后的扩展。
·半结构化数据模型(semistructured data model):半结构化数据模型允许那些相同类型的数据含有不同的属性集的数据说明。
1.4 数据库语言
数据库语言分为两种:数据定义语言(data-definition language)用于定义数据库模式;数据操纵语言(data-manipulation language)用于表达数据库的查询和更新。
1.4.1 数据定义语言(DDL)
数据库中的数据必须满足某些一致性约束,这就是由DDL来实现的,这些约束包括:
域约束:每一个属性都是在一个集合中取值的,这个集合就称为这个属性的域;
参照完整性:一个关系中某个属性值可能在另一个关系中出现,数据库的修改就可能导致这种完整性的破坏;
断言:就是数据库需要满足的条件,比如用户至少有一个账户的存款不能小于1000元。域约束和参照完整性是其特殊形式;
授权:读授权,允许读取数据,但不能修改数据;插入授权,允许插入数据,但不能修改已有数据;更新授权,允许修改数据,但不能删除数据;删除授权,允许删除数据。
1.4.2 数据操纵语言(DML)
使用户可以访问或者操纵数据。访问类型分为:
·对数据库中信息进行检索;
·向数据库中插入新的数据;
·从数据库中删除信息;
·修改数据库中存储的信息;
数据操纵语言分为两类:
过程化DML:要求用户指定需要什么数据以及如何获取这些数据;
声明式DML(又称为非过程化DML):需要用户指定需要什么数据,但是不指明如何获取这些数据。SQL的DML就属于声明式DML。
1.5 来自应用程序的数据访问
我们获取数据库中的数据时,往往需要通过应用程序与数据库交互来实现。为了访问数据库,DML语言通常需要宿主语言来执行,实现途径分为:
(1)通过提供应用程序接口(过程集)实现,它可以用于将DML与DDL发送给数据库,以获取结果;
微软提供的ODBC标准和JAVA的JDBC标准都属于这一类
(2)通过扩展宿主语言的语法,在宿主语言的程序中嵌入DML调用,称之为DML预编译器。
1.6 数据存储和查询
1.6.1 存储管理器
负责数据库中数据的存储、检索和更新。存储管理器部件包括:
(1)权限及完整性管理器;
(2)事务管理器;
(3)文件管理器;
(4)缓冲管理器。