计算机导论_第6章_笔记

第1节 数据库系统的基本概念

1.1 数据库系统的定义

数据库系统(Database System):在数据库系统中实现对数据进行管理的软件系统,是数据库系统的重要组成部分和核心,由五部分组成:

组成部分 说明
数据库(DB) 统一管理的相关数据的集合
数据库管理系统(DBMS) 对数据库进行管理的软件,是数据库系统的核心
数据库管理员(DBA) 对数据库进行规划、设计、协调、维护和管理的 IT 技术人员
数据库应用程序 使用数据库语言开发的、能够满足数据处理需求的应用程序
用户 通过 DBMS 直接操纵数据库,或通过应用程序操纵数据库

例子:某高校的学籍管理系统就是一个典型的数据库系统:

  • 数据库:存储全校学生、课程、成绩的数据集;
  • DBMS:MySQL 或 SQL Server 软件,负责数据的增删改查;
  • DBA:学校信息中心的数据库管理员,负责备份、调优、安全管理;
  • 应用程序:学生选课网站、成绩查询系统;
  • 用户:学生通过选课网站选课,教务处通过后台录入成绩。

1.2 数据库系统的组成

复制代码
数据库 → 数据库管理系统(DBMS)→ 应用程序1 / 应用程序2 → 用户
                                ↓
                              数据库管理员(DBA)
  • DBMS 是连接数据库与应用程序的桥梁
  • DBA 负责整个系统的规划与维护

1.3 数据管理技术的发展

阶段 特点
人工管理阶段 数据不保存、不共享,由应用程序自行管理
文件系统阶段 数据以文件形式存储,但共享性差、冗余度高
数据库阶段 数据集中管理,共享性高、冗余度低、具有数据独立性
高级数据库阶段 面向对象数据库、分布式数据库、数据仓库等

例子:早期学校用 Excel 表格存放学生成绩(文件系统阶段),各系各自维护自己的表格,同一个学生可能在多个 Excel 中出现(数据冗余);升级到数据库后,所有数据集中存储,任何系统通过统一的 DBMS 访问,数据一致不再重复。


1.4 数据库系统的体系结构(三级模式)

复制代码
外模式A ─┐                                    ┌─ 应用程序A1
外模式B ──┤──外模式/概念模式映像──概念模式──概念模式/内模式映像──内模式──数据库│  ├─ 应用程序A2
外模式C ─┘                                    │  ├─ 应用程序B1
                                              │  ├─ 应用程序C1
                                              └─ 应用程序C2
层次 说明
外模式(用户模式) 用户看到的数据视图,不同用户可见不同的数据子集
概念模式 数据库的全局逻辑结构,一个数据库只有一个概念模式
内模式(存储模式) 数据的物理存储方式

两层映像实现了数据独立性

  • 外模式/概念模式映像 → 逻辑独立性(概念模式变了,外模式不用变)
  • 概念模式/内模式映像 → 物理独立性(存储方式变了,概念模式不用变)

例子:同一个学生成绩数据库,学生通过选课系统只能看到自己的成绩(外模式A),教师通过教务系统可以看到所教课程的全部学生成绩(外模式B),教务处可以看到全校汇总数据(外模式C)。三组用户看到的视图不同,但底层是同一份物理数据。


1.5 数据库管理系统的功能

功能 说明
数据库定义 定义数据库结构(表、索引、视图等)
数据库操纵 数据的增删改查
数据库事务管理 保证数据的一致性和完整性
数据库维护 备份、恢复、安全控制
其他 格式转换、网络通信

1.6 数据库管理系统的类型

类型 数据模型 特点
层次型数据库 树型结构 如 IBM IMS,适合一对多的层级数据
网状型数据库 有向图(网络)结构 比层次型灵活,可表示多对多关系
关系型数据库 二维表格 最广泛使用,有完备的关系代数理论支持
面向对象数据库 对象、类、继承等 适合复杂数据类型(如图形、多媒体)

例子

  • 层次型:公司的组织架构------CEO → 部门经理 → 员工,天然是树形结构。
  • 网状型:航班订票系统------一个乘客可订多个航班,一个航班有多个乘客,是多对多关系。
  • 关系型:学生表(学号, 姓名, 年龄)和课程表(课程号, 课程名)通过选课表(学号, 课程号, 成绩)关联。MySQL、PostgreSQL、Oracle 都是关系型数据库。
  • 面向对象:CAD 设计系统,每个零件是一个对象,有属性和方法,零件之间可以有继承关系。

1.7 数据库管理系统的构成(四层结构)

层次 功能
应用层 与用户和应用程序的界面
语言处理层 DDL/DML/DCL 编译器、查询器、授权检验、完整性检查、查询优化
数据存取层 集合操作→记录操作(扫描、排序、查找、插入、删除、修改),并发控制
数据存储层 文件管理器 + 缓冲区管理器,负责页面存储和缓冲区管理

1.8 数据库语言

语言 全称 功能
DDL 数据定义语言(Data Definition Language) 定义数据库的逻辑/物理结构、数据类型、约束
DML 数据操纵语言(Data Manipulation Language) 数据录入、修改、删除、查询、统计
SQL 结构化查询语言(Structured Query Language) 基于关系代数和关系演算的主流数据库语言

