当前位置: 首页 > news >正文

《数据库原理》部分习题解析

《数据库原理》部分习题解析

1. 课本pg196.第1题。

(1)函数依赖
若对关系模式 R(U) 的任何可能的关系 r,对于任意两个元组 t₁ 和 t₂,若 t₁[X] = t₂[X],则必须有 t₁[Y] = t₂[Y],则称属性集 Y 函数依赖于属性集 X,记作:

X → Y

函数依赖是数据库规范化的基础,用于描述属性间的约束关系。

(2)部分函数依赖
若某关系的主键是复合主键(例如 A 和 B),存在一个非主属性 C 满足 A → C,但 B 无影响,即 C 并不依赖整个主键,则称为部分函数依赖。

(3)完全函数依赖
若某非主属性 C 对整个主键 (A, B) 依赖,且不依赖其任何子集,即:

(A, B) → C 且 A ⊬ C,B ⊬ C

(4)传递依赖

若存在 A → B,且 B → C,则可推出 A → C,且 C 并不直接依赖于 A,称为传递函数依赖。

(5)候选码
候选码是能唯一标识关系中元组的最小属性集。一个关系可有多个候选码。

(6)超码
超码是能够唯一标识元组的属性集,可以包含冗余属性。候选码 ⊆ 超码。所有候选码都是超码,但不是所有超码都是候选码。

(7)主码
从候选码中选出的一个,用作关系的唯一标识。主码值不能为 NULL。在一个表中只能有一个主码。

(8)外码
指向其他表主码的属性,表示关系间的引用。

(9)全码
若关系中所有属性组合构成唯一标识元组的候选码(即没有非主属性),则称该关系为全码关系。

(10)第一范式(1NF)
每一个属性的值必须是不可再分的数据项(原子性),即不能有数组、集合、嵌套结构。

(11)第二范式(2NF)
在满足1NF的基础上,消除了非主属性对主键的部分函数依赖。

(12)第三范式(3NF)
在2NF基础上,消除了非主属性对主键的传递依赖。形式:若 A 是主键,B 是非主属性,A → B 成立;如果还存在 B → C,那么 C 不应为非主属性。

(13)BCNF
每一个非平凡函数依赖 X → Y 中,X 必须是候选码(或超码)。

(14)第四范式(4NF)
在BCNF基础上,消除了非平凡且非函数依赖的多值依赖。如:若 A →→ B,且 B 与其他属性无关,则存在多值依赖,应进行拆分。

2. 课本pg197.第2题。

(1) 学生信息关系模式
关系模式:Student (Sno, Sname, Birthdate, Dept, Classno, Dormitoryno)

最小依赖集:
 1. Sno → Sname
 2. Sno → Birthdate
 3. Sno → Classno
 4. Classno → Dept  (每个班只属于一个系)
 5. Dept → Dormitoryno

传递函数依赖:
 Sno → Classno → Dept,Dept → Dormitoryno ⇒ Sno → Dormitoryno

候选码: Sno
外部码(外键): Dept → Dept 表;Classno → Class 表
全码: 无

(2) 班级信息关系模式
关系模式:Class (Classno, Major, Dept, Cnum, Cyear)

最小依赖集:
 1. Classno → Major, Dept, Cnum, Cyear
 2. (Dept, Major, Cyear) → Classno, Cnum  (同一系‑专业当年只招一个班)

传递函数依赖: 无

候选码:
 • Classno
 • Dept, Major, Cyear

外部码(外键): Dept → Dept 表
全码: 无

(3) 系信息关系模式
关系模式:Dept (Dept, Deptno, DeptLoc, Deptnum)

最小依赖集(假设系名唯一):
 1. Deptno → Dept, Deptnum
 2. Dept → DeptLoc

传递函数依赖:
 Deptno → Dept → DeptLoc ⇒ Deptno → DeptLoc

候选码: Deptno 和 Dept
外部码: 无
全码: 无

(4) 学会信息关系模式
关系模式:Union (Uname, Uyear, ULoc, Unum)

最小依赖集: Uname → Uyear, ULoc, Unum
传递函数依赖: 无
候选码: Uname
外部码: 无
全码: 无

(5) 学生‑学会关系模式
关系模式:StuUn (Sno, Uname, Uyear)

