第一章 绪论
1.1 数据库系统概述
1.1.1 数据库的4个基本概念
-
数据(data)
- 数据是数据库中存储的基本对象
- 描述事物的符号记录称为数据
- 数据 的含义称为数据的语义,数据与其语义是不可分的
-
数据库(DataBase,DB)
- 存放数据的仓库
- 严格的讲,数据库是长期储存在计算机内,有组织的,可共享的大量数据的集合。数据库中的数据按一定的数据模型组织,描述和储存,具有较小的冗余度(redundancy),较高的数据独立性(data independency)和易扩展性(scalability),并可为各种用户共享
- 永久存储
- 有组织
- 可共享
-
数据库管理系统(DataBase Management System,DBMS)
- 是位于用户于操作系统之间的一层数据管理软件
- 主要功能
- 数据定义功能
- 数据组织,存储和管理
- 数据操纵功能
- 数据库的事物管理和运行管理
- 数据库的建立和维护功能
-
数据库系统(DataBase System,DBS)
-
数据库系统是由数据库,数据库管理系统(及其应用开发工具),应用程序和数据库管理员(DataBase Administrator,DBA)组成的存储,管理,处理和维护数据的系统
-
1.1.2 数据管理技术的产生和发展
人工管理阶段 | 文件系统阶段 | 数据库系统阶段 | ||
---|---|---|---|---|
背景 | 应用背景 | 科学计算 | 科学计算,数据管理 | 大规模数据管理 |
背景 | 硬件背景 | 无直接存取存储设备 | 磁盘,磁鼓 | 大容量磁盘,磁盘阵列 |
背景 | 软件背景 | 没有操作系统 | 有文件系统 | 有数据库管理系统 |
背景 | 批处理 | 联机实时处理,批处理 | 联机实时处理,批处理 | 联机实时处理,分布处理,批处理 |
特点 | 数据的管理者 | 用户(程序员) | 文件系统 | 数据库管理系统 |
特点 | 数据面向的对象 | 某一应用程序 | 某一应用 | 现实世界(一个部门 ,企业,跨国组织等) |
特点 | 数据的共享程度 | 无共享,冗余度极大 | 共享性差,冗余度大 | 共享性高,冗余度小 |
特点 | 数据的独立性 | 不独立,完全依赖于程序 | 独立性差 | 具有高度的物理学独立和一定的逻辑性独立性 |
特点 | 数据的结构化 | 无结构 | 记录内有结构,整体无结构 | 整体结构化,用数据 模型描述 |
特点 | 数据控制能力 | 应用程序自己控制 | 应用程序自己控制 | 由数据库管理系统提供数据安全性,完整性,并发控制和恢复能力 |
- 人工管理阶段
- 数据不保存
- 应用程序管理数据
- 数据不共享
- 数据不具有独立性
- 缺点
- 数据的逻辑结构 或物理结构发生变化后,必须对应用程序做相应的修改,加重了程序员的负担
- 文件系统阶段
- 数据可以长期保存
- 由文件系统管理数据
- 缺点
- 数据共享性差,冗余度大
- 数据独立性差
- 数据库管理阶段
- 数据结构化
- 数据的共享性高,冗余度低,易扩充
- 数据独立性高
- 物理独立性
- 用戶的应用程序与数据库中数据的物理存储是相互独立的
- 逻辑独立性
- 用户的应用程序与数据库的逻辑结构是相互独立的
- 物理独立性
- 数据由DBMS统一管理和控制
1.2 数据模型
- 是对现实世界数据特征的抽象
- 是对现实世界的模拟
- 是数据库系统的核心和基础
1.2.1 两类数据模型
数据模型应满足三方面要求:
- 能比较真实地模拟现实时间
- 容易为人所理解
- 便于在计算机上实现
两大类:
- 概念模型
- 也称为信息模型
- 是按用户的观点来对数据和信息建模,主要用于数据库设计
- 逻辑模型和物理模型
- 逻辑模型
- 主要包括
- 层次模型(hierarchical moder)
- 网状模型(network model)
- 关系模型(relational model)
- 面向对象数据模型(object oriented data model)
- 对象关系数据模型(object relational data model)
- 半结构化数据模型(semistructured data model)
- 是按计算机系统的观点对数据建模,主要用于数据库管理系统的实现
- 主要包括
- 物理模型
- 是对数据最底层的抽象,它描述数据在系统内部的表示方法和存取方法,在磁盘或磁带上的存储方法和存取方,是面向计算机系统的
- 逻辑模型
1.2.2 概念模型
概念模型是现实 世界到机器世界的一个中间层次,表现为:
-
用于信息世界的建模
-
是现实世界到信息世界的第一层抽象
-
数据库设计人员进行数据库设计的有力工具
-
数据库设计人员和 用户之间进行交流的语言
概念模型要求:
- 具有较强的语义表达能力
- 能够方便,直接地表达应用中的各种语义知识
- 简单,清晰,易与用户理解
信息世界中的基本概念
- 实体(entity)
- 客观存在并相互区别的事物称为实体
- 属性(attribute)
- 实体所具有的某一特性称为属性
- 码(key)
- 唯一标识实体的属性集称为码
- 实体性(emtity type)
- 具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体
- 实体集(emtity set)
- 同一类型实体的集合称为实体集
- 联系(relational)
- 实体内部的联系
- 指组成实体的各属性之间的联系
- 实体之间的联系
- 通常是指不同实体集之间的联系
- 类型
- 一对一
- 如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系。
- 一对多
- 如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系。
- 多对多
- 如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体集B具有多对多联系。例如一门课程可以同时有若干名学生选修,而一个学生可以同时选修多门课程,则课程实体与学生实体具有多对多联系。
- 一对一
- 实体内部的联系
概念模型的一种 表示方法:实体-联系 图(E-R图)
- E-R图提供了表示实体型,属性和联系的方法
- 实体性
- 用矩形表示,框内写明实体名
- 属性
- 用椭圆形 表示,并用无向边将其与相应的实体型连接起来
- 联系
- 用菱形表示,菱形框内写明联系名,并用无向边分别于 有关实体型链接起来,同时在无向边旁标上联系的类型
1.2.3 数据模型的组成要素
- 是严格定义的一组概念的集合
数据模型通常由数据结构 ,数据操作 和数据的完整性约束条件三部分组成
- 数据结构
- 描述数据库的组成对象以及对象之间的联系
- 描述的内容有两类
- 与对象的类型,内容 ,性质有关的
- 与数据之间联系有关的对象
- 是对系统静态特性的描述
- 数据操作
- 是指对 数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则
- 是对系统动态特性的描述
- 数据的完整性约束条件
- 是一组完整性规则
1.2.4 常用的数据模型
数据库领域中主要的逻辑数据模型:
-
格式化模型
-
层次模型(hierarchical model)
-
网状模型(network model)
-
-
关系模型(relational model)
-
面向对象数据模型(object oriented data model)
-
对象关系数据模型(object relational data model)
-
半结构化数据模型(semistructure data model)
1.2.5 层次模型
层次模型用树形结构来表示各类实体以及实体间的联系。
-
层次模型的数据结构
在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型
- 有且只有一个结点没有双亲结点,这个结点称为根节点
- 根以外的其它结点有且只有一个双亲结点
每个结点表示一个记录类型,记录类型之间的联系用结点之间的连线 (有相边)表示,这种联系是父子之间的一对多的联系
-
层次模型的数据操纵与完整性约束
层次模型的数据操纵主要有查询,插入,删除和更新。进行插入,删除,更新操作时要满足层次模型的完整性约束条件
-
优点
- 层次模型的数据结构比较简单清晰
- 层次数据库的查询效率高
- 层次数据模型提供了良好的完整性支持
-
缺点
- 现实世界中很多联系是非层次性的,如结点之间具有多对多联系,不适合用层次模型表示
- 如果一个结点具有多个双亲结点等,用层次模型表示这类联系就很笨拙,只能通过引入冗余数据(易产生不一致性)或创建非自然的数据结构(引入虚拟结点)来解决。对插入和删除操作的限制比较多,因此应用程序的编写比较复杂。
- 查询子女结点必须通过双亲结点。
- 由于结构严密,层次命令趋于程序化。
1.2.6 网状模型
网状数据模型的典型代表是DBTG系统 ,亦称为CODASYL系统
-
网状模型的数据结构
在数据库中,把满足以下两个条件的基本层次联系集合称为网状模型
- 允许一个 以上的结点无双亲
- 一个结点可以有多余一个的双亲
-
网状模型的数据操纵与完整性约束
- 支持记录码的概念
- 保证一个联系中的双亲记录和子女记录之间是一对多的联系
- 可以支持双亲记录和子女记录之间的某些约束条件
-
优点
- 能够更为直接地描述现实世界,如一个结点可以有多个双亲,结点之间可以有多种联系
- 具有良好的性能,存取效率较高
-
缺点
- 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变的越来越复杂,不利于最终用户掌握
- 网状模型的DDL、DML复杂,并且要嵌入某一种高级语言(如COBOL、C)中。用户不容易掌握,不容易使用。
- 由于记录之间的联系是通过存取路径实现的,应用程序在访问数据时必须选择适当的存取路径,因此用户必须了解系统结构的细节,加重了编写应用程序的负担。
1.2.7 关系模型
术语
- 关系(relation)
- 一个关系对应通常说的一张表
- 元组(tuple)
- 表中 的一行即为一个元组
- 属性(attribute)
- 表中的一列即为一个属性
- 码(key)
- 表中的某个属性组,它可以唯一确定一个元组
- 域(domain)
- 域是一组具有相同数据类型的值的集合
- 属性的取值 范围来自谋和域
- 分量
- 元组中的 一个 属性值
- 关系模式
- 对关系的描述,一般表示为:
- 关系名(属性1,属性2,....,属性n)
- 对关系的描述,一般表示为:
关系数据模型的操纵与完整性约束
关系数据模型的 操作 主要 包括查询,插入,删除,和更新数据,这些操作必须 满足关系的完整性约束 条件
关系的完整性约束条件包括三大类:
- 实体完整性
- 参照完整性
- 用户定义的完整性
关系模型中的数据操作是集合操作,操作对象和操作结构都是对象
关系数据模型的优点
- 关系模型与格式化模型不同 ,它是建立在严格的数学概念的基础 上的
- 关系模型的概念单一
- 关系模型的存取路径对用户透明,从而具有更高的数据独立性,更好的安全保密性,也简化了程序员的工作和数据库开发的建立的工作
1.3 数据库系统的结构
1.3.1 数据库系统模式的概念
在数据模型中有"型(type)"和"值(value)"的概念
- 型
- 指对某一类数据的结构和属性的说明
- 值
- 是型的一个具体赋值
模式(schema)是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型的描述,不涉及具体的值
- 模式的一个具体值称为模式的一个实例(instance)
- 同一个模式可以有很多实例
- 模式是相对稳定的,而实例是相对变动的
1.3.2 数据库系统的三级模式结构
结构
-
外模式(external scheme)
-
也称子模式(subschema)或用户模式,它是数据库用户(包括应用程序和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
描述的是局部逻辑结构
-
-
模式(scheme)
- 也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
- 描述的是全局逻辑结构
-
内模式(internal schema)
- 也称存储模式(storage schema),一个 数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式
注意
- 外模式通常是模式的子集
- 同一个模式也可以为某一用户的多个应用程序使用 ,但一个应用程序只能使用一个外模式
- 外模式是保证数据库安全性的一个有力措施,每个用户只能看见和访问所对应的外模式找那个的数据,数据库中的其余数据是不可见的
1.3.3 数据库的二级映像功能与数据独立性
两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性
- 外模式 /模式映像
- 模式/内模式映像
- 数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一 的,它定义了数据全局逻辑结构与存储结构之间的对应关系
1.4 数据库系统的组成
数据库系统一般由数据库,数据库管理系统(及其开发工具),应用程序和数据管理员构成
-
硬件平台及数据库
硬件资源要求
- 要有足够大的内存,存放操作系统、数据库管理系统的核心模块、数据缓冲区和应用程序。
- 有足够大的磁盘或磁盘阵列等设备存放数据库,有足够大的磁带(或光盘)作数据备份。
- 要求系统有较高的通道能力,以提高数据传送率。
-
软件
主要包括
- 数据库管理系统。数据库管理系统是为数据库的建立、使用和维护配置的系统软件。
- 支持数据库管理系统运行的操作系统。
- 具有与数据库接口的高级语言及其编译系统,便于开发应用程序。
- 以数据库管理系统为核心的应用开发工具。应用开发工具是系统为应用开发人员和最终用户提供的高效率、多功能的应用生成器、第四代语言等各种软件工具。它们为数据库系统的开发和应用提供了良好的环境。
- 为特定应用环境开发的数据库应用系统。
-
人员
- 数据库管理员(DataBase Administrator,DBA)
- 决定数据库中的信息内容和结构
- 决定数据库的存储结构和存取策略
- 定义数据的安全性要求和完整性约束条件
- 监控数据库的使用和运行
- 数据库的改进和重组,重构
- 系统分析员
- 负责应用系统的需求分析和规范说明,要和用户及数据库管理员相结合,确定系统的硬件和软件配置,并参与数据库系统的概要设计
- 数据库设计人员
- 负责数据库中数据的确定及数据库中各级模式的 设计
- 必须参加用户需求调查和系统分析,然后进行数据库设计
- 通常由数据库管理人员担任
- 应用程序员
- 负责设计和编写应用系统的程序模块,并进行调式和安装
- 用户
- 指最终用户(end user)
- 通过应用程序的用户接口使用数据库
- 指最终用户(end user)
- 数据库管理员(DataBase Administrator,DBA)