1.1 数据库系统概述 1.1.1 基本概念 数据(data) 数据是数据库中存储的基本对象。 描述事物的符号记录称为数据。 数据有多种表现形式,它们都可以经过数字化之后存入计算机。 数据的表现形式还不能完全表达其内容,需要经过解释,数据和关于数据的解释是不可分的。
数据的解释是指对数据含义的说明,数据的含义称为数据的语义 ,数据与其语义是不可分的。
数据库(DataBase, DB) 数据库管理系统(DataBase Management System, DBMS) 数据库管理系统是位于用户与操作系统之间的一层数据管理软件 。数据库管理系统和操作系统一样是计算机的基础软件 ,也是一个大型复杂的软件系统。它的主要功能包括以下几个方面:
数据定义功能: 提供数据定义语言(Data Definition Language, DDL)可对数据库中的数据对象的组成与结构进行定义。 数据组织、存储和管理: 数据库管理系统要分类组织、存储和管理各种数据; 提高存储空间利用率和方便存取,提供多种存取方法来提高存取效率。 数据操纵功能: 提供数据操纵语言(Data Manipulation Language, DML)可操纵数据,实现对数据库的增删改查等。 数据库的事务管理和运行管理: 数据库在建立、运用和维护时由数据库管理系统统一管理和控制; 保证事务的正确运行,保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。 数据库的建立和维护功能: 包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等。 其他功能: 包括数据库管理系统与网络中其他软件系统的通信功能; 一个数据库管理系统与另一个数据库管理系统或文件系统的数据转换功能; 异构数据库之间的互访和互操作功能等。 数据库系统(DataBase System, DBS) 由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DataBase Administrator,DBA)组成的存储、管理、处理和维护数据的系统。 数据库的建立、使用和维护等工作只靠一个数据库管理系统远远不够,还要有专门的人员来完成,这些人被称为数据库管理员。 1.1.2 数据管理技术的产生和发展 1.1.3 数据库系统的特点 1.2 数据模型 1.2.1 两种数据模型 数据模型(data model)也是一种模型,它是对现实世界数据特征的抽象,数据模型是数据库系统的核心和基础。
数据模型应满足三方面要求:
能比较真实地模拟现实世界。 容易为人所理解。 便于在计算机上实现。 概念模型 第一类概念模型(conceptual model),也称信息模型,它是按用户的观点来对数据和信息建模,使用简单的符号来描述信息,没有严格的规定,只要能清晰反映现实世界的信息就行,主要用于数据库设计。
逻辑模型 第二类中的逻辑模型主要包括层次模型(hierarchical model)、网状模型(network model)、关系模型(relational model)、面向对象数据模型(object oriented data model)和对象关系数据模型(object relational data model)、半结构化数据模型(semistructured data model)等。它是按计算机系统的观点对数据建模,主要用于数据库管理系统的实现。
第二类中的物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法,或在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。物理模型的具体实现是数据库管理系统的任务。
1.2.2 概念模型 基本概念 实体(Entity):客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念。 属性(Attribute):实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。 码(Key):唯一标识实体的属性集称为码。 实体型(Entity Type):用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。 例如:学生(学号,姓名,性别,出生年月,所在院系,入学时间) 实体集(Entity Set):同型实体的集合称为实体集. 联系(Relationship):现实世界中事物内部以及事物之间的联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。实体之间的联系有一对一、一对多和多对多等多种类型。 概念模型的一种表示方法 实体——联系方法
概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示出上述信息世界中的常用概念。其中最为常用的是实体——联系方法 (Entity-Relationship approach)。该方法用 E-R
图(E-R diagram)来描述现实世界的概念模型,E-R
方法也称为 E-R
模型。
1.2.3 数据模型的组成要素 一般来讲,数据模型是严格定义的一组概念的集合。这些概念精确地描述了系统的静态特性、动态特性和完整性约束条件。因此数据模型具有以下三个要素:
数据结构 数据结构描述数据库的组成对象以及对象之间的联系。
数据结构描述的内容有两类:
一类是与对象的类型、内容、性质有关的,如网状模型中的数据项、记录,关系模型中的域、属性、关系等;
一类是与数据之间联系有关的对象,如网状模型中的系型(set type)。
数据结构是刻画一个数据模型性质最重要的方面,是所描述的对象类型的集合,是对系统静态特性的描述 。
数据操作 数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。
数据库主要有查询和更新(包括插入、删除、修改)两大类操作。
数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言,是对系统动态特性的描述 。
数据的完整性约束条件 数据的完整性约束条件是一组完整性规则。
完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容,其规则包含:
实体完整性。
参照完整性。
用户定义完整性。
满足以上三者即满足了数据的完整性约束。
1.2.4 常用的数据模型 层次模型(Hierarchical Model) 网状模型(Network Model) 关系模型(Relational Model) 面向对象数据模型(Object Oriented Model) 对象关系模型(Object relational data Model) 半结构化数据模型(Semistructure data model) 其中层次模型和网状模型统称为格式化模型。
1.2.5 层次模型 层次模型是数据库系统中最早出现的数据模型,层次数据库系统采用层次模型作为数据的组织方式。
层次模型的数据结构 在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型:
有且只有一个结点没有双亲结点,这个结点称为根结点; 根以外的其他结点有且只有一个双亲结点。
在层次模型中,每个结点表示一个记录类型,记录类型之间的联系用结点之间的连线(有向边)表示,这种联系是父子之间的一对多的联系。 这就使得层次数据库系统只能处理一对多的实体联系。
在层次模型中,同一双亲的子女结点称为兄弟结点(twin 或 sibling)没有子女结点的结点称为叶结点:
由上图可以看出:层次模型像一棵倒立的树,结点的双亲是唯一的 。
层次模型的数据操纵与完整性约束 层次模型的数据操纵主要有查询、插入、删除和更新。操作时要满足层次模型的完整性约束条件:
进行插入操作时,如果没有相应的双亲结点值就不能插入它的子女结点值。 进行删除操作时,如果删除双亲结点值,则相应的子女结点值也将被同时删除。 进行更新操作时,如果更新的结点有子节点,则应更新所有相应记录,以保证数据的一致性。 层次模型优缺点 优点: 层次数据模型的数据结构简单清晰。 查询效率高,性能优于关系模型,不低于网状模型。 层次数据模型提供了良好的完整性支持。 缺点: 现实世界中很多联系是非层次的,如多对多联系。 如果一个结点有多个双亲结点等,用层次模型表示就不方便。 对插入和删除操作的限制比较多。 查询子女结点必须通过双亲结点。 由于结构严密,层次命令趋于程序化。 1.2.6 网状模型 在现实世界中事物之间的联系更多的是非层次关系的,用层次模型表示非树形结构是很不直接的,网状模型则可以克服这一弊病。
网状模型的数据结构 在数据库中,把满足以下两个条件的基本层次联系集合称为网状模型:
允许一个以上的结点无双亲。
一个结点可以有多于一个的双亲。
网状模型是一种比层次模型更具普遍性的结构。它去掉了层次模型的两个限制,允许多个结点没有双亲结点,允许结点有多个双亲结点;此外它还允许两个结点之间有多种联系(称之为复合联系)。 因此,网状模型可以更直接地去描述现实世界。而层次模型实际上是网状模型的一个特例。
由上图可知,层次模型中子女结点与双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一。
网状模型的数据操纵与完整性约束 网状模型的数据操作与层次模型相同。
由于网状模型一般来说没有层次模型那样严格的完整性约束条件,因此具体的网状数据库系统对数据操纵都加了一些限制,提供了一定的完整性约束。
网状模型优缺点 优点: 能够更为直接地描述现实世界,如一个结点可以有多个双亲。 具有良好的性能,存取效率较高。 缺点: 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握。 DDL
、DML
语言复杂,用户不容易使用。用户必须了解系统结构的细节,加重了编写应用程序的负担。 1.2.7 关系模型(重点) 关系模型是最重要的一种数据模型。关系数据库系统采用关系模型作为数据的组织方式。
关系模型的数据结构 关系模型建立在严格的数学基础上 在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。 关系必须是规范化的,满足一定的规范条件,最基本的规范条件:关系的每一个分量必须是一个不可分的数据项。 借用下图,介绍关系模型的基本概念:
关系模型的数据操纵与完整性约束 数据操作包含查询、插入、删除、更新。操作时要满足关系模型的完整性约束条件:
数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合。 存取路径对用户隐蔽,用户只要指出“干什么”或者“找什么”,不必详细说明“怎么干”或者“怎么找”。 保证操作遵循实体完整性、参照完整性、用户定义的完整性原则。 关系模型的优缺点 优点: 建立在严格的数学概念的基础上。 概念单一,数据结构简单、清晰,用户易懂易用,实体和各类联系都用关系来表示,对数据的检索和更新的结果也是关系。 关系模型的存取路径对用户透明,具有更高的数据独立性,更好的安全保密性,简化了程序员的工作和数据库开发建立的工作。 缺点: 存取路径对用户透明导致查询效率往往不如非关系数据模型。 为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度。 1.3 数据库系统的结构 从数据库管理系统角度看,是三级模式结构。 从数据库最终用户角度看,单用户结构、主从式结构、分布式结构、客户/服务器、浏览器/应用服务器/数据库服务器。 1.3.1 数据库系统模式的概念 型(Type):对某一类数据结构和属性的说明。 值(Value):型的一个具体赋值。 模式(Schema):数据库中全体数据的逻辑结构和特征的描述,仅仅涉及型的描述,反映的是数据的结构及其联系,模式是相对稳定的 。 实例(Instance):模式的一个具体值,反映数据库某一时刻的状态,同一个模式可以有很多实例,实例随数据库中的数据的更新而变动 。 1.3.2 数据库系统的三级模式结构 数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成:
模式(schema) 模式也称逻辑模式,其特点如下:
据库中全体数据的逻辑结构和特征的描述,所有用户的公共数据视图,综合了所有用户的需求,是数据库系统模式结构的中间层(地位) ,一个数据库只有一个模式。 模式是数据库数据在逻辑级上的视图,以某种数据模型为基础。 内容:数据的逻辑结构(如数据项的名字、类型、取值范围等),数据之间的联系;数据有关的安全性、完整性要求。 数据库管理系统提供模式数据定义语言(模式DDL
)来严格地定义模式。 外模式(external schema) 外模式也称子模式(subschema)或用户模式:
数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述,数据库用户的数据视图,是与某一应用有关的数据的逻辑表示, 介于模式与应用之间 (地位)。 模式与外模式的关系:一对多,外模式通常是模式的子集,一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求,对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同。 外模式与应用的关系:一对多,同一外模式也可以为某一用户的多个应用系统所使用,但一个应用程序只能使用一个外模式。 内模式(internal schema) 内模式也称存储模式(storage schema):
是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。 内容:记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储),索引的组织方式,数据是否压缩存储,数据是否加密,数据存储记录结构的规定。 一个数据库只有一个内模式。 1.3.3 数据库的二级映像功能与数据独立性 外模式/模式映像 内容:定义外模式与模式之间的对应关系,每一个外模式都对应一个外模式/模式映象,映象定义通常包含在各自外模式的描述中。
用途:
保证数据的逻辑独立性
当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变应用程序是依据数据的外模式编写的;
由此保证应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
模式/内模式映像 内容:模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。数据库中模式/内模式映象是唯一的,该映象定义通常包含在模式描述中。 用途: 保证数据的物理独立性。 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变应用程序不受影响。 由此保证了数据与程序的物理独立性,简称数据的物理独立性。