关系数据库核心.md 3.5 KB


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