例子

  • DDL:CREATE TABLE Student (...) --- 建表。
  • DML:SELECT * FROM Student WHERE age > 20 --- 查询。
  • SQL 同时包含了 DDL、DML、DCL(数据控制)的功能,是一种一体化的语言。

第2节 结构化查询语言 SQL 概述

2.1 SQL 的产生与发展

时间节点 事件
1974年 Boyce 和 Chamberlin 提出 SQL,在 IBM 的 SYSTEM-R 上实现
1986年10月 ANSI 将 SQL 定为美国标准
1987年6月 ISO 将 SQL 定为国际标准
1992年 ISO 颁布 SQL92(对 SQL89 进行修改和扩充)

2.2 SQL 的特点

  • 功能一体化:集 DDL、DML、DCL、嵌入式功能于一体
  • 语法结构统一:所有 SQL 语句使用统一的语法范式
  • 高度非过程化:用户只需要说"要什么",不需要说"怎么拿"
  • 语言简洁:核心命令只有 9 个动词(CREATE、DROP、ALTER、SELECT、INSERT、UPDATE、DELETE、GRANT、REVOKE)

例子 (非过程化):执行 SELECT name FROM Student WHERE age > 20 时,用户只需描述"我要年龄大于20的学生姓名",不需要关心底层是用 B+ 树索引扫描还是全表扫描,DBMS 会自动优化执行路径。


2.3 SQL 的功能

功能 说明 核心命令
数据定义 定义基本表、索引、视图 CREATE、DROP、ALTER
数据操纵 查询、插入、删除、修改 SELECT、INSERT、DELETE、UPDATE
数据控制 权限管理 GRANT、REVOKE
嵌入式 SQL 嵌入到 C/Java/Python 等语言中使用 EXEC SQL 等

第3节 SQL 的数据定义操作

3.1 定义基本表

sql 复制代码
CREATE TABLE <基本表名>
(<属性名1> <数据类型1> [NOT NULL],
  [<属性名2> <数据类型2> [NOT NULL]] ,
  ...
  [<完整性约束>])

3.2 SQL 基本数据类型

数据类型 说明
CHAR(n) 长度为 n 的定长字符串
VARCHAR(n) 最大长度为 n 的变长字符串
INTEGER 全字长整数
SMALLINT 半字长整数
NUMERIC(p,d) 定点数,共 p 位数字,小数点后有 d 位
REAL 浮点数
DOUBLE PRECISION 双精度浮点数
FLOAT(n) 精度至少为 n 位的浮点数
DATE 日期,格式 YYYY-MM-DD
TIME 时间,格式 HH:MM:SS

例子

  • CHAR(10) 存 'ABC',实际占用 10 字符空间(右侧补空格);
  • VARCHAR(10) 存 'ABC',只占用 3 字符空间,更省存储。
  • 一般姓名用 VARCHAR,学号/课程号等固定长度编码用 CHAR。

3.3 定义基本表举例

【例6-1】 创建学生表 S、课程表 C 和学生选课成绩表 SC。

sql 复制代码
-- (1) 学生表 S
CREATE TABLE S
(学号 CHAR(4) NOT NULL,
  姓名 CHAR(8) NOT NULL,
  年龄 SMALLINT,
  性别 CHAR(2),
  系别 CHAR(20),
  PRIMARY KEY(学号))

-- (2) 课程表 C
CREATE TABLE C
(课程号 CHAR(4) NOT NULL,
  课程名 CHAR(4) NOT NULL,
  教师名 CHAR(8),
  PRIMARY KEY(课程号))

-- (3) 选课成绩表 SC
CREATE TABLE SC
(学号 CHAR(4) NOT NULL,
  课程号 CHAR(4) NOT NULL,
  成绩 SMALLINT,
  PRIMARY KEY(学号,课程号)
  FOREIGN KEY(学号)REFERENCES S(学号),
  FOREIGN KEY(课程号)REFERENCES C(课程号),
  CHECK(成绩 IS NULL)OR(成绩 BETWEEN 0 AND 100))

解读

  • PRIMARY KEY 定义主键:S 表以「学号」唯一标识一行;SC 表以「学号 + 课程号」联合作为主键(一个学生可选多门课,同一门课有多个学生选,但同一学生不能重复选同一门课)。
  • FOREIGN KEY 定义外键:SC.学号 引用 S.学号,SC.课程号 引用 C.课程号,确保参照完整性------不能录入一个不存在学生或不存在课程的成绩。
  • CHECK 约束:成绩要么为 NULL(未录入),要么在 0-100 之间。

3.4 修改基本表

操作 语法 示例
增加列 ALTER TABLE <表名> ADD <属性名> <数据类型> 【例6-2】ALTER TABLE S ADD 家庭地址 VARCHAR(40)
删除列 ALTER TABLE <表名> DROP <属性名> <删除方式> 【例6-3】ALTER TABLE S DROP 系别 CASCADERESTRICT

删除方式说明

  • CASCADE(级联):删除该列时,所有引用该列的视图、约束也一并删除。
  • RESTRICT(限制):如果该列被其他对象引用,则拒绝删除。

例子 :假设「系别」列被某视图 CS_Student 引用:

  • RESTRICT → 报错,需要先删除依赖的视图。
  • CASCADE → 删除列的同时自动删除 CS_Student 视图。

3.5 定义索引

