0
0
0
第6章重点梳理:规范化理论与范式判定套路
文章摘要
|
第 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,求所有候选码:
- 分类属性:只在 FD 左边出现 → 必在候选码(L 类);只在右边出现 → 必不在(R 类);两边都出现(LR 类);两边都不出现 → 也在候选码中(N 类,较少见);
- 先试 L 类和 N 类属性:求它们在 F 下的闭包,若闭包 = 全部属性 U,则它们就是唯一候选码;
- 闭包不够则逐个加入 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 | 每个决定因素(左部)都包含候选码 |
判定流程(综合题按此写步骤):
- 求出候选码;
- 找非主属性,检查是否存在部分依赖 → 有则只到 1NF,无则到 2NF;
- 检查是否存在传递依赖 → 有则 2NF,无则 3NF;
- 检查所有 FD 左部是否都含候选码 → 是则 BCNF。
经典例子:SC(Sno, Cno, Sdept, Grade),候选码 (Sno, Cno),Sdept 部分/传递依赖其中——(Sno,Cno)→Sno→Sdept 属于传递依赖,故该模式最高只到 1NF/2NF(部分依赖与传递依赖并存时按题目给的 F 逐条判断)。
四、模式分解(3NF 分解的固定写法)
分解目标:无损连接 + 保持函数依赖。考试常考"分解到 3NF":
- 把 F 中的每个函数依赖 X→A 单独作为一个关系模式 R(X, A);
- 出现在某个依赖左部但未单独出现的 X 属性,可合并进一个模式;
- 若候选码未被任何模式包含,单独建立模式存放候选码。
例:R(A,B,C,D),F={A→B, B→C},候选码 (A,D)。3NF 分解:R1(A,B)、R2(B,C)、R3(A,D)。
简答题高频:模式分解的好处——减少数据冗余、消除插入异常和删除异常、便于更新维护。插入异常/删除异常的含义要会用一两句话解释(如:未开课时课程信息无法插入;学生全部退课后课程信息随之丢失)。
五、背诵清单
- 完全/部分/传递依赖的定义;
- 候选码求解:L 类必在、R 类必不在、闭包验证;
- 2NF 消除部分依赖,3NF 消除传递依赖,BCNF 左部皆含候选码;
- 分解要求:无损连接性 + 保持函数依赖。
下一篇梳理第 7–8 章:数据库设计与事务保护。
