--- 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与数据库设计]] - [[关系模型]] - [[完整性约束]] - [[范式]]