sql 复制代码
CREATE [UNIQUE] INDEX <索引名> ON <基本表名>
  (<属性名1>[<次序>][ ,<属性名2>[<次序>]] ...)
[PCTFREE={<整数>}]
示例 说明
CREATE UNIQUE INDEX SNOINDEX ON S(学号 ASC) 在 S 表的学号列上按升序建立唯一索引
CREATE INDEX GRADEINDEX ON SC(成绩 DESC, 学号 DESC) 在 SC 表上按成绩降序、学号降序建立索引

例子 (索引的作用):在图书管理系统中,如果经常按「书名」搜索,在书名列上建索引后,查询 SELECT * FROM Books WHERE name = '数据库原理' 可以从全表扫描(100万条记录逐条比较)变成 B+ 树索引查找(约 20 次磁盘 I/O),速度提升上万倍。但索引并非越多越好------每个索引需要额外存储空间,且 INSERT/UPDATE/DELETE 时需要同步维护索引,会降低写操作性能。


第4节 SQL 的数据查询操作

SQL 的数据查询是其核心功能,支持三种查询方式:简单查询连接查询嵌套查询

4.1 数据查询语句的一般形式

sql 复制代码
SELECT   <目标属性>
FROM     <基本表名或视图名>
[WHERE   <条件表达式>]
[GROUP BY <属性名1> [HAVING <条件表达式>]]
[ORDER BY <属性名2> [<次序>]]

各子句含义

子句 作用
SELECT 指定要输出的列(用 * 表示全部列)
FROM 指定数据来源的表或视图
WHERE 筛选满足条件的行
GROUP BY 按指定列分组,每组产生一条汇总结果
HAVING 分组后的筛选条件(与 WHERE 区别:WHERE 在分组前筛选行,HAVING 在分组后筛选组)
ORDER BY 排序(ASC 升序 / DESC 降序)

例子SELECT 系别, AVG(年龄) FROM S GROUP BY 系别 HAVING AVG(年龄) > 20 ORDER BY 系别 ASC

这条语句的执行顺序:①从 S 表取数据 → ②按系别分组 → ③计算每组的平均年龄 → ④筛选平均年龄 > 20 的组 → ⑤按系别升序排列。


4.2 WHERE 子句可用的运算符

