第1章 绪论
第1章 绪论
一、本章学习目标
学完本章后,你应该能够回答下面这些问题:
- 什么是数据、数据库(DB)、数据库管理系统(DBMS)、数据库系统(DBS),它们之间是什么关系?
- 数据管理技术经历了哪些发展阶段?数据库系统相比文件系统到底先进在哪里?
- 什么是数据模型?为什么说数据模型是数据库系统的核心和基础?
- 概念模型、逻辑模型、物理模型分别是什么?它们之间如何衔接?
- 什么是 E-R 模型?实体、属性、码、联系分别是什么意思?
- 关系模型中的基本术语有哪些?为什么关系必须满足“分量不可再分”?
- 什么是数据库系统的三级模式结构?什么是两级映像?它们为什么能保证数据独立性?
- 一个完整的数据库系统由哪些部分组成?不同人员在其中承担什么角色?
二、数据库系统概述
2.1 四个基本概念
数据库课程的入门,首先要把四个概念区分清楚:
- 数据(Data)
- 数据库(Database, DB)
- 数据库管理系统(Database Management System, DBMS)
- 数据库系统(Database System, DBS)
这四者是层层递进的关系。
2.2 数据(Data)
1. 数据的定义
数据是数据库中存储的基本对象。
更准确地说:
数据是描述事物的符号记录。
这里的“符号记录”可以是很多形式,例如:
- 数字
- 文字
- 图形
- 图像
- 声音
- 视频
- 编码后的各种信号
2. 数据的语义
数据不仅仅是“符号”,还带有含义。
这个含义就叫作数据的语义。
例如一条学生记录:
(20180002,刘晨,女,1999-09-01,计算机科学与技术)
它不是随便拼起来的一串值,而是分别表示:
- 20180002:学号
- 刘晨:姓名
- 女:性别
- 1999-09-01:出生日期
- 计算机科学与技术:专业
所以:
数据与语义是不可分的。
如果只看“20180002”这个数字而不知道它是学号、工资还是订单编号,那么这条数据就缺少实际意义。
2.3 数据库(DB)
1. 数据库的定义
数据库是:
长期储存在计算机内、有组织的、可共享的大量数据的集合。
这里面有几个关键词,必须抓住:
- 长期储存:不是临时变量,不是程序运行一下就消失的数据
- 有组织:数据不是乱堆在一起,而是按某种结构组织起来
- 可共享:不是只给一个程序用,而是允许多个用户、多个应用共同使用
- 大量数据:数据库面对的通常不是几条记录,而是具有规模的数据集合
2. 数据库的基本特征
数据库具有以下典型特征:
- 数据按一定的数据模型组织、描述和存储
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
可以简单理解为:
- 数据库不是“文件的堆积”
- 它强调统一组织、统一管理、统一使用
2.4 数据库管理系统(DBMS)
1. DBMS 的定义
数据库管理系统位于用户与操作系统之间,是一层数据管理软件。
它是基础软件,也是一个大型复杂的软件系统。
你可以把它理解成:
数据库的“总管家”。
用户一般不直接和磁盘上的数据文件打交道,而是通过 DBMS 来操作数据库。
常见的 DBMS 有:
- MySQL
- Oracle
- SQL Server
- PostgreSQL
- SQLite
2. DBMS 的主要功能
课件中总结了 DBMS 的六类主要功能:
-
数据定义功能(DDL)
- 定义数据库对象
- 例如定义数据库、表、视图、索引等
-
数据组织、存储和管理功能
- 负责数据的存储结构、存储方式、存取路径等
-
数据操纵功能(DML)
- 对数据进行查询、插入、删除、修改
-
数据库的事务管理和运行管理功能
- 保证数据库在多用户环境下正确运行
-
数据库的建立和维护功能
- 包括数据库初始装载、备份、恢复、重组、性能监控等
-
其他功能
- 如通信、接口、开发工具支持等
3. 一句话理解 DBMS
数据库是“数据仓库”,
DBMS 是“管理这个仓库的软件系统”。
2.5 数据库系统(DBS)
数据库系统不是只有“数据库”本身。
它通常由以下部分构成:
- 数据库
- 数据库管理系统(及应用开发工具)
- 应用系统
- 数据库管理员(DBA)
也就是说:
数据库系统 = 数据库 + 管理软件 + 应用 + 管理人员
很多初学者容易把“数据库”和“数据库系统”混为一谈,这是一个高频误区。
2.6 什么是数据管理
数据管理,就是对数据进行:
- 分类
- 组织
- 编码
- 存储
- 检索
- 维护
数据处理的核心问题之一,就是如何高效、可靠地管理数据。
2.7 数据管理技术的发展过程
数据管理技术大体经历了三个阶段:
1. 人工管理阶段(20 世纪 50 年代中以前)
特点:
- 数据量小
- 没有专门的软件系统管理数据
- 数据和程序紧密绑定
- 数据不能共享
- 管理效率低
2. 文件系统阶段(20 世纪 50 年代末到 60 年代中)
特点:
- 数据开始以文件形式保存
- 应用程序可以访问文件
- 文件系统帮助管理数据
但问题也很明显:
- 数据冗余大
- 共享性差
- 数据独立性弱
- 程序依赖数据组织方式
- 难以统一控制
3. 数据库系统阶段(20 世纪 60 年代末至今)
这是现代数据管理的主流阶段。
它相对于文件系统的关键进步,在于:
- 以整体结构化方式组织数据
- 由 DBMS 统一管理与控制
- 支持共享、并发、安全、恢复、完整性等能力
2.8 数据库系统阶段的主要特点
这是本节非常重要的内容。
1. 整体数据的结构化
数据库中的数据不是彼此孤立的,而是整体上有结构、有联系的。
这意味着:
- 不仅要描述某个对象本身
- 还要描述对象之间的关系
例如在学生选课系统中:
- 学生和课程分别是数据对象
- 学生“选修”课程,是对象之间的联系
结构化是数据库的主要特征之一。
并且数据库中数据的最小存取单位通常是数据项。
2. 数据共享性强,冗余度低,易扩充
共享性强意味着多个用户、多个应用可以共同使用同一份数据。
这样做的好处是:
- 避免重复保存相同数据
- 减少数据不一致
- 提高利用率
冗余度低并不是说一点重复都没有,而是说数据库会尽量减少不必要的重复存储。
易扩充意味着随着需求变化,数据库更容易增添新数据、新表、新关系和新应用。
3. 数据独立性强
数据独立性是数据库系统非常核心的优点。
它包括两层:
(1)物理独立性
用户的应用程序与数据库中数据的物理存储相互独立。
也就是说:
- 数据是放在磁盘的哪个位置
- 使用什么索引
- 采用什么存储结构
这些物理层变化,一般不需要改应用程序。
(2)逻辑独立性
用户的应用程序与数据库的逻辑结构相互独立。
也就是说:
- 表结构做了某些调整
- 字段组织方式有变化
- 逻辑模式发生一定修改
只要通过相应映像机制保持外部视图不变,应用程序可以不必修改。
数据独立性由数据库系统的两级映像功能来保证。
4. 数据由 DBMS 统一管理和控制
数据库不是谁想怎么改就怎么改,而是由 DBMS 统一控制。
主要体现在四方面:
-
数据的安全性保护
- 防止未授权访问
- 控制谁能看、谁能改
-
数据的完整性检查
- 保证数据正确、有效、相容
- 例如学号不能为空、成绩必须在 0 到 100 之间
-
并发控制
- 多个用户同时操作数据库时,保证结果正确
- 防止相互干扰
-
数据库恢复
- 出现故障后,能够将数据库恢复到正确状态
2.9 本节总结:为什么需要数据库系统
数据库系统之所以产生,是因为传统文件管理已经无法满足现代应用的需求。
数据库系统通过统一管理数据,解决了以下关键问题:
- 数据冗余大
- 数据共享差
- 维护困难
- 程序依赖数据
- 多用户环境下容易混乱
- 出错后难以恢复
因此可以概括为:
数据库是长期存储、统一组织、可共享的大量数据集合;DBMS 是对数据库进行定义、操纵、控制与维护的软件;数据库系统则是数据库及其相关软件、应用与人员组成的整体。
三、数据模型
3.1 什么是数据模型
数据模型是对现实世界数据特征的抽象,是现实世界的模拟。
它是数据库系统的核心和基础。
为什么这样说?
因为数据库要处理现实世界中的事物,比如:
- 学生
- 课程
- 教师
- 订单
- 商品
- 用户
- 仓库
而计算机不能直接理解“现实世界”,
所以必须先把现实中的对象和联系抽象成一种形式,才能放进数据库中管理。
这种抽象形式就是数据模型。
3.2 数据模型应满足的三方面要求
一个好的数据模型,应满足以下要求:
- 能比较真实地模拟现实世界
- 容易为人所理解
- 便于在计算机上实现
这三个要求本质上是在平衡三件事:
- 现实准确性
- 人的可理解性
- 机器可实现性
3.3 数据建模:两步抽象
现实世界的数据建模通常经历两步抽象:
第一步:现实世界 → 概念模型
这一层关注的是:
- 有哪些对象?
- 每个对象有哪些属性?
- 对象之间有什么联系?
这一阶段通常由数据库设计人员完成。
第二步:概念模型 → 某种 DBMS 支持的数据模型
这一层要把概念模型进一步转换为:
- 层次模型
- 网状模型
- 关系模型
在实际教学与应用中,最重要的是关系模型。
补充理解:逻辑模型与物理模型
从课件示意图可以进一步看出,数据库设计还可以细分为:
- 现实世界 → 概念模型
- 概念模型 → 逻辑模型
- 逻辑模型 → 物理模型
其中:
- 概念模型:面向用户和设计者,强调“业务语义”
- 逻辑模型:面向 DBMS 支持的数据组织方式
- 物理模型:面向数据库内部存储实现
例如:
- 学生选课业务先画成 E-R 图(概念模型)
- 再变成 student、course、sc 等表(逻辑模型)
- 最后落实为数据库文件、索引、页、记录组织等(物理模型)
3.4 概念模型
概念模型用于对信息世界建模。
它不关心数据具体如何存储,而关心:
- 现实中有哪些实体
- 实体具有什么属性
- 实体之间存在什么联系
1. E-R 模型
概念模型常用的一种表示方法是:
实体—联系模型(Entity-Relationship Model,E-R 模型)
这是数据库设计中最常见、最基础的建模工具。
3.5 E-R 模型中的基本概念
1. 实体(Entity)
客观存在并且可以相互区分的事物,称为实体。
例如:
- 一个学生
- 一门课程
- 一本图书
- 一个读者
2. 属性(Attribute)
实体所具有的某种特征,称为属性。
例如学生实体的属性可以有:
- 学号
- 姓名
- 性别
- 出生日期
- 主修专业
课程实体的属性可以有:
- 课程号
- 课程名
- 学分
- 先修课
3. 码(Key)
能唯一标识实体的属性或属性组,称为码。
例如:
- 学号可以唯一标识一个学生
- 课程号可以唯一标识一门课程
因此学号、课程号都可以作为码。
4. 实体型(Entity Type)
用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。
例如“学生(学号,姓名,性别,出生日期,主修专业)”就是一个实体型。
5. 实体集(Entity Set)
同一类型实体的集合,称为实体集。
例如全校所有学生构成“学生实体集”。
6. 联系(Relationship)
实体之间的关联,称为联系。
例如:
- 学生 选课
- 读者 借阅 图书
- 学院 设置 专业
- 公民 拥有 身份证
3.6 联系的类型
两个实体型之间的联系通常有三种:
1. 一对一联系(1:1)
例如:
- 公民 与 身份证
一个公民对应一个身份证,
一个身份证也只对应一个公民。
2. 一对多联系(1:n)
例如:
- 学院 与 专业
一个学院可以设置多个专业,
一个专业通常只隶属于一个学院。
3. 多对多联系(m:n)
例如:
- 读者 与 图书
- 学生 与 课程
一个学生可以选多门课,
一门课也可以被多个学生选修。
多对多联系在实际数据库设计中非常常见,通常要通过一个中间关系(连接表)来表示。
例如学生选课关系中,可以增加“成绩”“开课学期”“教学班”等联系属性。
3.7 数据模型的三要素
任何数据模型一般都包含三个核心要素:
- 数据结构
- 数据操作
- 完整性约束
这是极其重要的理论框架。
1. 数据结构
数据结构描述的是:
- 系统中有哪些对象
- 这些对象之间有什么联系
它描述的是系统的静态特性。
例如在关系模型中:
- 表
- 列
- 行
- 表与表之间的联系
都属于数据结构的范畴。
2. 数据操作
数据操作描述的是:
- 可以对这些对象做什么操作
- 操作遵循什么规则
主要包括:
- 查询
- 插入
- 删除
- 修改
它描述的是系统的动态特性。
3. 完整性约束
完整性约束是一组规则,用来限制数据库中数据的状态及其变化方式,以保证:
- 数据正确
- 数据有效
- 数据相容
例如:
- 学号不能为空
- 主键不能重复
- 选课记录中的学号必须在学生表中存在
- 成绩必须在合法范围内
3.8 数据的物理模型
物理模型描述的是数据在 DBMS 内部如何组织和存储。
它关注的是:
- 存储结构
- 存取方法
- 索引结构
- 物理文件实现
这说明:
数据模型不仅有用户看到的逻辑结构,也有系统内部的物理实现。
例如在 SQL Server 或 MySQL 中,数据库最终都会映射为底层的数据文件、索引文件或页结构。
初学阶段你不需要深究所有物理细节,但要明确:
- 逻辑模型是“给人看”的
- 物理模型是“给系统实现”的
四、关系模型
关系模型是当前数据库系统中最重要、最广泛使用的数据模型。
MySQL、SQL Server、Oracle、PostgreSQL 等主流数据库都以关系模型为基础。
4.1 关系模型的逻辑结构
在用户观点下,关系模型中数据的逻辑结构就是一张二维表,由行和列组成。
例如“学生登记表”:
- 每一行表示一个学生
- 每一列表示一个属性
这也是为什么关系数据库看起来很像“Excel 表格”,但它又比普通表格严格得多。
4.2 关系模型中的基本术语
1. 关系(Relation)
一个关系通常对应一张表。
2. 元组(Tuple)
表中的一行称为一个元组。
3. 属性(Attribute)
表中的一列称为一个属性。
4. 码(Key)
表中某个属性或属性组,如果能唯一确定一个元组,就称为码。
例如学生表中,学号可以唯一确定一个学生元组,因此学号是码。
5. 域(Domain)
域是一组具有相同数据类型的值的集合,也就是属性的取值范围。
例如:
- 性别属性的域可以是
{男, 女} - 成绩属性的域可以是
0~100 - 出生日期属性的域是合法日期集合
6. 分量
元组中的一个属性值,称为分量。
例如在学生记录中,“刘晨”就是姓名属性对应的一个分量。
7. 关系模式
关系模式是对关系的描述。
例如:
学生(学号,姓名,性别,出生日期,主修专业)
它描述的是表的结构,而不是表中的具体数据。
4.3 关系术语与日常表格术语对照
为了帮助理解,可以把关系术语和普通表格术语进行对照:
| 关系术语 | 一般表格术语 |
|---|---|
| 关系名 | 表名 |
| 关系模式 | 表头(表格的描述) |
| 关系 | 一张二维表 |
| 元组 | 一条记录 / 一行 |
| 属性 | 一列 |
| 属性名 | 列名 |
| 属性值 | 列值 |
| 分量 | 一条记录中的某一个列值 |
| 非规范关系 | 表中有表(大表中嵌套小表) |
这个表非常重要,因为它建立了“数据库术语”和“直觉理解”之间的桥梁。
4.4 关系必须满足规范化的基本要求
课件特别强调:
关系必须是规范化的。
最基本的规范条件是:
关系中的每一个分量必须是不可分的数据项。
也就是说:
- 一个单元格里应该是一个“原子值”
- 不允许“表中还有表”
- 不允许把一组值塞到同一个字段中
例子
正确做法:
| 学号 | 姓名 | 专业 |
|---|---|---|
| 20180001 | 李勇 | 信息安全 |
错误做法:
| 学号 | 姓名 | 已选课程 |
|---|---|---|
| 20180001 | 李勇 | 数据结构、数据库、操作系统 |
错误的原因在于“已选课程”不是原子值,而是多个值的混合。
这会给查询、更新、维护带来很大麻烦。
4.5 关系模型的数据操作
关系模型的数据操作具有一个鲜明特征:
操作对象和操作结果都是关系。
也就是说,关系数据库中的操作本质上是集合操作。
常见操作包括:
- 查询
- 插入
- 删除
- 更新
并且关系模型有一个很大的优点:
存取路径对用户透明。
用户只需要说明:
- 要做什么(What)
而不必详细说明:
- 怎么做(How)
例如你写 SQL 时,只需要说:
SELECT 姓名
FROM 学生
WHERE 专业 = '计算机科学与技术';
你表达的是“我要哪些数据”,而不是“先从哪个文件开始,按什么路径读几次”。
这正是关系模型抽象层次高的体现。
4.6 关系模型的完整性约束
关系模型中常见的完整性约束有三类:
1. 实体完整性
用于保证实体能够被唯一标识。
通常体现为:
- 主键不能为空
- 主键不能重复
2. 参照完整性
用于保证表与表之间的引用关系正确。
例如选课表中的学号,必须在学生表中存在;
选课表中的课程号,必须在课程表中存在。
3. 用户定义的完整性
由具体应用语义决定的约束。
例如:
- 成绩必须在 0 到 100 之间
- 学分必须大于 0
- 性别只能取“男”或“女”
4.7 关系模型的优点与缺点
1. 优点
课件总结得很经典:
(1)建立在严格的数学概念基础上
关系模型以集合论等数学理论为基础,因此理论体系严谨。
(2)概念单一
- 实体可以用关系表示
- 实体之间的联系也可以用关系表示
- 查询结果仍然是关系
也就是说,整个系统的表示方式高度统一。
(3)存取路径对用户透明
这带来很多好处:
- 数据独立性更高
- 安全保密性更好
- 简化程序员工作
- 简化数据库开发与维护
2. 缺点
关系模型为了提高抽象程度,把底层存取路径隐藏起来了。
这虽然方便了用户,但也带来一个问题:
查询效率有时不如层次模型、网状模型那样直接。
因此关系数据库管理系统必须进行:
- 查询优化
- 索引设计
- 执行计划选择
这也增加了 DBMS 实现的复杂度。
五、数据库系统的三级模式结构
这是数据库理论中的核心内容,也是考试高频重点。
5.1 为什么要引入三级模式结构
数据库面对的是复杂环境:
- 不同用户看数据的角度不同
- 应用系统只关心自己需要的数据
- DBMS 还必须关心底层物理存储
所以数据库系统必须对同一份数据做不同层次的抽象。
于是就有了:
三级模式结构
它是数据库系统内部的体系结构。
5.2 型和值;模式和实例
理解三级模式之前,必须先分清“型/值”和“模式/实例”。
1. 型(Type)
型是对某一类数据的结构和属性的说明。
2. 值(Value)
值是型的一个具体赋值。
例如:
- “学生(学号,姓名,性别)”是型
- “(20230001,张三,男)”是值
3. 模式(Schema)
模式是数据库逻辑结构和特征的描述。
特点:
- 是型的描述,不涉及具体值
- 反映数据的结构及其联系
- 相对稳定
例如:
- 学生表有哪些字段
- 课程表有哪些字段
- 选课表与学生表、课程表如何关联
这些都属于模式层面的内容。
4. 实例(Instance)
实例是模式在某一时刻的具体值。
特点:
- 反映数据库某一时刻的状态
- 同一模式可以对应很多实例
- 数据更新后,实例会变化
例如:
- 2023 年某学校学生数据库中的所有学生记录、课程记录、选课记录,是一个实例
- 2024 年的数据内容变了,就是另一个实例
5. 模式与实例的关系
可以这样记:
- 模式看“结构”
- 实例看“数据内容”
- 模式相对稳定
- 实例经常变化
这是一个非常容易考概念辨析的点。
5.3 三级模式:外模式、模式、内模式
数据库系统通常采用三级模式结构:
- 外模式
- 模式
- 内模式
1. 模式(Schema)
模式也叫逻辑模式,是数据库中全体数据的逻辑结构和特征的描述。
它是:
- 所有用户的公共数据视图
- 数据库逻辑结构的总体描述
- 数据库的中心与关键
可以把它理解成:
整个数据库的“总蓝图”
2. 外模式(External Schema)
外模式是局部数据的逻辑结构和特征的描述,
是与某一应用有关的数据的逻辑表示。
它面向的是:
- 某一类用户
- 某一个应用程序
- 某一种业务视图
例如:
- 教务系统关心学生成绩
- 图书馆系统关心借阅记录
- 财务系统关心收费信息
不同应用可以基于同一个总模式定义不同外模式。
所以可以理解为:
外模式 = 用户视图 / 子模式 / 局部视图
3. 内模式(Internal Schema)
内模式是数据物理结构和存储方式的描述,
是数据在数据库内部的表示方式。
它关注的是:
- 数据如何存储
- 使用什么索引
- 采用什么存储结构
- 如何获得更好的时间效率和空间效率
也就是说:
内模式主要面向系统实现与性能优化。
5.4 三级模式结构的直观理解
可以把三级模式理解成三层“看法”:
第一层:外模式 —— 用户怎么看
- 不同应用只看自己需要的部分
- 同一数据库可以有多个外模式
第二层:模式 —— 全局怎么看
- 描述整个数据库的逻辑结构
- 是数据库的统一中心
第三层:内模式 —— 机器怎么存
- 描述数据的物理组织与存储方式
- 面向 DBMS 内部实现
5.5 两级映像与数据独立性
三级模式之间不能是割裂的,DBMS 内部需要建立联系和转换机制。
这就是两级映像。
1. 外模式 / 模式映像
它建立了:
- 外模式
- 模式
之间的对应关系。
它的作用是:
保证数据的逻辑独立性
含义是:
当模式改变时,只要数据库管理员修改外模式 / 模式映像,使外模式保持不变,那么依赖外模式编写的应用程序就不必修改。
这就实现了:
- 数据逻辑结构变化
- 应用程序基本不受影响
2. 模式 / 内模式映像
它建立了:
- 模式
- 内模式
之间的对应关系。
它的作用是:
保证数据的物理独立性
含义是:
当数据库的存储结构改变时,只要数据库管理员修改模式 / 内模式映像,使模式保持不变,那么应用程序就不受影响。
这就实现了:
- 底层物理存储变化
- 应用程序基本不受影响
5.6 逻辑独立性与物理独立性的本质
1. 逻辑独立性
强调:
- 数据的逻辑结构变了
- 应用程序尽量不变
2. 物理独立性
强调:
- 数据的物理存储变了
- 应用程序不受影响
通常来说:
- 物理独立性更容易实现
- 逻辑独立性更高级,也更难实现
因为逻辑结构一变,往往会影响用户视图和业务程序。
5.7 三级模式结构的设计要点
课件还从设计角度做了总结,这部分很有理解价值。
1. 模式是数据库的中心与关键
因为它描述全局逻辑结构,是整个数据库设计的核心。
设计数据库时,一般应首先确定:
数据库的逻辑模式
2. 外模式面向具体应用
外模式依赖应用需求,因此设计时要考虑:
- 当前应用是否够用
- 将来是否便于扩展
如果应用需求变化很大,外模式也可能需要修改。
3. 内模式面向效率
内模式要在全局逻辑结构的基础上,按照一定物理存储策略组织数据,以获得较好的:
- 时间效率
- 空间效率
5.8 两级映像带来的实际价值
数据库的两级映像机制带来了很大的工程价值:
- 保证外模式稳定
- 从底层保证应用程序稳定
- 数据定义和描述可以从应用程序中分离
- 数据存取由 DBMS 管理
- 简化应用程序编写
- 减少维护和修改成本
这也是为什么数据库技术能支撑大型信息系统长期演化。
六、数据库系统的组成
一个完整的数据库系统,不只是“安装了 MySQL”这么简单。
6.1 数据库系统的基本组成
数据库系统主要由以下几部分组成:
- 数据库
- 数据库管理系统(及其开发工具)
- 应用系统
- 数据库管理员
6.2 数据库系统运行的支撑条件
数据库系统的正常运行还需要三类支撑:
1. 硬件平台
包括:
- 服务器
- 存储设备
- 网络设备
- 输入输出设备等
2. 软件平台
包括:
- 操作系统
- DBMS
- 开发工具
- 中间件
- 应用软件等
3. 人员
数据库系统是“人机结合”的系统,离不开不同角色协作。
6.3 数据库系统中的人员角色
1. 数据库管理员(DBA)
DBA 是数据库系统中非常关键的角色,通常负责:
- 数据库安装与配置
- 安全控制
- 权限管理
- 备份与恢复
- 性能监控与优化
- 存储管理
- 故障处理
- 运行维护
2. 系统分析员和数据库设计人员
他们主要负责:
- 分析业务需求
- 识别实体、属性、联系
- 设计概念模型
- 设计逻辑结构
- 规划数据库整体方案
3. 应用程序员
他们主要负责:
- 基于外模式和业务需求编写应用程序
- 调用 DBMS 提供的接口
- 实现具体业务功能
4. 最终用户
最终用户一般不直接接触数据库内部结构,
而是通过客户端或应用系统来使用数据。
6.4 各类人员的数据视图
从课件图示可以看出,不同角色站在不同抽象层级看待数据库:
-
最终用户
- 通常通过客户端、应用系统访问数据
- 更关心“功能是否可用”
-
应用程序员
- 更关注外模式
- 关心程序如何通过视图或接口访问数据
-
数据库管理员 / 系统分析员 / 数据库设计人员
- 需要接触模式、内模式乃至数据库本体
- 关心全局结构、存储方式、安全、优化与运维
这说明数据库系统不是单一视角的系统,而是一个多角色、多层次协同的系统。
七、本章核心概念总表
下面把本章最重要的概念集中整理一遍,便于你复习。
7.1 四个基本概念
| 概念 | 含义 |
|---|---|
| 数据 | 描述事物的符号记录 |
| 数据库(DB) | 长期存储在计算机中的、有组织、可共享的大量数据集合 |
| 数据库管理系统(DBMS) | 对数据库进行定义、操纵、控制和维护的软件 |
| 数据库系统(DBS) | 由数据库、DBMS、应用系统、管理员等组成的整体 |
7.2 数据管理技术的发展阶段
| 阶段 | 特点 |
|---|---|
| 人工管理阶段 | 无专门软件管理,效率低,共享差 |
| 文件系统阶段 | 以文件存储数据,但冗余大、独立性差 |
| 数据库系统阶段 | 结构化、共享性强、冗余低、独立性强、统一控制 |
7.3 数据模型相关概念
| 概念 | 含义 |
|---|---|
| 数据模型 | 对现实世界数据特征的抽象 |
| 概念模型 | 面向信息世界建模,强调业务语义 |
| 逻辑模型 | 面向 DBMS 支持的数据组织方式 |
| 物理模型 | 面向数据库内部存储实现 |
7.4 E-R 模型基本元素
| 概念 | 含义 |
|---|---|
| 实体 | 可区分的客观对象 |
| 属性 | 实体的特征 |
| 码 | 唯一标识实体的属性或属性组 |
| 实体型 | 同类实体的抽象定义 |
| 实体集 | 同类型实体的集合 |
| 联系 | 实体之间的关联 |
7.5 关系模型基本术语
| 关系术语 | 解释 |
|---|---|
| 关系 | 一张表 |
| 元组 | 一行 |
| 属性 | 一列 |
| 码 | 能唯一确定元组的属性或属性组 |
| 域 | 属性的取值范围 |
| 分量 | 元组中的一个属性值 |
| 关系模式 | 关系结构的描述 |
7.6 三级模式与两级映像
| 名称 | 含义 | 作用 |
|---|---|---|
| 外模式 | 局部逻辑结构,面向应用 | 面向用户视图 |
| 模式 | 全局逻辑结构 | 数据库中心与关键 |
| 内模式 | 物理结构和存储方式 | 面向系统实现 |
| 外模式/模式映像 | 外模式与模式的联系 | 保证逻辑独立性 |
| 模式/内模式映像 | 模式与内模式的联系 | 保证物理独立性 |
八、易混概念辨析
8.1 数据库 vs 数据库管理系统 vs 数据库系统
数据库
是“数据本身”。
数据库管理系统
是“管理数据库的软件”。
数据库系统
是“数据库 + 软件 + 应用 + 人员”的整体。
记忆方法:
- DB:存数据
- DBMS:管数据
- DBS:完整系统
8.2 模式 vs 实例
模式
描述结构,相对稳定。
实例
描述某一时刻的数据内容,经常变化。
记忆方法:
- 模式像“表结构”
- 实例像“表里的具体记录”
8.3 外模式 vs 模式 vs 内模式
外模式
某个应用看到的数据视图。
模式
整个数据库的统一逻辑结构。
内模式
数据库底层怎么存。
记忆方法:
- 外:给用户看
- 模:总体设计图
- 内:给机器存
8.4 逻辑独立性 vs 物理独立性
逻辑独立性
逻辑结构变化,应用程序尽量不变。
物理独立性
物理存储变化,应用程序不受影响。
记忆方法:
- 逻辑独立性:防“表结构变化”影响程序
- 物理独立性:防“底层存储变化”影响程序
九、本章知识主线
如果把本章内容压缩成一条主线,可以这样理解:
- 现实世界中有大量需要管理的数据
- 传统人工管理和文件系统管理存在很多问题
- 因此产生了数据库系统
- 数据库系统通过 DBMS 对数据进行统一管理
- 为了描述和组织数据,需要数据模型
- 现实世界先抽象成概念模型,再转换成逻辑模型和物理模型
- 当前最重要的数据模型是关系模型
- 为了实现数据独立性,数据库系统采用三级模式和两级映像
- 最终,数据库系统由数据库、软件、应用、硬件和人员共同构成
这一条主线如果你真正理解了,第 1 章就算入门了。
十、学习建议
10.1 这一章最该死记硬背的内容
下面这些内容一定要背熟,因为它们既是基础,也是后续章节的前提:
- 数据、数据库、DBMS、DBS 的定义与区别
- 数据库系统阶段的四个主要特点
- 数据模型的三要素
- E-R 模型的六个基本概念
- 关系模型中的基本术语
- 三级模式结构
- 两级映像与两种数据独立性
- 数据库系统的组成
10.2 这一章最该真正理解的内容
只背定义还不够,你至少要真正想通下面几件事:
- 为什么文件系统不够,必须要数据库系统?
- 为什么要做“抽象”?为什么现实世界不能直接塞进数据库?
- 为什么需要“外模式—模式—内模式”三层?
- 为什么应用程序不应该依赖底层存储细节?
- 为什么关系模型要求每个分量都必须是原子值?
10.3 学习本章的正确方式
建议按以下顺序掌握:
第一步:先把概念区分开
尤其是:
- DB / DBMS / DBS
- 模式 / 实例
- 外模式 / 模式 / 内模式
- 逻辑独立性 / 物理独立性
第二步:用“学生—课程—选课”例子反复理解
这几乎是数据库入门最经典的案例。
你要能从这个例子里同时看懂:
- 实体
- 属性
- 码
- 联系
- m:n 联系
- 关系表
- 关系模式
第三步:把第 1 章当作后续章节的地图
后面学习:
- 关系模型
- SQL
- 安全性
- 完整性
- 设计
- 恢复
- 并发控制
都会反复用到本章的概念。
所以这章不是“泛泛而谈”,而是整门课的地基。
十一、本章总结
本章是数据库课程的入门章,主要回答了三个根本问题:
1. 数据库系统是什么
它不是简单的数据文件集合,而是由数据库、DBMS、应用系统和人员共同组成的完整系统。
2. 数据是如何被抽象和组织的
现实世界中的对象需要先通过数据模型抽象,
再以概念模型、逻辑模型、物理模型的方式逐步落地。
其中关系模型是当前最重要的数据模型。
3. 数据库系统为什么具有较高的数据独立性
因为数据库系统采用了三级模式结构和两级映像机制,
从而把用户视图、全局逻辑结构和物理存储分离开来,
减少了应用程序对数据结构与存储细节的直接依赖。
最终你应当形成这样一个整体认识:
数据库技术的本质,不只是“把数据存起来”,而是用一种统一、结构化、可共享、可控制、可扩展的方式来组织和管理数据,从而支撑复杂的信息系统长期稳定运行。