第一章 绪论
数据库系统概述
数据库技术的产生和发展
计算机发展的初期只是用于做复杂的科学计算,随着软硬件技术的发展,对字符串处理能力的引入,开始具有了数据处理的能力。
-
数据是描述现实事物的符号。
-
什么是数据管理?
对数据进行分类、组织、编码、存储、检索和维护,是数据处理的中心问题。
数据模型
数据模型是现实世界数据特征的抽象,通俗地讲,数据模型就是现实世界的模拟。
根据模型应用的不同目的,数据模型分为两类:
-
概念模型(信息模型)
按用户的观点对数据和信息建模,主要用于数据库设计。
-
逻辑模型、物理模型
- 逻辑模型:包括层次模型、网状模型、关系模型、面向对象模型、对象关系模型等。它按计算机系统的观点对数据建模,用于 DBMS 实现。
- 物理模型:是对数据最底层的抽象,描述数据在系统内部的表示方法和存取方法,在磁盘或磁带上的存储方式和存取方法。它的具体实现是 DBMS 的任务。
概念模型是信息建模,是对现实世界的事物符号化的描述,为计算机处理做准备。常用的概念模型是 E-R 图(Entity-Relationship Diagram)。
信息世界的主要概念
- 实体(Entity):客观存在的各类事物。分为弱实体和强实体。
- 属性(Attribute):实体所具有的特性。有组合属性、多值属性、派生属性。
- 码(Key):能唯一标识实体的属性集。
- 域(Domain):属性的取值范围。
- 实体型(Entity Type):对具有相同属性特征实体的描述。
- 实体集(Entity Set):同类实体的集合。
- 联系(Relationship):不同实体集中实体之间的联系,也可以是同一实体集内实体的联系。
联系的种类
- 一对一联系(1:1)
- 一对多联系(1:N)
- 多对多联系(M:N)
完整的 E-R 图中,实体、属性和联系都要完整。
特化与泛化
- 特殊化(specialization,特化):从实体集中找出与其他实体具有不同属性集的子集构成新实体的过程。
- 一般化(generalization,泛化):从实体集中提取公共属性构成新实体的过程。
E-R 图可以准确地描述现实世界的事物及事物之间的关系(联系)。
层次模型(Hierarchical Model)
数据结构:以一条包含实体所有属性值的记录为基本单位,记录之间的联系以树型结构来表示。
满足下面两个条件:
- 有且只有一个结点没有双亲结点,这个结点称为根节点。
- 根以外的其他结点有且只有一个双亲结点。
层次模型特点:
- 结点的双亲是唯一的。
- 只能处理一对多或一对一的实体联系。
- 每个记录类型定义一个排序字段,也称为码字段。
- 任何记录值只有按其路径查看时,才能显出它的全部意义。
- 没有一个子女记录值能脱离双亲记录值而独立存在。
多对多联系在层次模型中的表示
将多对多联系分解成一对多联系。
分解方法:
- 冗余结点法
- 虚拟结点法
两种方法的比较:
- 冗余结点法可以随意改变结点的存储位置,但增加了额外存储空间,容易造成数据的不一致性。
- 虚拟结点法改变结点存储位置后必须修改虚拟结点的指针,但不会产生数据的不一致性。
数据操纵与约束
- 操纵主要有查询(Query)、插入(Insert)、删除(Delete)和修改(Update)。
- 查询信息通常需要从根节点出发做树的遍历。
- 插入若无双亲结点则无法进行。
- 删除某一结点则必须将子树删除。
- 修改必须保证数据的一致性。
存储结构
- 邻接表法(前序穿越顺序存储)
- 链接法(子女-兄弟链接法,层次序列链接法)
结论:层次模型中的联系是以指针或数据间的相对位置来表达的。
优点
- 层次数据模型简单, 对具有一对多的层次关系的部门描述自然、直观、容易理解。
- 性能优于关系模型,不低于网状模型。
- 层次数据模型提供了良好的完整性支持。
缺点
- 多对多联系表示不自然。
- 对插入和删除的限制多。
- 查询子女结点必须通过双亲结点。
- 层次命令趋于程序化。
网状模型
数据结构是网。
实现:将多对多联系分解成两个一对多联系。对于带属性的联系单独作为一组记录。
操纵与约束
- 操纵同层次模型。
- 支持码(对应实体标识符)
- 双亲结点与子女结点具有一对多的联系。
- 支持双亲结点与子女结点间的某些约束。
存储结构
链式存储。
优点
- 能够更为直接地描述现实世界,如一个结点可以有多个双亲。
- 具有良好的性能,存储效率较高。
缺点
- 结构比较复杂,而随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握。
- DDL、DML 语言复杂,用户不容易使用。
关系模型
数据结构是元组构成的一张表。
数据操纵与完整性约束
-
查询、插入、删除、修改
数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合。
-
实体完整性、参照完整性、用户定义完整性。
存储结构
实体和联系都作为数据文件来存储。
- 实体型:直接用关系(表)表示。
- 属性:用属性名表示。
- 一对一联系:隐含在实体对应的关系中。
- 一对多联系:隐含在实体对应的关系中。
- 多对多联系:直接用关系表示。
优点
- 建立在严格的数学概念的基础上。
- 概念单一。数据结构简单、清晰,用户易懂易用。
- 实体和各类联系都用关系来表示。
- 对数据的检索结果也是关系。
- 关系模型的存取路径对用户透明。
- 具有更高的数据独立性,更好的安全保密性。
- 简化了程序员的工作和数据库开发建立的工作。
缺点
存取路径对用户透明导致查询效率往往不如非关系数据模型。为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度。
数据库系统结构
数据库系统结构的两种划分方法
- 从数据库管理系统角度看:三级模式结构。
- 从数据库最终用户角度看:
- 集中式结构(单用户结构、主从式结构)
- 分布式结构
- 客户/服务器(Client/Server)结构
- 浏览器/应用服务器/数据库服务器多层结构
数据库系统的模式
型(Type):对某一类数据的结构和属性的说明。
值(Value):是型的一个具体赋值。
模式
模式(Schema):数据库逻辑结构和特征的描述;是型的描述;反映的是数据的结构及其联系;模式是相对稳定的。
模式的一个实例(Instance):模式的一个具体值;反应数据库某一时刻的状态;同一个模式可以有很多实例;实例随数据库中的数据的更新而变动。
一个数据库只有一个模式。
模式的地位:是数据库系统模式结构的中间层
- 与数据的物理存储细节和硬件环境无关。
- 与具体的应用程序、开发工具及高级程序设计语言无关。
模式的定义:
- 数据的逻辑模型(数据项的名字、类型、取值范围等)
- 数据之间的联系
- 数据有关的安全性、完整性要求。
外模式
外模式(External Schema,也称子模式或用户模式)
- 数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述。
- 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
外模式的地位:介于模式与应用之间。
模式与外模式的关系:一对多。
- 外模式通常是模式的子集。
- 一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对用户保密的要求。
- 对模式中同一数据,在外模式的结构、类型、长度、保密级别等都可以不同。
外模式与应用的关系:一对多。
- 同一外模式也可以为某一用户的多个应用系统所使用。
- 但一个系统程序只能使用一个外模式。
外模式的用途:
- 保证数据库安全性的一个有力措施。
- 每个用户只能看见和访问所对应的外模式中的数据。
内模式
内模式(Internal Schema,也称存储模式)
- 是数据物理结构和存储方式的描述。
- 是数据在数据库内部的表示方式
- 记录的存储方式(顺序存储,按照 B 树结构存储,按 hash 方法存储)
- 索引的组织方式
- 数据是否压缩存储
- 数据是否加密
- 数据存储记录结构的规定
- 一个数据库只有一个内模式