一、关系模式范式判断
1. 范式判断步骤
- 步骤1-找候选码:通过函数依赖关系确定候选码(如A→B,D→A,B→C)
- 步骤2-区分属性:确定主属性(候选码A/D)和非主属性(B/C)
- 步骤3-判断依赖:检查是否存在部分函数依赖和传递函数依赖
2. 范式判断实例
- 候选码确定:
- A能决定所有属性(A→B→C,D→A)
- D也能决定所有属性(D→A→B→C)
- 范式分析:
- 存在传递依赖:A→B→C(C是非主属性)
- 结论:最高属于2NF(存在非主属性对码的传递依赖)
二、关系模式分解无损连接性
1. 无损连接判定条件
- 充分必要条件:
-
U1∩U2→U1−U2或U1∩U2→U2−U1
-
- 任一成立即具无损连接性
- 常见错误:
- 误认为两个条件必须同时成立
- 忽略"或"的关系,只验证一个条件不成立就下结论
2. 例题解析
- 题目解析:
- 选项A正确(条件成立则具无损性)
- 选项C错误(一个条件不成立不代表全部)
- 答案:C
三、BCNF范式特性
1. BCNF定义
- 核心特征:
- 每个函数依赖左部都包含码
- 不存在任何属性对码的传递依赖
- 与3NF区别:
- 3NF允许主属性对码的传递依赖
- BCNF要求更严格,消除所有传递依赖
2. 常见误区
- 错误认知:
- BCNF不满足原子性(× 实际满足1NF)
- BCNF存在部分依赖(× 实际消除所有部分依赖)
- BCNF存在传递依赖(× 实际消除所有传递依赖)
- 正确描述:
- 选项D正确:每个函数依赖左部都包含码
四、例题:多值依赖描述
- 平凡多值依赖条件:当X→→Y为平凡多值依赖时,U−XY必须为空集,即Z=U−XY=∅
- 范式关系:存在非平凡多值依赖(Z≠∅)时,关系模式不满足第四范式;平凡多值依赖(Z=∅)则满足第四范式
- 常见错误辨析:
- 平凡多值依赖不要求Y是X的子集(选项B错误)
- 多值依赖传递性特殊:若X→→Y且Y→→Z,则X→→(Z−Y)而非直接决定Z(选项C错误)
- 多值依赖不蕴含函数依赖:X→→Y不能推出X→Y(选项D错误)
五、例题:范式数据完整性约束
- 拆分原则:
- 必须保留关联属性作为外键(如学号+所属学院编号),确保子关系可互相关联
- 典型反例:拆分后若缺少关联属性(如仅保留学号-姓名和学院编号-学院名称),将丢失数据联系
- 错误选项分析:
- 移除函数依赖会破坏数据语义(选项B错误)
- 封锁/事务机制属于并发控制,与范式拆分无关(选项C、D错误)
- 实例说明:学生表(学号,姓名,学院编号,学院名称)应拆分为:
- 学生表(学号,姓名,学院编号)→ 学院编号为外键
- 学院表(学院编号,学院名称)→ 保持参照完整性
六、例题:第一范式违反项
- 1NF核心要求:属性必须原子化(不可再分),每列存储单一值
- 典型违规形式:
- 将复合数据作为属性(如"电话"属性下再分"家庭/工作电话")
- 表格中使用合并单元格表示多值属性
- 正确存储方式:
- 为每个原子属性单独设列(如家庭电话、工作电话作为独立列)
- 反例:选项D使用大括号表示属性嵌套,直接违反1NF
- 记忆要点:关系数据库中的表结构应始终保持"平面化",不能出现嵌套属性
七、例题:关系模式分解范式判断
1. 候选码判定方法
- 判定步骤:
- 将属性转换为字母表示(如学号→a,课程号→b)
- 观察属性在函数依赖集中出现的位置:
- 只出现在左侧→必为候选码成员
- 只出现在右侧→必非候选码成员
- 左右均出现→需进一步验证
- 验证最小属性组合能否决定全集U
- 实例分析:
- 选课模式中d(成绩)只出现在右侧→排除
- a(学号)只出现在左侧→必为候选码成员
- 验证得ab(学号+课程号)和ac(学号+课程名)均为候选码
2. 范式判断流程
- 三步骤法:
- 确定候选码(如ab和ac)
- 区分主属性(包含在任意候选码中的属性)与非主属性
- 检查是否存在:
- 非主属性对码的部分函数依赖
- 非主属性对码的传递函数依赖
- 关键结论:
- 若所有非平凡函数依赖的决定因素都包含码→BCNF
- 本例中b→c的决定因素b不包含码→不满足BCNF
3. 分解后范式判断
- SC关系模式:
- 属性:a(学号),b(课程号),d(成绩)
- 函数依赖:ab→d
- 候选码:ab
- 无部分/传递依赖→BCNF
- C关系模式:
- 属性:b(课程号),c(课程名)
- 函数依赖:b↔c
- 候选码:b或c
- 无非主属性→BCNF
4. 多值依赖辨析
- 类型区分:
- 平凡多值依赖:X→→Y且Y⊆X(如ab→→b)
- 非平凡多值依赖:X→→Y且存在Z≠∅(如ab→→b时c,d存在)
- 第四范式要求:
- 消除非平凡且非函数依赖的多值依赖
- 实现方法:使多值依赖关系模式仅含X和Y属性
5. 例题解析
- 题目解析:
- 错误说法判断:
- 选项A错误:b→c的决定因素b不包含码
- 其他选项均正确(无多值依赖/部分依赖/传递依赖)
- 分解后范式:
- SC和C均达到BCNF
- 多值依赖本质:
- ab→→b属于平凡多值依赖(b⊆ab)
- 错误说法判断:
- 易错点:
- 混淆函数依赖与多值依赖的箭头表示(单箭头vs双箭头)
- 忽视平凡依赖的特殊性(子集关系)
- 错误判断候选码时需要验证最小性
八、例题:模式分解等价性准则
- 题目解析
- 选项分析
- A选项:分解后关系模式要达到最高范式(非等价性准则)
- B选项:分解具有无损连接性(是等价性准则)
- C选项:分解要保持函数依赖(是等价性准则)
- D选项:分解既要保持函数依赖,又要具有无损连接性(是等价性准则)
- 核心考点
- 模式分解前后等价性的判定标准只有两个:
- 是否具有无损连接性
- 是否保持函数依赖
- 教材288页明确指出:分解后是否达到最高范式不属于等价性判定标准
- 模式分解前后等价性的判定标准只有两个:
- 答案:A
- 记忆技巧
- 等价性准则只需记住"无损连接"和"保持依赖"两个关键词
- 范式级别属于规范化程度的衡量标准,与分解等价性无关
- 选项分析
九、例题:属性b包判断
- 题目解析
- 已知条件
- 关系模式R(U,F),属性集U=(A,B,C,D,E)
- 函数依赖集F={A→BC,CD→?,BD→A,AD→?,BD→E}
- 解题步骤
- 初始闭包:CE+={C,E}
- 应用CD→?:C可决定D,加入D →{C,E,D}
- 检查其他依赖:BD决定A/E需要B属性,当前闭包不含B
- 无法继续扩展,终止计算
- 关键方法
- 闭包计算遵循"现有属性→推导新属性"的迭代过程
- 每次只能应用左边属性全部包含在当前闭包中的函数依赖
- 答案:C.CED
- 易错提示
- 注意函数依赖的左部属性必须全部存在于当前闭包才能应用
- 不要遗漏可能的传递依赖关系
- 已知条件
十、例题:范式判定标准
- 题目解析
- 题干考点:各范式对多值依赖的限制要求
- 选项分析
- 4NF的核心特征就是消除非平凡且非函数依赖的多值依赖
- 低范式(1NF-3NF)主要处理函数依赖问题
- 理论依据
- 4NF在BCNF基础上进一步规范多值依赖
- 要求所有非平凡多值依赖必须作为函数依赖存在
- 答案:D.4NF
- 对比记忆
- 1NF:属性原子性
- 2NF:消除非主属性对码的部分函数依赖
- 3NF:消除非主属性对码的传递函数依赖
- BCNF:消除主属性对码的部分和传递函数依赖
- 4NF:处理多值依赖问题
十一、例题:关系模式范式及分解
- 传递函数依赖判断:在关系模式"学生(学号,姓名,性别,年龄,系号,系名)"中,"系名"对码"学号"的依赖是通过"系号"传递的(学号→系号→系名),因此属于传递函数依赖。
- 范式等级判定:
- 候选码为单属性"学号",不存在部分函数依赖
- 存在传递函数依赖,故最高属于第二范式(2NF)
- 分解效果评估:
- 分解为S(学号,姓名,性别,年龄,系号)和D(系号,系名)
- 该分解具有无损连接性(通过系号关联)
- 保持所有函数依赖(学号→系号→系名的依赖链完整保留)
十二、例题:函数依赖集b包子集关系
- 闭包概念理解:
-
XF+表示属性集X在函数依赖集F下能推导出的所有属性的集合
- 若Y⊆XF+,说明X能函数决定Y
-
- 实例解析方法:
- 建议通过具体例子验证:设X=学号,其闭包包含{学号,姓名,性别,年龄,系号,系名}
- 若取Y={姓名,性别},显然有X→Y成立
- 易错警示:
- 注意不是Y→X(常见误选)
- 闭包子集关系对应的是决定方向,不是被决定方向
十三、例题:规范化为第四范式
- 第四范式核心要求:
- 消除非平凡且非函数依赖的多值依赖
- 与BCNF的区别:BCNF只处理函数依赖,4NF额外处理多值依赖
- 规范化步骤:
- 从BCNF到4NF需要检查多值依赖关系
- 特别关注非函数依赖的多值依赖情况(即不能表示为函数依赖的多值关系)
- 典型处理方式:
- 通过模式分解消除异常的多值依赖
- 确保每个多值依赖要么是平凡的,要么是函数依赖
十四、例题:3NF属性关系判断
- 范式层级关系:
- 范式从低到高依次为:1NF → 2NF → 3NF → BCNF
- 高级范式必然满足低级范式要求(如3NF必然满足2NF)
- 3NF特性:
- 异常问题:仍存在插入、删除和更新异常(只有BCNF能完全消除)
- 与BCNF关系:3NF不一定属于BCNF(BCNF是更严格的范式)
- 题目解析:
- 选项A错误:3NF不一定是BCNF
- 选项B错误:3NF仍有异常
- 选项C正确:符合3NF的特性
- 选项D错误:同A、B
1. 选课关系分析
- 完整性约束:
- 用户定义完整性:通过"姓名不重复"规则体现(区别于实体/参照完整性)
- 函数依赖分析:
- 相互依赖:学号↔姓名(因姓名唯一,形成双射关系)
- 组合依赖:(学号,课程号)→成绩
- 范式判定:
- 候选码:AC(学号+课程号)和BC(姓名+课程号)
- 主属性:A(学号)、B(姓名)、C(课程号)
- 问题:存在主属性B对候选码AC的部分依赖(A→B)
- 结论:最高满足2NF(因存在部分依赖,不满足3NF要求)
- 题目答案:
- (45)C(用户定义完整性)
- (46)A(相互函数依赖)
- (47)B(2NF)
2. 关键记忆点
- 范式升级目的:解决低级范式的异常问题
- BCNF特殊性:唯一能彻底消除插入/删除异常的范式
- 部分依赖判定:若X→Y且X是候选码的真子集,则存在部分依赖
- 用户完整性:区别于系统级约束,是用户自定义的业务规则
十五、知识小结
|
知识点 |
核心内容 |
考试重点/易混淆点 |
难度系数 |
|
范式判断流程 |
1. 找候选码 2. 区分主/非主属性 3. 检查部分/传递依赖 |
候选码判定方法(L/R/NL类属性)、传递依赖的识别 |
⭐⭐⭐⭐ |
|
候选码判定 |
通过函数依赖集分析属性决定关系(例:A→B→C时A为候选码) |
无L类属性时的LR类属性遍历、闭包计算 |
⭐⭐⭐ |
|
BC范式性质 |
每个函数依赖左部必须包含候选码 |
与第三范式的区别(主属性对码的依赖) |
⭐⭐⭐⭐ |
|
多值依赖 |
平凡多值依赖(Z=∅)与非平凡多值依赖(Z≠∅) |
第四范式要求消除非平凡多值依赖 |
⭐⭐⭐⭐ |
|
无损连接分解 |
U1∩U2→U1-U2或U2-U1成立 |
多值依赖的无损判断(教材未覆盖) |
⭐⭐⭐ |
|
模式分解准则 |
保持函数依赖、无损连接性 |
"达到最高范式"非等价性准则 |
⭐⭐ |
|
闭包计算 |
Y⊆X⁺ ⇒ X→Y(例:学号⁺含姓名⇒学号→姓名) |
闭包与实际函数依赖的推导 |
⭐⭐⭐ |
|
传递依赖案例 |
学号→系号→系名 ⇒ 系名对学号传递依赖 |
第二范式允许传递依赖 |
⭐⭐⭐ |
|
第四范式转化 |
消除非平凡且非函数依赖的多值依赖 |
多值依赖与函数依赖的混合处理 |
⭐⭐⭐⭐ |
|
1NF违反情形 |
属性可再分(如电话{家庭,工作}) |
与ER模型属性的区别 |
⭐ |

被折叠的 条评论
为什么被折叠?



