数据库核心概念笔记(权威教材版)
一、基本概念
数据库(DB)
长期存储在计算机内、有组织、可共享的大量数据集合。
特点:永久存储、有组织、可共享、统一管理。数据库管理系统(DBMS)
位于用户与操作系统之间的数据管理软件。
功能:数据定义、数据操纵、数据库运行管理、数据库建立维护。数据库系统(DBS)
计算机系统中引入数据库后的整个系统。
组成:DB + DBMS + 应用程序 + DBA。
二、数据模型与结构
数据模型组成
- 数据结构
- 数据操作
- 完整性约束
逻辑数据模型(主流)
- 关系模型(最常用)
- 层次模型
- 网状模型
- 面向对象模型
- 对象关系模型
三、三级模式 & 两级独立性
三级模式
- 外模式(子模式/用户模式):用户看到的局部数据逻辑结构。
- 模式(概念模式/逻辑模式):数据库全体数据的逻辑结构和特征描述。
- 内模式(存储模式):数据物理结构与存储方式。
两级独立性
- 逻辑独立性:模式改变,外模式/应用程序不变。
- 物理独立性:内模式改变,模式/外模式/应用不变。
四、关系模型基本术语
- 关系:一张二维表。
- 关系模式:对关系的型描述,简写为 R(属性1, 属性2, …)
- 属性:表中的列。
- 元组:表中的行(记录)。
- 域:属性的取值范围。
- 分量:元组中的一个属性值。
- 基数:关系中的元组个数。
- 度数(目):关系中的属性个数。
五、码(键)相关
- 候选码:能唯一标识一个元组的最小属性集。
- 主码:用户选作唯一标识的候选码。
- 全码:整个所有属性共同作为候选码。
- 主属性:候选码中的属性。
- 非主属性:不包含在任何候选码中的属性。
六、三大完整性约束
- 实体完整性:主码不能为空、不能重复。
- 参照完整性:外码取值——等于被参照关系某个主码值,或为 NULL。
- 用户定义完整性:用户按应用需求定义的约束(如性别只能男女、成绩 0–100)。
七、安全性 & 完整性
- 安全性控制:保护数据库防止非法使用、泄露、破坏。
手段:用户鉴别、存取控制、视图、审计、加密。 - 完整性控制:保证数据正确、有效、相容。
包括:实体、参照、用户定义完整性。
八、视图
定义
视图是从一个或多个基本表(或视图)导出的虚拟表。其内容由查询定义,不实际存储数据,只存储定义。特点
- 视图是虚拟表,操作视图与操作基本表类似
- 对视图的更新(增、删、改)有限制,可能映射回基本表
优点
- 简化用户操作:隐藏复杂查询(如多表连接)
- 数据安全:隐藏敏感数据,只展示授权信息
- 逻辑数据独立性:数据库模式改变时,可通过修改视图定义保持应用程序不变
视图的更新限制
并非所有视图都允许更新。通常,若视图定义包含以下元素,则视图不可更新:- 分组(GROUP BY)
- 聚合函数(SUM、AVG 等)
- DISTINCT
- 多表连接(某些条件下不可更新)
九、事务与 ACID
- 事务:用户定义的一个数据库操作序列,是不可分割的逻辑单位。
- ACID 四大特性
- 原子性:要么全做,要么全不做
- 一致性:执行前后数据库保持一致
- 隔离性:并发事务互不干扰
- 持久性:提交后永久生效
十、并发控制 & 封锁
- 并发控制:解决多用户同时操作带来的数据不一致。
- X 锁(排他锁/写锁)
- 加锁后其他事务不能读、不能写
- 写操作加 X 锁
- S 锁(共享锁/读锁)
- 加锁后其他事务只能读不能写
- 读操作加 S 锁
十一、并发问题 & 封锁协议
- 丢失更新:两个事务同时修改,一个覆盖另一个。
- 一级封锁协议
- 写数据加 X 锁,直到事务结束释放
- 解决:丢失更新
- 脏读:读到未提交又被撤销的数据。
- 二级封锁协议
- 一级 + 读数据加 S 锁,读完释放
- 解决:丢失更新、脏读
- 不可重复读:同一事务内两次读同一数据结果不同。
- 三级封锁协议
- 一级 + 读数据加 S 锁,事务结束释放
- 解决:丢失更新、脏读、不可重复读
十二、恢复技术
- 数据冗余:同一数据多次存储,导致不一致、浪费空间。
- 登记日志文件 & 数据转储
- 日志:记录事务所有更新操作
- 转储:定期备份数据库副本
- 日志先写原则(WAL):先写日志文件,再写数据库。保证可恢复。
十三、故障恢复策略
- 事务故障
- 仅影响单个事务
- 恢复:UNDO(撤消)
- 系统故障(停电、宕机)
- 影响所有事务,不破坏数据库
- 恢复:REDO + UNDO
- 介质故障(磁盘损坏)
- 物理破坏数据库
- 恢复:重装备份 + 重做日志
十四、数据库设计六阶段
- 需求分析阶段:收集信息、明确需求、输出数据字典。
- 概念模型设计:画 E-R 图,独立于 DBMS。
- 逻辑结构设计阶段:E-R 图 → 关系模式,规范化。
- 物理结构设计:选择存储结构、索引、存取路径。
- 数据库实施阶段:建库、建表、加载数据、试运行。
- 数据库运行和维护阶段:监控、优化、备份、恢复、重构。
十五、范式
范式是关系数据库规范化理论的核心,用于衡量关系模式的优劣,减少数据冗余和操作异常。
第一范式(1NF)
- 定义:关系中的每个属性都是不可再分的原子值。
- 目标:确保列的原子性,不允许表中套表或多值属性。
第二范式(2NF)
- 定义:在 1NF 的基础上,消除非主属性对候选码的部分函数依赖。
- 核心:所有非主属性必须完全依赖于整个候选码,而不是仅依赖候选码的一部分(主要针对候选码为复合属性的情况)。
第三范式(3NF)
- 定义:在 2NF 的基础上,消除非主属性对候选码的传递函数依赖。
- 核心:非主属性既不部分依赖码,也不传递依赖码。即:如果 X → Y,Y → Z,且 Y 不决定 X,则存在传递依赖,需分解。
BC 范式(BCNF)
- 定义:在 3NF 的基础上,消除主属性对候选码的部分依赖和传递依赖。
- 核心:对于每个非平凡函数依赖 X → Y,X 都必须包含候选码。
- 特点:BCNF 是 3NF 的加强版,解决了 3NF 中可能遗留的主属性间依赖问题。
范式总结表
| 范式 | 核心要求 | 解决的主要问题 |
|---|---|---|
| 1NF | 属性不可分 | 消除重复组和非原子数据 |
| 2NF | 消除非主属性对码的部分依赖 | 减少数据冗余、更新异常 |
| 3NF | 消除非主属性对码的传递依赖 | 进一步减少冗余和异常 |
| BCNF | 消除所有属性对码的传递依赖(包括主属性) | 彻底解决函数依赖带来的异常 |
规范化:将一个低范式的关系模式通过模式分解转化为高范式的过程,但需注意无损连接性和函数依赖保持性。
说明:本笔记为数据库核心概念权威教材版,严格对应教材知识点,便于复习查阅。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 slowbirdie.top@outlook.com