数据库复习笔记 一.绪论
数据库系统的特点
- 数据结构化
- 数据共享性好, 冗余度低
- 数据独立性高, 物理和逻辑上都是
- 数据由 DBMS 统一管理:
- 安全性
- 完整性
- 并发控制
- 数据库恢复
- 良好的用户接口
数据模型: 表示实体类型和实体间联系的模型
- 概念数据模型: 信息模型, 描述信息结构, 按照用户观点建模, 又称 ER 模型
- 结构数据模型: 基本数据模型, 或者直接就叫数据模型因为它很牛逼, 面向数据库的逻辑结构, 直接涉及到计算机系统和 DBMS, 按照计算机系统的观点对数据建模
ER 图, 不会画的打死
结构模型的要素
- 数据结构
- 数据操作
- 数据的约束条件
结构数据模型#
层次模型#
用树形结构表示实体类型和关系
- 有且仅有一个结点无双亲, 该结点是根结点
- 其他结点有且仅有一个双亲
- 层次模型中每个结点 (片断) 表示一个记录类型
- 每个记录类型包含若干个字段, 字段有字段名, 数据类型和长度等
数据操纵与完整性约束:
- 插入时, 没有双亲结点不能插入子女结点
- 删除时, 删除双亲结点要同时删除子女结点
- 更新时, 要更新所有相应的记录
存储结构: 邻接法, 链接法
优点: 模型简单, 速度快, 实体间联系固定
缺点:
- 实现多对多关系时, 需要采用冗余或虚结点方式, 易形成不一致性
- 插入和删除限制多
- 查询子节点需要通过双亲节点
网状模型#
用有向图 (网络) 结构表示实体类型及实体间联系的数据模型.
- 允许一个以上的结点无双亲
- 至少一个结点不止一个双亲
数据操纵与完整性约束:
- 插入时, 允许插入未确定双亲结点的子女结点值
- 删除时, 允许只删除双亲结点值
- 更新时, 只需更新指定记录
存储结构: 常用链接法, 其它如引元阵列法, 二进制阵列法, 索引法等
优点: 更加直接描述现实世界, 存取效率高, 性能好
缺点: 结构复杂, 不利于用户掌握, DDL, DML 语言复杂; 数据独立性差
关系模型#
用表格表示实体集和实体间联系, 用外键来实现关系间的联系.
- 关系 (Relation) = 一张表.
- 元组 (Tuple) = 表里的一行 (一条记录).
- 属性 (Attribute) = 表里的一列 (一个字段).
- 主键 (Primary Key) = 身份证号, 能唯一区分每一行的那一列.
- 域 (Domain) = 这一列的取值范围 (比如性别只能填男女 LGBTQABCDEFGHAJIMI)
- 分量: 元组中的一个属性的取值
关系模式R (U, D, DOM, F):
- R: 表名
- U: 表有哪些列
- D&DOM: 表填什么样的数据
- F: 数据之间的依赖规则
各种键:
- 候选键 Candidate Key: 能唯一标识一行数据且不多余的属性, 或属性组, 如学号, 身份证号
- 主键 Primary Key: 候选键可以不唯一, 我爱用的那个就是主键
- 超键 Super Key: 能唯一标识一行数据的属性集, 包含所有候选键. 可能多余, 例如 (姓名 + 学号 + 身份证号 + 玩不玩原神)
- 组合键和全键: 如果主键不是单一的属性则称为组合键, 如果包含所有属性则称为全键.
「说明这表设计得挺烂. 」 -- Gemini 3 Pro - 外键 Foreign Key: 这张表里不是主键, 但是在其它表里是主键, 用于建立两张表的联系.
例子:
学生表 (学号, 姓名, 班级号), 学号是主键, 班级号是外键
班级表 (班级号, 班级名), 班级号是主键 - 主属性: 只要是候选键里的, 不管是不是完整的主键, 都是主属性, 否则是非主属性
操纵与完整性约束:
插入, 删除和更新操作必须满足关系的完整性约束;
关系的完整性约束包括: 实体完整性, 参照完整性和自定义完整性
存储结构: 实体和实体间的联系都用表来表示, 表通常以文件形式存储
优点:
- 建立在严格的数学概念基础上
- 概念单一, 实体, 联系均用关系来表示
- 存取路径对用户透明, 数据独立性更高, 保密性更好, 简化程序员工作和数据库开发建立工作.
缺点:
- 存取路径对用户透明, 查询效率不高
- 因存取路径对用户透明, 必须对用户查询进行优化, 增加了开发 DBMS 的难度
数据库系统的模式结构#
| schema | view | level | |
|---|---|---|---|
| External | 外模式 子模式 |
用户视图 外视图 |
外部级 局部逻辑级 |
| conceptual | 模式 概念模式 |
概念视图 DBA 视图 |
概念级 全局逻辑 |
| internal | 内模式 存储模式 |
内部视图 | 内部级 物理级 存储级 |
外模式 External Schema: 用户视图, 局部, 多对一
外模式映像: 数据库逻辑结构改变, 只需修改外模式映像, 应用程序不变, 逻辑独立性
模式 Conceptual Schema: 总清单, 全局, 逻辑结构, 全体数据, 唯一
内模式映像: 数据存储结构改变, 修改内模式映像, 外部级和应用程序不用改变, 物理独立性
内模式 Internal Schema: 物理存储, 存储路径, 唯一

数据库管理系统#
DBMS, 包括:
- 数据定义语言 DDL, Data Definition/Description Language
- 建表, 删表
- CREATE, DROP, ALTER
- 数据操纵语言 DML, Data Manipulation Language
- 查数据, 改数据
- SELECT, INSERT, UPDATE
- 数据库运行控制语言 DCL, Data Control Language
- 管权限, 保安全
- GRANT, REVOKE
- 实用程序
工作流程:
- 用户在程序中嵌入 DML 的一个读记录语句. 控制转向 DBMS
- DBMS 检查合法性, 查找子模式表, 确定对应的存取权限
- DBMS 依据子模式/模式映象的定义, 确定应读入的模式记录
- DBMS 依据模式/内模式映象的定义, 确定应读入的物理记录
- DBMS 向 OS 发送读取所需物理记录的命令
- OS 启动 IO 程序, 执行读操作
- OS 将数据从数据库的存储区送到系统缓冲区
- DBMS 依据子模式/模式映象定义, 导出用户所要读取的记录格式
- DBMS 将数据记录从系统缓冲区传送到程序的用户工作区
- DBMS 向应用程序返回命令执行情况和状态信息
实现方法:
- N 方案
DBMS 模块加入到用户进程, DBMS 代码出现多副本, 性能大幅下降 - 2N 方案
每个用户有一个 DBMSshdow 进程和一个后台负责读写和日值的进程 - M+N 方案
2N 方案的改进方案, N 用户, M 个 DBMS 进程 (M<N) - N+1 方案
1 个 DBMS 进程 (可设计成多线程的), N 个用户进程, 消息开销大
数据库的设计, 巴拉巴拉巴拉巴拉巴拉巴拉
