0
0
0

第6章重点梳理:规范化理论与范式判定套路

2026-10-19
文章摘要
|

第 6 章重点梳理:规范化理论与范式判定套路

规范化理论是综合应用题的固定第三类题(求候选键、判范式、模式分解),也是选择题概念题的出题点。这一章公式不多,但判定步骤有严格套路,学会套路就能拿满。

一、函数依赖(FD)核心概念

设 R(U) 是属性集 U 上的关系模式,X、Y 是 U 的子集。若对 R 中任意两个元组,X 值相同则 Y 值必相同,称 X 函数决定 Y,记作 X→Y。

  • 完全函数依赖 X→Y(Y 不依赖 X 的任何真子集):记 X →(完全)Y;
  • 部分函数依赖:X 的某个真子集就能决定 Y;
  • 传递函数依赖:X→Y,Y→Z,且 Y 不→X,则 X 传递决定 Z。

例:学号→系别,系别→系主任,则"系主任"传递依赖学号——这正是导致冗余的典型结构。

二、候选码求解三步法(必考)

给定关系模式 R 和函数依赖集 F,求所有候选码:

  1. 分类属性:只在 FD 左边出现 → 必在候选码(L 类);只在右边出现 → 必不在(R 类);两边都出现(LR 类);两边都不出现 → 也在候选码中(N 类,较少见);
  2. 先试 L 类和 N 类属性:求它们在 F 下的闭包,若闭包 = 全部属性 U,则它们就是唯一候选码;
  3. 闭包不够则逐个加入 LR 类属性再求闭包,直到闭包覆盖 U。

例:R(A,B,C,D),F = {A→B, B→C}。L 类:A、D。A⁺ = ABC,加 D 得 ABCD ⊇ U,所以候选码 = (A, D)。

闭包 X⁺ 的含义:由 X 出发,反复用 F 中依赖能推出的全部属性集合。

三、范式判定标准(一字不差地背)

范式 判定条件(考试标准表述)
1NF 所有分量是不可再分的数据项(原子性)
2NF 满足 1NF,且每个非主属性完全函数依赖于候选码(消除部分依赖)
3NF 满足 2NF,且消除非主属性对候选码的传递函数依赖
BCNF 每个决定因素(左部)都包含候选码

判定流程(综合题按此写步骤):

  1. 求出候选码;
  2. 找非主属性,检查是否存在部分依赖 → 有则只到 1NF,无则到 2NF;
  3. 检查是否存在传递依赖 → 有则 2NF,无则 3NF;
  4. 检查所有 FD 左部是否都含候选码 → 是则 BCNF。

经典例子:SC(Sno, Cno, Sdept, Grade),候选码 (Sno, Cno),Sdept 部分/传递依赖其中——(Sno,Cno)→Sno→Sdept 属于传递依赖,故该模式最高只到 1NF/2NF(部分依赖与传递依赖并存时按题目给的 F 逐条判断)。

四、模式分解(3NF 分解的固定写法)

分解目标:无损连接 + 保持函数依赖。考试常考"分解到 3NF":

  1. 把 F 中的每个函数依赖 X→A 单独作为一个关系模式 R(X, A);
  2. 出现在某个依赖左部但未单独出现的 X 属性,可合并进一个模式;
  3. 若候选码未被任何模式包含,单独建立模式存放候选码。

例:R(A,B,C,D),F={A→B, B→C},候选码 (A,D)。3NF 分解:R1(A,B)、R2(B,C)、R3(A,D)。

简答题高频:模式分解的好处——减少数据冗余、消除插入异常和删除异常、便于更新维护。插入异常/删除异常的含义要会用一两句话解释(如:未开课时课程信息无法插入;学生全部退课后课程信息随之丢失)。

五、背诵清单

  1. 完全/部分/传递依赖的定义;
  2. 候选码求解:L 类必在、R 类必不在、闭包验证;
  3. 2NF 消除部分依赖,3NF 消除传递依赖,BCNF 左部皆含候选码;
  4. 分解要求:无损连接性 + 保持函数依赖。

下一篇梳理第 7–8 章:数据库设计与事务保护。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

评论

欢迎来到我的博客!