Day 7:系统设计与事务管理

DFD与数据字典密码本 | DBA权限管理 | 事务控制与灾难恢复

1. 系统设计基础:DFD 与 DD

“DFD 是管道总图,DD 是管道里的材料清单。画图的铁律是:所有数据都必须经过‘加工’。”

一、 数据流图 (DFD) 四大元素与铁律

🚫 DFD 连线铁律: 只有“加工”可以主动处理数据!
外部实体 ↔ 数据存储(错!)
外部实体 ↔ 外部实体(错!)
数据存储 ↔ 数据存储(错!)

二、 数据字典 (DD) 密码本

= : 被定义为
+ : 和(连接两个必填项)
[...] : 任选其一(多选一,如 [男 | 女])
(...) : 可选(可有可无)
{...} : 重复(出现 0 次或 N 次)

2. 数据库安全性:权限控制

“不要让实习生拥有删库跑路的权限。”

3. 事务控制、并发与恢复 (核心必考)

“一笔转账,要么全做要么全不做;一旦提示成功,断电也不能丢钱。”

一、 ACID 四大神兽

二、 并发三大幽灵 (隔离性遭破坏)

三、 封锁协议 (Locking)

锁类型遇到 X 锁请求遇到 S 锁请求
X 锁 (排他/写锁)冲突 (阻塞) 🚫冲突 (阻塞) 🚫
S 锁 (共享/读锁)冲突 (阻塞) 🚫兼容 (一起读) ✅

注意:两个事务互相等待对方释放锁,导致永久卡死,称为死锁 (Deadlock) 💀

四、 日志文件与系统恢复

先写日志原则 (WAL): 修改数据库物理文件前,必须先在日记本(日志文件)里记录动作!

考场直觉判断

场景:系统崩溃后重启,DBA 检查日志文件:
事务 T1:有 BEGIN,且有 COMMIT。
事务 T2:有 BEGIN,但没有 COMMIT。

对 T1 使用 REDO(重做): 因为它已经提交,要确保持久性 (D),落袋为安。
对 T2 使用 UNDO(撤销): 因为它没做完就断电了,要确保原子性 (A),擦除痕迹,当作没发生过。