类别 运算符
算术 + - * /
比较 < <= = >= > <>(或 !=
逻辑 AND OR NOT
集合 UNION(并) INTERSECT(交) EXCEPT(差)
集合成员 IN(属于) NOT IN(不属于)
谓词 EXISTS ALL SOME UNIQUE

4.3 常用系统内部函数(聚合函数)

函数 格式 含义
AVG AVG([DISTINCT] <属性名>) 求平均值,DISTINCT 只算不同值
SUM SUM([DISTINCT] <属性名>) 求和
MAX MAX(<属性名>) 最大值
MIN MIN(<属性名>) 最小值
COUNT COUNT(*) 统计元组个数
COUNT COUNT(DISTINCT <属性名>) 统计不同值的元组个数

例子

  • SELECT COUNT(*) FROM S WHERE 性别 = '男' → 统计男生总人数。
  • SELECT COUNT(DISTINCT 系别) FROM S → 统计有多少个不同的系(去重计数)。
  • SELECT 系别, COUNT(*) AS 人数 FROM S GROUP BY 系别 → 按系统计人数。

4.4 简单查询举例(单表查询)

示例 SQL 语句 说明
【例6-7】查询全部学生信息 SELECT * FROM S 等价于 SELECT 学号,姓名,年龄,性别,系别 FROM S
【例6-8】查询计算机系和电气系学生的学号、姓名、年龄 SELECT 学号,姓名,年龄 FROM S WHERE 系别='计科系' OR 系别='电气系' 等价于 WHERE 系别 IN ('计科系','电气系')
【例6-9】查询年龄在18~20岁学生的姓名和性别 SELECT 姓名,性别 FROM S WHERE 年龄 >= 18 AND 年龄 <= 20 等价于 WHERE 年龄 BETWEEN 18 AND 20
【例6-10】查询所有男生的学号、姓名、出生年份 SELECT 学号,姓名,2004-年龄 FROM S WHERE 性别='男' 表达式 2004-年龄 在结果中生成新列(假设当年为2004)
【例6-11】查询计算机系女生总人数和平均年龄 SELECT COUNT(*), AVG(年龄) FROM S WHERE 系别='计科系' AND 性别='女' 聚合函数 + 多条件筛选
【例6-12】查询选修 C001 课程学生的学号和成绩(按成绩降序) SELECT 学号,成绩 FROM SC WHERE 课程号='C001' ORDER BY 成绩 DESC 单表查询 + 排序

BETWEEN 补充例子WHERE 成绩 BETWEEN 60 AND 80 等价于 WHERE 成绩 >= 60 AND 成绩 <= 80,注意边界是闭区间,60 分和 80 分都会被选入。


4.5 多表查询(连接查询)举例

当查询涉及两个或两个以上表时,需要通过连接条件(通常是外键 = 主键)将表关联起来。

示例 SQL 语句 说明
【例6-13】查询选修 C001 课程学生的学号和姓名 SELECT S.学号, 姓名 FROM S, SC WHERE S.学号=SC.学号 AND 课程号='C001' S 和 SC 通过 S.学号=SC.学号 连接
【例6-14】查询选修"操作系统"课程学生的学号和姓名 SELECT S.学号, 姓名 FROM S, C, SC WHERE S.学号=SC.学号 AND C.课程号=SC.课程号 AND 课程名='操作系统' 三表连接:S ⟷ SC ⟷ C
【例6-15】查询选修 C001 且成绩 ≥ 80 的学生学号、姓名和成绩 SELECT S.学号, 姓名, 成绩 FROM S, SC WHERE S.学号=SC.学号 AND SC.课程号='C001' AND 成绩 >= 80 连接 + 多条件筛选

连接查询执行过程(以例6-13为例):

  1. 对 S 和 SC 做笛卡尔积(S 的每一行与 SC 的每一行组合,假设 S 有 1000 行、SC 有 5000 行,则产生 500 万行中间结果)
  2. S.学号=SC.学号 条件过滤,只保留学号匹配的行
  3. 课程号='C001' 再筛选
  4. 最后只取 S.学号姓名 两列输出

实际上 DBMS 会做查询优化,通常不会真的生成笛卡尔积,而是使用索引高效地做连接。


4.6 嵌套查询举例

嵌套查询:在 WHERE 子句中包含另一个 SELECT 语句(子查询),SQL 允许多层嵌套。

示例 SQL 语句
【例6-16】查询选修 C001 学生的学号和姓名 SELECT 学号, 姓名 FROM S WHERE S.学号 IN (SELECT 学号 FROM SC WHERE 课程号='C001')
【例6-17】查询选修"操作系统"课程学生的学号和姓名 SELECT 学号, 姓名 FROM S WHERE 学号 IN (SELECT 学号 FROM SC WHERE 课程号 IN (SELECT 课程号 FROM C WHERE 课程名='操作系统'))

嵌套 vs 连接

例6-16 的嵌套查询等价于例6-13 的连接查询。区别在于:

  • 嵌套查询 :先执行内层子查询获得学号集合,再用 IN 筛选外层,逻辑更贴近"分步思考"。
  • 连接查询:通过 JOIN 条件一次性关联两表。
  • 实际执行时由 DBMS 优化器转换为等价的执行计划,性能取决于具体索引和表大小。

另一个常见嵌套例子:查询年龄大于全系平均年龄的学生:

sql 复制代码
SELECT * FROM S AS s1 WHERE 年龄 > 
  (SELECT AVG(年龄) FROM S AS s2 WHERE s2.系别 = s1.系别)

这里用了相关子查询(内层引用了外层别名 s1),每处理外层一行就执行一次内层。


第5节 SQL 的数据更新操作

5.1 数据插入(INSERT)

形式1:直接插入值

sql 复制代码
INSERT INTO <基本表名> [(<属性名1>[,<属性名2>] ...)]
VALUES(<常量1>[,<常量2>] ...)

形式2:从查询结果插入

sql 复制代码
INSERT INTO <基本表名> [(<属性名1>[,<属性名2>] ...)]
<SELECT语句>
示例 SQL 语句 说明
【例6-18】插入一条新学生记录 INSERT INTO S VALUES ('20022503','周冰',22,'男','计算机科学与工程系') 逐字段给出值
【例6-19】创建平均年龄表并存入查询结果 CREATE TABLE DEPTAGE (系别 CHAR(20) NOT NULL, 平均年龄 SMALLINT, PRIMARY KEY(系别))INSERT INTO DEPTAGE (系别, 平均年龄) SELECT 系别, AVG(年龄) FROM S GROUP BY 系别 形式2:将聚合查询的结果批量插入新表

例子(形式2的实际应用) :电商系统中,每日将订单表中当天的数据通过 INSERT INTO OrderHistory SELECT * FROM Orders WHERE order_date = CURDATE() 归档到历史表,实现数据分离。


5.2 数据删除(DELETE)

sql 复制代码
DELETE FROM <基本表名> [WHERE <条件表达式>]

注意事项

  • 删除的是整行元组,不能删除元组中的某些属性值
  • 不带 WHERE 子句会删除全部元组,但表结构仍然保留
  • 一次只能从一个基本表中删除
  • 若要跨多表删除,需用多个 DELETE 语句
  • DELETE FROM <表名> 会使表变为空表,需格外慎重
示例 SQL 语句
【例6-20】删除学号为 20022502 的学生 DELETE FROM S WHERE 学号='20022502'

DELETE vs DROP vs TRUNCATE 的区别

操作 效果 可回滚
DELETE FROM S WHERE ... 删除符合条件的行 是(事务内)
DELETE FROM S 删除所有行,表结构保留
TRUNCATE TABLE S 删除所有行,重置自增计数器 否(MySQL)
DROP TABLE S 删除整个表(结构+数据)

例子 :如果 SC 表中有学生的选课记录,直接删除 S 表中的学生会导致 SC 中出现"孤儿"记录(参照完整性被破坏)。正确做法是设置外键时指定 ON DELETE CASCADE,级联删除关联记录。


5.3 数据修改(UPDATE)

sql 复制代码
UPDATE <基本表>
SET <属性名1> = <表达式1> [,<属性名2> = <表达式2>, ...]
[WHERE <条件表达式>]
示例 SQL 语句 说明
【例6-21】将学号 20022501 学生的系别改为电气系 UPDATE S SET 系别='电气工程系' WHERE 学号='20022501' 修改单行的单个字段
【例6-22】所有学生年龄加 1 UPDATE S SET 年龄 = 年龄 + 1 批量修改(无 WHERE 则修改全表)

例子 (业务场景):每到新学期,学生年龄统一加一岁,就可以用 UPDATE S SET 年龄 = 年龄 + 1 一次性更新所有行,而不需要逐条修改。又如电商系统中 UPDATE Products SET price = price * 0.9 WHERE category = '图书' 实现图书品类打九折的批量调价。


第6节 SQL 的视图操作

6.1 视图的概念

视图(View) :从多个基本表或其他视图构造出来的虚拟表

  • 定义视图时系统仅保存其定义(SQL 语句),不存储实际数据
  • 当用户使用视图时,才从基本表中取出实际数据
  • 视图可以像基本表一样被查询和(有限制地)更新

例子:学校里不同角色需要看到不同的数据:

  • 学生视图:CREATE VIEW StudentView AS SELECT 学号,姓名,年龄 FROM S --- 看不到他人的敏感信息
  • 教师视图:CREATE VIEW TeacherView AS SELECT S.姓名,C.课程名,SC.成绩 FROM S,SC,C WHERE S.学号=SC.学号 AND C.课程号=SC.课程号 --- 看到所教课程的学生成绩
    所有视图都基于同一组基本表 S、C、SC,但不同角色看到不同的"虚拟表",实现了数据安全和访问控制。

6.2 定义视图

sql 复制代码
CREATE VIEW <视图名> [(<属性名1> [,<属性名2>] ... )]
AS <SELECT 语句>
[WITH CHECK OPTION]

规则

  • SELECT 语句中不能 含有 UNIONORDER BY
  • 列顺序由 SELECT 的目标列决定
  • WITH CHECK OPTION:对视图做 INSERT/UPDATE 时,必须满足视图定义中的条件
示例 SQL 语句
【例6-23】创建计算机系学生视图 CREATE VIEW CSS AS SELECT 学号, 姓名, 性别, 年龄 FROM S WHERE 系别='计算机科学与工程系'

WITH CHECK OPTION 例子

sql 复制代码
CREATE VIEW CSS AS 
SELECT 学号, 姓名, 年龄, 系别 FROM S 
WHERE 系别 = '计算机系'
WITH CHECK OPTION;

如果执行 INSERT INTO CSS VALUES ('2024001', '李明', 20, '电气系'),尽管视图底层对应的是 S 表,但因为 系别='电气系' 不满足视图定义中的 WHERE 系别='计算机系',操作会被拒绝。这保证了通过视图操作的数据始终符合视图的筛选条件。


6.3 视图的查询

示例 SQL 语句 转换后的等价语句
【例6-24】查询计算机系年龄 > 22 的学生 SELECT 学号,姓名,年龄 FROM CSS WHERE 年龄 > 22 SELECT 学号,姓名,年龄 FROM S WHERE 系别='计科系' AND 年龄 > 22

DBMS 在内部将视图查询自动转换 为对基本表的查询,这个过程称为视图消解


6.4 视图的更新操作

视图支持 INSERT、DELETE、UPDATE 操作,但最终都转换为对基本表的操作

示例 SQL 语句 转换后的等价语句
【例6-25】修改视图中的姓名 UPDATE CSS SET 姓名='赵立' WHERE 学号='20022602' UPDATE S SET 姓名='赵立' WHERE 系别='计科系' AND 学号='20022602'

视图更新的限制 :并非所有视图都可更新。由多个表连接、聚合函数、GROUP BY、DISTINCT 等定义的视图通常不可更新(因为 DBMS 无法将更新操作正确映射回各个基本表)。


6.5 视图的撤销

sql 复制代码
DROP VIEW <视图名>
含义 说明
DROP VIEW CSS 删除视图 CSS 的定义
级联影响 由该视图导出的其他视图也自动被删除
基本表删除影响 如果基本表被删除,基于它的视图也自动被删除

例子 :假设定义了三个视图:CSS(基于 S 表)、CSS_Female(基于 CSS,筛选女生)、CSS_Female_Young(基于 CSS_Female,筛选年龄 < 20)。执行 DROP VIEW CSS 后,CSS_Female 和 CSS_Female_Young 也会一并被自动删除,因为失去了依赖基础。


第7节 几种新型的数据库系统

7.1 分布式数据库(DDB)

项目 说明
定义 物理上分散在计算机网络各结点上,但逻辑上属于同一系统的数据集合
管理系统 DDBMS,负责局部数据管理、数据通信、分布数据管理和数据字典管理
特点 数据分布性、逻辑相关性、局部自治与全局共享、数据冗余性、数据独立性、系统透明性

例子:某全国连锁超市,每个城市的门店有自己的数据库服务器存储本地销售数据(物理分散),但总部可以像查询一个统一数据库一样查询"全国今天总销售额"(逻辑统一)。DDBMS 自动将查询分解下发到各结点,汇总结果返回。各门店可以独立运营(局部自治),同时数据又能全局共享。


7.2 多媒体数据库(MDB)

项目 说明
定义 以数据库方式合理存储多媒体信息(文字、图形、图像、音频、视频等)的集合
管理系统 MDBMS,负责多媒体对象的存储、处理、检索和输出
特点 媒体多样性、信息量大、管理复杂
主要研究内容 多媒体数据模型、MDBMS 体系结构、存取与组织技术、查询语言、同步控制、数据压缩

例子:一个在线教育平台的课程数据库不仅存储课程标题和描述(文本),还存储讲师视频(音频/视频)、课件截图(图像)、作业文件等。传统关系型数据库处理 BLOB 效率低,多媒体数据库专门优化了大对象存储、流媒体检索和同步播放。


7.3 并行数据库(PDB)

项目 说明
定义 数据库技术与并行技术相结合的产物,在并行体系结构支持下实现数据库操作处理的并行化
目标 提高数据库效率
主要研究内容 并行数据库体系结构、并行数据库机、并行操作算法、并行查询优化、并行数据库物理设计、数据加载和再组织技术

例子 :电商双11大促时,单台数据库服务器处理每秒数十万次查询会瘫痪。并行数据库将数据分散到如 100 个节点上,每个节点只存一部分数据(数据分区),一个 SELECT COUNT(*) FROM Orders 查询会被分解为 100 个子查询并行执行,各节点独立统计自己的订单数,最终汇总------理论上可获得接近 100 倍的加速。


7.4 演绎数据库(DeDB)

项目 说明
定义 数据库技术与逻辑理论相结合的产物,支持演绎推理功能
组成 外延数据库 EDB (由关系组成的事实数据)+ 内涵数据库 IDB (由规则组成)+ 演绎推理机构
主要研究内容 逻辑理论与逻辑语言、递归查询处理与优化算法、演绎数据库体系结构

例子 :在一个家族数据库中,EDB 存储基本事实(parent(张三, 李四) 表示张三是李四的父亲),IDB 存储推理规则:ancestor(X, Y) :- parent(X, Y)(父母是祖先)和 ancestor(X, Z) :- parent(X, Y) AND ancestor(Y, Z)(父母的祖先是祖先)。用户查询 ancestor(张三, ?) 时,演绎推理引擎会递归展开规则,自动推导出张三的所有后代,而无需显式存储所有祖孙关系。


7.5 主动数据库(Active DB)

项目 说明
定义 除了传统被动服务功能外,还能根据当前状态主动作出反应,执行某些操作
实现方法 嵌入 ECA 规则(Event-Condition-Action,事件-条件-动作)
ECA 规则流程 事件发生 → 检测当前状态是否满足条件 → 若满足则触发动作
需解决的技术问题 知识模型、执行模型、事件监测和条件检测方法、事务调度、安全性和可靠性、体系结构、系统效率

例子:库存管理系统中设置 ECA 规则:

  • 事件(E):库存量更新事件
  • 条件(C):某商品库存 < 安全阈值(如 10 件)
  • 动作(A):自动生成一张补货订单 + 发送告警邮件给采购部门

传统数据库只能被动响应查询 SELECT * FROM Inventory WHERE quantity < 10(需要用户主动查询才知道缺货),主动数据库则在库存下降低于阈值时自动触发补货流程,无需人工干预。


7.6 数据仓库(Data Warehouse)

项目 说明
定义 支持管理决策的面向主题的、集成的、稳定的、定期更新的数据集合
核心功能 对异构数据源的数据进行提取、过滤、加工、存储,响应查询和决策分析请求
数据组织方式 主题重组原始数据,转换为有用信息
管理系统组成 监控器、转换器、集成器、元数据管理器
工具层 OLAP 工具、预测分析工具、数据挖掘工具

四大特征详解

特征 说明 例子
面向主题 按业务主题组织数据,而非按应用 "销售"主题整合订单、退货、促销数据
集成 来自不同源系统的数据统一编码和命名 A 系统存性别为 M/F,B 系统存男/女,统一为男/女
稳定 数据一旦进入仓库就不轻易更改 历史销售数据在仓库中只追加,不修改
定期更新 按周期从业务系统刷新数据 每天凌晨 3 点从 ERP 系统同步前一天的数据

例子:某超市的数据仓库按"商品"、"门店"、"时间"三个维度组织销售数据。分析人员可以通过 OLAP 工具快速回答:"去年第四季度华东区饮料类商品中,哪种商品毛利最高?"------在传统业务数据库中做这种多维度分析可能需要编写几十行 SQL 且执行数小时,在数据仓库中通过预计算的立方体几秒就能出结果。


第8节 数据库系统的应用

8.1 信息及其基本特征

信息:经过加工而成为有一定意义和价值且具有特定形式的数据,对信息接收者的行为有一定影响。

特征 说明
时间性 信息有时效性,过时信息价值下降
事实性 信息应反映客观事实
明了性 信息应清晰易懂
完整性 信息应完整无缺失
多样性 信息表现形式多样(文本、图表、音视频)
共享性 信息可多人共享而不损耗
模糊性 有些信息天然带有不确定性

例子:天气预报是典型的信息------原始数据是各气象站采集的温度、湿度、气压等数值(数据),经过气象模型加工后生成"明天上海有小雨,18-25°C"(信息)。这个信息有时效性(明天过后就没用了),可多人共享,但带有一定模糊性(可能预报不准)。


8.2 信息系统(IS)

信息系统(Information System):由人员、活动、数据、网络和技术等要素组成的集成系统,目的是对业务数据进行采集、存储、处理和交换,以支持日常业务运作和管理决策。

信息系统的分类(按管理层级)

复制代码
战略规划层     ← DSS(决策支持系统)          ← 高级管理人员    非结构化决策
管理规划层     ← MIS(管理信息系统)          ← 中层管理人员
操作规划层     ← EDP/TPS(事务处理系统)      ← 基层管理人员    结构化决策

例子(三层系统在公司中的实际应用)

  • TPS/EDP(操作层):收银系统扫描商品条码 → 更新库存 → 记录交易,处理的是高度结构化的日常事务。
  • MIS(管理层):汇总各门店日销售数据,生成周报/月报------销售额趋势、库存周转率等,帮助店长和区域经理做运营决策。
  • DSS(战略层):基于历史 5 年的销售数据和外部市场数据,帮助 CEO 分析"是否应该在华东开设新门店",涉及的因素复杂且没有标准答案(半结构化/非结构化决策)。

8.3 事务处理系统(TPS)

项目 说明
定义 利用计算机对具体业务进行处理的信息系统
又称 电子数据处理系统(EDP)
基础 计算机 + 网络
功能 对业务数据进行采集、存储、检索、加工和传输

分类维度

  • 处理作业方式分类
  • 联机方式分类
  • 系统的组织和数据存储方式分类
  • 面向管理工作的层次分类

例子:银行的 ATM 系统是典型的 TPS------持卡人插入银行卡、输入密码、选择取款,系统实时验证账户余额、扣款、出钞、记录交易日志。整个过程是高度结构化的重复性事务处理,要求高并发、高可靠和事务一致性(不能出现钱扣了但没吐钞的情况)。


8.4 管理信息系统(MIS)

项目 说明
定义 全面的以计算机为基础的集成化人机系统,具有分析、计划、预测、控制和决策功能
核心能力 将数据处理功能与管理模型的优化计算、仿真等功能结合,提供决策信息
面向 管理层(战术规划),处理结构化或半结构化问题

MIS 的特点

特点 说明
以计算机为基础的人机系统 计算机处理数据,人做判断和决策
集成化系统 各子系统数据互通,避免信息孤岛
提供管理信息 输出报表和指标,辅助管理者决策
支持多职能 涵盖作业、管理、分析和决策

例子:一个企业的 ERP 系统就是典型的 MIS------它集成了财务、采购、生产、仓储、销售、人力资源等模块。当销售部录入一笔订单后,系统自动检查库存 → 不足则触发采购建议 → 安排生产计划 → 核算成本和利润。各部门在统一平台上协作,管理者可随时查看各环节的关键绩效指标(KPI),发现异常(如某产品库存周转天数突然上升)及时调整。


8.5 决策支持系统(DSS)

项目 说明
定义 计算机科学、行为科学和系统科学相结合的产物,支持半结构化和非结构化决策
面向 高级管理人员的战略规划和宏观决策
核心能力 提供分析问题、构造模型、模拟决策过程、评价决策效果的决策支持环境

决策过程三阶段模型

  1. 信息阶段:收集和识别问题相关信息
  2. 设计阶段:构造和分析可能的方案
  3. 选择阶段:从备选方案中选择最优方案

决策问题类型

类型 说明 例子
结构化决策 规则明确、可编程 根据库存低于阈值自动生成采购单
半结构化决策 部分规则明确,部分需判断 制定年度预算(有历史数据和公式,但需要根据市场变化调整)
非结构化决策 无成熟规则,依赖经验和直觉 是否进入新市场、是否收购某公司

例子:某零售企业考虑在 A 城市开设 3 个新门店,DSS 发挥作用的过程:

  1. 信息阶段:DSS 从数据仓库调取 A 城市人口分布、消费水平、竞争对手分布、交通流量等数据,可视化展示。
  2. 设计阶段:利用选址模型,输入租金、人流量、预计客单价等参数,生成多个候选方案并模拟各方案的 3 年营收预测。
  3. 选择阶段 :高管对比各方案的 ROI(投资回报率)、风险等指标,结合经验判断最终选定方案。DSS 不做决定,而是提供数据和模型辅助人做决定。

8.6 DSS 的组成

子系统 功能
数据库管理子系统 存放决策所需数据,具有维护、控制和快速选择抽取数据的能力
模型库管理子系统 存放通用和特殊决策模型,提供非结构化建模语言,支持模型维护和调用
方法库管理子系统 存放各类模型的求解方法和最优化算法,支持方法维护和调用
知识库管理子系统 存放经验决策者的决策知识和推理规则,知识库 + 推理机构成专家系统
会话子系统 提供交互式人机界面

例子(各子系统协同工作):上述门店选址决策中------

  • 数据库提供人口、租金、竞争对手等原始数据;
  • 模型库提供"重力模型"(根据距离和人流预测销售额)和"盈亏平衡模型";
  • 方法库提供线性规划、蒙特卡洛模拟等求解算法;
  • 知识库存储"如果周边有地铁站,人流量系数 ×1.3"等专家规则;
  • 会话子系统以图表、地图、滑块等形式让高管直观地"如果租金涨 10% 会怎样"(What-if 分析)。

8.7 联机分析系统(OLAP)

概念 说明
OLTP(联机事务处理) 对操作型数据进行简单的查询、统计、生成报表,不满足决策分析需求
OLAP(联机分析处理) 针对特定问题的联机数据访问和分析技术,数据经过净化、转换、集成,按**"维"**组织在多维数据库或数据仓库中

OLAP 分析工具

  • 多维数据基本操作工具(切片、切块、旋转、上卷、下钻)
  • 多维数据查询工具
  • 多维数据分析工具
  • 预测工具
  • 报表和图形生成工具

例子(OLAP 多维分析操作) :某零售企业的销售多维立方体,维度包括时间 (年/季/月)、商品 (品类/品牌/单品)、地区 (大区/省/市),度量包括销售额、利润、销量

  • 切片(Slice):固定时间 = "2024年",只看一个平面 → "2024年各商品在各地区的销售额"。
  • 切块(Dice):取时间=2024年 且 地区=华东 → "2024年华东区各商品的销售额"。
  • 下钻(Drill-down):从"2024年各季度销售额"下钻到"Q1 各月销售额"。
  • 上卷(Roll-up):从"各品牌销售额"上卷到"各品类销售额"汇总。

这些操作在 OLAP 系统中只需拖拽鼠标即可完成,而在传统 SQL 中每次都要重写查询语句。


8.8 数据挖掘系统(Data Mining)

项目 说明
定义 从大型数据库或数据仓库中提取隐含的、未知的、非平凡的、有潜在应用价值的信息或模式的高级处理过程
数据来源 大型数据库 / 数据仓库
输出 隐含的模式、规则、知识

数据挖掘的类型

类型 说明 例子
预测模型 根据历史数据预测未来趋势 根据过去 3 年销售数据预测下季度销售额
关联分析 发现数据项之间的关联关系 "购买尿布的顾客有 70% 也购买啤酒"(购物篮分析)
分类分析 将数据分配到预定义的类别中 判断一封邮件是"垃圾邮件"还是"正常邮件"
聚类分析 将相似数据自动归为一组(无预定义类别) 根据消费行为将客户分为"高价值""潜力""流失风险"三类
序列分析 发现事件发生的时间顺序模式 用户浏览网页 A → B → C → 购买,识别转化路径
偏差检测 发现异常数据 信用卡交易中的欺诈检测:突然在异地大额消费
模式相似性挖掘 发现相似的模式 寻找走势相似的股票
Web 数据挖掘 从 Web 数据中提取模式 分析社交媒体情绪预测股价

经典例子(关联分析------购物篮分析)

沃尔玛通过分析数百万条交易记录发现:周五晚上,购买尿布的年轻父亲中,有 30%~40% 同时购买了啤酒。于是超市将啤酒货架移到尿布旁边,两种商品的销量都显著提升。这个有趣的关联规则就是通过数据挖掘的 Apriori 算法发现的。
聚类分析例子:某电商平台根据用户的浏览、收藏、购买行为,通过 K-Means 聚类算法将 100 万用户自动分为 5 个群体------"价格敏感型""品牌忠诚型""冲动消费型""低频浏览型""流失预警型",然后针对不同群体推送不同的优惠策略,如给流失预警型用户发送专属折扣券。


本章小结

本章核心知识框架:

  1. 数据库基本概念:数据库系统 = DB + DBMS + DBA + 应用程序 + 用户;三级模式体系结构;DBMS 的四层架构(应用层→语言处理层→数据存取层→数据存储层)
  2. SQL 语言:集 DDL、DML、DCL、嵌入式于一体,核心是数据查询(简单查询、连接查询、嵌套查询)
  3. 数据定义:CREATE TABLE(建表)、ALTER TABLE(修改表、增删列)、CREATE INDEX(建索引)
  4. 数据查询:SELECT-FROM-WHERE-GROUP BY-HAVING-ORDER BY,聚合函数(AVG/SUM/MAX/MIN/COUNT),多表连接(笛卡尔积 + 连接条件),嵌套子查询(IN / EXISTS)
  5. 数据更新:INSERT(两种形式)、DELETE(删整行)、UPDATE(批量修改)
  6. 视图:虚拟表,定义时只存 SQL 语句,使用时才从基本表取数,支持查询和受限更新,删除一个视图会级联删除其派生视图
  7. 新型数据库:分布式数据库、多媒体数据库、并行数据库、演绎数据库、主动数据库、数据仓库
  8. 数据库应用:TPS(事务处理)→ MIS(管理信息)→ DSS(决策支持);OLAP(多维分析)与数据挖掘(发现隐含模式)
相关推荐
liuyicenysabel3 小时前
多服务上线日记二:
服务器·笔记·学习
凉、介4 小时前
ARMv8 架构下的刷 Cache 操作
c语言·笔记·学习·架构·嵌入式·arm
cmes_love5 小时前
如何下载沪深股票市场的行情数据,包括委托、成交、订单薄、沪深股票、etf、可转债、指数五档订单薄数据,买一到买五、卖一到卖五历史行情数据笔记
大数据·笔记
摇滚侠5 小时前
Apache Skywalking 实战 阅读笔记 第二章
笔记·apache·skywalking
chushiyunen5 小时前
word使用笔记(二)、邮件合并(模板套用)
笔记·word
江华森6 小时前
Python 编程快速上手:让繁琐工作自动化 —— 19章全实战笔记
笔记·python·自动化
薄荷椰果抹茶6 小时前
计算机导论_第4章_笔记
服务器·网络·笔记
kgduu7 小时前
react-redux学习笔记
笔记·学习·react.js