数据库核心知识点¶
1. 数据管理三阶段¶
人工管理阶段是人管数据,数据与业务程序没有明确分离,容易重复、丢失、出错且共享困难。文件系统阶段由各应用程序分别管理文件,虽然效率提高,但存在数据冗余、不一致、共享困难以及程序与数据耦合强等问题。数据库系统阶段由 DBMS 统一管理数据,支持共享、并发、事务、故障恢复、权限控制和 SQL 查询。
数据库系统的重要优势是数据独立性:物理独立性指改变存储方式不影响应用程序;逻辑独立性指改变逻辑结构不影响应用程序。
2. 三级模式与两级映像¶
三级模式从外到内为:
| 模式 | 含义 | 银行例子 |
|---|---|---|
| 外模式 | 用户视图或子模式,单个用户看到的数据结构 | 柜员只看到账号、户名、余额 |
| 模式 | 全库逻辑结构,包括表和联系 | 客户表、账户表、交易表 |
| 内模式 | 实际存储方式,包括文件组织、索引、压缩 | 按 B+ 树或其他结构存储 |
一个数据库只有一个模式和一个内模式,但可以有多个外模式。外模式/模式映像保证逻辑数据独立性;模式/内模式映像保证物理数据独立性。客户表增加字段但柜员视图和程序无需修改,属于前者;改变存储结构或增加索引而应用 SQL 不变,属于后者。
3. 码与外码¶
超码能唯一标识一行但不要求最小;候选码是最小超码;主码是选定的候选码;主属性属于至少一个候选码,非主属性不属于任何候选码。候选码的判断是先看能否唯一标识记录,再检查去掉任一字段后是否仍唯一。
外码是本表引用另一张表主码或候选码的字段或字段组合。本表是参照关系,被引用表是被参照关系。外码通常可以为空(若允许 NULL),否则必须引用已存在的值;外码不要求唯一,一张表可以有多个外码。多对多联系表的组合主码成员也可以同时是外码。
4. E-R 模型转换¶
实体、属性、联系分别对应矩形、椭圆、菱形,联系两端标注 1:1、1:n、m:n。每个实体转换成一个关系模式,实体码成为主键。1:1 联系可并入任一端并加入另一端主键作外键;1:n 联系通常并入 n 端;m:n 联系必须单独建表,主键为两端实体主键的组合,联系属性也放入该表。
例如客户与账户是 1:n,账户表加入 customer_id;账户与理财产品是 m:n,需要 holding(account_id, product_id, share),主键为 (account_id, product_id)。
5. 范式¶
1NF 要求字段不可再分;2NF 在 1NF 基础上消除非主属性对复合候选码的部分依赖;3NF 在 2NF 基础上消除非主属性对候选码的传递依赖。口诀:1NF 装一个值,2NF 别只靠半个码,3NF 别绕道。单属性主码的表自动满足 2NF。
储蓄业务表 deposit(客户号, 账号, 客户姓名, 余额, 开户网点) 若主码为 (客户号, 账号),客户姓名只依赖客户号、余额和开户网点只依赖账号,存在部分依赖,可拆成客户表、账户表和业务表。账户表若含网点编号、网点名称、网点电话,网点名称和电话经网点编号传递依赖账号,应拆成 account(账号, 余额, 网点编号) 与 branch(网点编号, 网点名称, 网点电话)。
范式越高通常冗余越低,但连接可能增多;反规范化是在读性能确实重要时有控制地保存冗余数据,具体取舍待核验。
6. 完整性约束与视图¶
实体完整性要求主键唯一且非空;参照完整性要求外键为空或引用存在的主码/候选码;用户定义完整性表达余额非负、金额大于零、格式和状态等业务规则。PRIMARY KEY、FOREIGN KEY、UNIQUE、NOT NULL、CHECK、DEFAULT 是 SQL 实现手段,不是与三类经典约束并列的新大类。权限、审计和事务隔离分别解决访问权、追溯和并发问题,不等同于完整性约束。
视图是由查询定义的虚表,通常存储定义而非实际数据。它可以简化复杂查询、限制暴露列和行、提供逻辑独立性;含聚合、GROUP BY、DISTINCT 或多表连接的视图通常不能直接更新。不同数据库产品对可更新视图的细节待核验。
考前易错速记¶
事务具有原子性、一致性、隔离性和持久性(ACID)。隔离级别需要结合脏读、不可重复读和幻读判断;事务日志通常遵循 WAL(先写日志后写数据),redo 保障持久性,undo 支持原子性。查询本身不写入事务日志,查询行为应由审计日志或慢查询日志记录,用于合规追溯和性能调优。
SQL 中 WHERE 筛选行,HAVING 筛选分组后的结果,聚合条件放在 HAVING。等值连接按指定列相等连接,列名不必相同且连接列可能出现两次;自然连接按同名列连接并去重。范式可速记为:1NF 每个字段装一个值,2NF 消除对复合码的部分依赖,3NF 消除传递依赖。
来源:专业课速记/09_考前必背清单.md