title: 关系数据库核心
tags:
- module
- database
- relational-model
- joplin
type: module
source_type: reconstructed
created: 2026-04-22
updated: 2026-04-22
---
关系数据库核心
[!abstract]
这一模块处理关系数据库的真正骨架:表、键、完整性、连接和范式。数据库题如果总是做不顺,通常是这里没有真正打透。
模块结论
- [[关系模型]] 由数据结构、数据操作和完整性约束三部分构成,不是只有“二维表”。
- 主键、外键和 [[完整性约束]] 共同保证表之间的语义正确性。
- [[范式]] 的核心目标不是追求抽象美观,而是减少冗余和更新异常。
一、关系模型三要素
1. 数据结构
- 关系本质上是二维表。
- 行是元组,列是属性。
- 属性取值来自域,域定义了该属性允许的取值范围。
2. 数据操作
- 关系代数提供选择、投影、连接、并、差、交、笛卡尔积等操作。
- SQL 是面向集合的语言,本质上继承了关系代数思想。
- 复习时不要把“会写 SQL”和“懂关系操作”分开。
3. 完整性约束
- 实体完整性:主键必须非空且唯一。
- 参照完整性:外键必须引用存在的主键或取空值。
- 用户定义完整性:业务规则层面的额外约束。
二、键与完整性
- 候选键:能唯一标识元组的最小属性集。
- 主键:从候选键中选定的主要标识。
- 外键:指向其他关系主键的属性。
为什么键这么重要
- 它们不是纯语法,而是在表达“谁标识谁、谁依赖谁”。
- 一旦键设计不清,连接、约束和更新都会变得混乱。
三、连接操作怎么理解
- 等值连接:按相等条件连接,重复列可以保留。
- 自然连接:自动按同名属性连接并去重。
- 外连接:保留未匹配元组,适合需要保留缺失信息的场景。
复习重点
- 自然连接并不是“更高级”的连接,只是更方便。
- 题目里如果需要保留未匹配行,往往不能只用普通内连接。
四、范式理论
1NF
- 属性不可再分。
- 解决的是字段中嵌套多值、重复组之类的问题。
2NF
- 在 1NF 基础上,消除非主属性对码的部分依赖。
- 常见于联合主键场景。
3NF
- 在 2NF 基础上,消除非主属性对码的传递依赖。
- 这是最常见、最实用的规范化停点。
BCNF
- 比 3NF 更严格,要求所有决定因素都必须是候选键。
五、为什么要规范化
- 减少数据冗余。
- 避免插入、删除、更新异常。
- 让数据语义更清晰,约束更可控。
但也不要机械追求高范式
- 高范式可能带来更多表拆分和连接成本。
- 工程上常在规范化和查询性能之间折中。
六、易错点
- 不要把主属性和主键混为一谈。
- 自然连接要求同名属性且会去重,不是所有场景都适合。
- 范式题关键在“依赖关系”判断,不在死记定义原文。
七、复习提问
- 关系模型三要素分别是什么?
- 主键、候选键、外键的边界分别是什么?
- 2NF 和 3NF 分别在消除哪类依赖?
来源
- [[raw/Joplin/计算机专业基础/数据库/_计算机考研复试数据库核心知识点整理.md]]
- [[raw/Joplin/计算机专业基础/数据库/2.数据库——关系数据库核心.md]]
相关页面
- [[数据库]]
- [[SQL与数据库设计]]
- [[关系模型]]
- [[完整性约束]]
- [[范式]]