计算机中级-数据库系统工程师-关系数据库真题(1)

一、关系模式范式判断
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模型属性的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kethy__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值