最小依赖集: (Sno, Uname) → Uyear

传递函数依赖: 无
完全函数依赖: (Sno, Uname) → Uyear (删除任一属性即失效)

候选码: Sno, Uname
外部码(外键): Sno → Student 表;Uname → Union 表
全码: 无

3. 课本pg197.第6题。

(1)BCNF判定

已知 A 是候选码,且仅有函数依赖 BC → DE。

R 属于 BCNF 当且仅当 BC → A 成立(即 BC 的闭包等于全集 U)。
若 BC 不能决定 A,则 BC 不是超键,该依赖违反 BCNF。

(2)F={AB ; BCD ; DEA}

候选码的闭包计算结果:

ACE → ABCDE

BCE → ABCDE

CDE → ABCDE

所有候选码: ACE, BCE, CDE

(3)在同一F下的范式

由于右部属性 B、D、A 均为主属性(包含在某候选码中),每条 FD 均满足 3NF 的条件。但左部 A、BC、DE 皆不是超键,所以违反 BCNF。

所以R 满足 3NF,但不满足 BCNF。

4. 设属性集U={XYZW},函数依赖集F={X→Y,Y→Z,W→Y},计算属性集闭包X+,XW+和(YW)+。

1. X⁺(X 的闭包)

步骤

当前闭包

说明

{ X }

初始仅含 X

{ X , Y }

X → Y 加入 Y

{ X , Y , Z }

Y → Z 加入 Z

无更多依赖可用

X⁺ = { X , Y , Z }

2. (XW)⁺(XW 的闭包)

步骤

当前闭包

说明

{ X , W }

初始含 X, W

{ X , W , Y }

X → Y 加入 Y

{ X , W , Y , Z }

Y → Z 加入 Z

已含 W,W → Y 已满足;闭包 = U

(XW)⁺ = { X , Y , Z , W } = U

3. (YW)⁺(YW 的闭包)

步骤

当前闭包

说明

{ Y , W }

初始含 Y, W

{ Y , W , Z }

Y → Z 加入 Z

已含 Y,依赖 W → Y 不变;无法推出 X

(YW)⁺ = { Y , Z , W }

5. 设有关系模式R(A, B, C, D, E)与它的函数依赖集F={A→BC, CD→E, B→D, E→A},计算属性集闭包A+,B+,E+, (AD)+,(BC)+,(CD)+,(BCD)+;说明这些属性是否为R的候选码。

属性集

闭包计算过程(按依赖逐步加入)

结果

是否候选码¹

A

{A} ⭢ A→BC ⇒ {A B C} ⭢ B→D ⇒ {A B C D} ⭢ CD→E ⇒ {A B C D E}

A⁺ = ABCDE

B

{B} ⭢ B→D ⇒ {B D}

B⁺ = BD

E

{E} ⭢ E→A ⇒ {E A} ⭢ A→BC ⇒ {E A B C} ⭢ B→D ⇒ {E A B C D}

E⁺ = ABCDE

A D

{A D} ⭢ A→BC ⇒ {A B C D} ⭢ CD→E ⇒ {A B C D E}

(AD)⁺ = ABCDE

超键,非最小

B C

{B C} ⭢ B→D ⇒ {B C D} ⭢ CD→E ⇒ {B C D E} ⭢ E→A ⇒ {A B C D E}

(BC)⁺ = ABCDE

C D

{C D} ⭢ CD→E ⇒ {C D E} ⭢ E→A ⇒ {A C D E} ⭢ A→BC ⇒ {A B C D E}

(CD)⁺ = ABCDE

B C D

{B C D} ⭢ CD→E ⇒ {B C D E} ⭢ E→A ⇒ {A B C D E}

(BCD)⁺ = ABCDE

超键,非最小

综上,候选码为:A E BC CD

6. 设有函数依赖集F={C→A, A→B, B→C, C→B, A→C, BC→A},求其最小函数依赖集Fmin。

原依赖集

F = { C→A ; A→B ; B→C ; C→B ; A→C ; BC→A }

最小化步骤

(1)右拆:原依赖右部均为单属性,无需拆分。

(2)左约:

对 BC→A: C⁺ (在当前集合) = ABC ⊇ A ⇒ B 冗余 → 删除整条(因为 C 单独已推出 A)。

(3)依赖约(逐条测试可推导性):

A→B:必留(若删则无法由其它依赖推 B)。

B→C:必留(若删则无法推 C)。

C→A:必留(删除则无法推 A)。

其余三条(C→B, A→C, BC→A)都已冗余,可由保留三条推得。

Fmin={C→A,A→B,B→C}

满足:

(1)每条右部单属性。

(2)每条左部无多余属性。

(3)集内任一依赖都无法由其余依赖推出。

7. 设有关系模式R(Sno, Dept, Loc),其中属性Sno、Dept和Loc分别表示学生学号、所在系别和系所在地点。函数依赖集有F={Sno→Dept, Dept→Loc},若R有两种分解方法,分别为ρ1= {R1(Sno, Dept), R2(Sno, Loc)};ρ2= {R1(Sno, Dept), R2(Dept, Loc)}。

(1)分别判别ρ1和ρ2是否有无损连接性。(用chase进行判别)

(a)ρ₁ = { R₁(Sno, Dept), R₂(Sno, Loc) }

行 / 列

Sno

Dept

Loc

R₁

a₁

a₂

b₁

R₂

a₁

b₂

a₃

1、Sno → Dept:两行 Sno 均为 a₁ ⇒ 统一 Dept → a₂

2、Dept → Loc:两行 Dept 均为 a₂ ⇒ 统一 Loc → a₃

行 / 列

Sno

Dept

Loc

R₁

a₁

a₂

a₃

R₂

a₁

a₂

a₃

结果:两行完全一致 → ρ₁ 无损连接。

(b)ρ₂ = { R₁(Sno, Dept), R₂(Dept, Loc) }

行 / 列

Sno

Dept

Loc

R₁

a₁

a₂

b₁

R₂

b₂

a₂

a₃

1、Dept → Loc:Dept 同为 a₂ ⇒ 统一 Loc → a₃

2、Sno → Dept 不再触发(Sno 值不同)

行 / 列

Sno

Dept

Loc

R₁

a₁

a₂

a₃

R₂

b₂

a₂

a₃

此时交集属性 {Dept} = a₂ 能决定 R₂ 的整行;满足无损条件 → ρ₂ 亦无损连接。

(2)分别判别ρ1和ρ2是否有保持函数性。

ρ₁:

投影 F 到 R₁:得到 Sno → Dept

投影 F 到 R₂:无非凡依赖

合并后缺少 Dept → Loc ⇒ 不保持函数性。

ρ₂:

投影到 R₁:Sno → Dept

投影到 R₂:Dept → Loc

合并恰为原 F ⇒ 保持全部依赖(保持函数性)。

相关文章:

  • MySQL——八、SQL优化
  • 精简大语言模型:用于定制语言模型的自适应知识蒸馏
  • 商业航天运动控制系统中的高可靠性芯片解决方案:挑战、策略与应用研究
  • 每周靶点分享:Nectin-4、CDH6及文献分享
  • Deno、Bun、Node.js 性能对比与选型指南
  • Linux进程信号处理(26)
  • Axure高级交互设计:文本框循环赋值实现新增、修改和查看
  • Codis集群搭建和集成使用的详细步骤示例
  • Chrome浏览器离线版安装包下载
  • TensorFlow之微分求导
  • spark-cache模式
  • Java基础 5.13
  • SQL 中 INSTR 函数简介及 截取地址应用
  • 125.在 Vue3 中使用 OpenLayers 实现通过 WebGLVector 的方式添加海量点
  • Deepseek+Xmind:秒速生成思维导图与流程图
  • HTML、CSS 和 JavaScript 基础知识点
  • Tomcat和Nginx的主要区别
  • 5G如何让医疗更智能、更高效、更具未来感?
  • python共享内存实际案例,传输opencv frame
  • 中国古代史6
  • 七部门:进一步增强资本市场对于科技创新企业的支持力度
  • 安徽省委副秘书长、省委政研室主任余三元调任省社科院院长
  • 共情场域与可持续发展——关于博物馆、美术馆运营的新思考
  • 联合国秘书长欢迎中美经贸高层会谈成果
  • 寒武纪陈天石:公司的产品力获得了行业客户广泛认可,市场有望迎来新增量需求
  • 著名蒙古族音乐学者马•斯尔古愣逝世,享年86岁