数据库系统概论期末复习三:关系数据理论之规范化

引:关系模式的形式化定义

关系模式由五部分组成,五元组 R(U, D, DOM, F)

① R:关系名

② U:一组属性

③ D:属性组U中属性所来自的域

④ DOM:属性到域的映射

⑤ F:属性组U上的一组数据依赖

关系模式R (U, D, DOM, F)简化 为一个三元组:R<U,F>

当且仅当U上的一个关系r 满足F 时,r 称为关系模式R的一 个关系

什么是数据依赖?

一个关系内部属性与属性之间的一种约束关系

通过属性间值的相等与否体现出来的数据间相关联系

现实世界属性间相互联系的抽象

数据内在的性质

语义的体现

数据依赖的类型有哪些?

① 函数依赖 (Functional Dependency, 简记为FD)

② 多值依赖 (Multi-valued Dependency,简记为MVD)

③ 其他, e.g. ,条件函数依赖 (CFD), 条 件包含依赖(CIND), 基于条件的外 部码 (CFK)

函数依赖 (Functional Dependency, 简记为FD) 普遍存在于现实生活中 比如描述一个学生的关系,有学号,姓 名,系名等几个属性。由于一个学号只 对应一个学生,一个学生只在一个系学 习。因此,当学号的值确定后,学生的 姓名和所在的系也就被唯一确定了。

例1. 建立一个描述学校教务数据库: 学生的学号 (Sno)、所在系(Sdept) 系主任姓名(Mname)、课程号(Cno)、 成绩 (Grade)

该题目在现实生活中的语义为:

1. 一个系有若干学生,但一个学生只属于 一个系

2. 一个系只有一名负责人

3. 一个学生可以选修多门课程,每门课程有若干学生选修。

4. 每个学生学习每一门课程有一个成绩

①单一的关系模式:Student ② U ={Sno, Sdept, Mname, Cno, Grade}

属性组U上的一组函数依赖 F ={Sno → Sdept, Sdept → Mname, (Sno, Cno) → Grade}

这个关系模式种显然有问题:

该Sutdent关系模式不是一个好的关系模式。

一般的我们判断一个关系模式是不是一个好的关系模式有以下标准:

“好”的模式 ① 不会发生插入异常、删除异常、更新异常

② 数据冗余应尽可能少

不是好模式的原因:由于模式中存在某些数据依赖引起

解决方法:通过分解关系模式来消 除其中不合适的数据依赖

把这个单一模式分解为3个关系模式

① S (Sno, Sdept, Sno → Sdept);

② SC (Sno,Cno, Grade, (Sno,Cno) → Grade);

③ DEPT (Sdept, Mname, Sdept→ Mname);

此时就不会存在插入异常和删除异常,数据的冗余量也得到了控制。

由此我们进入本次复习的重点:

规范化

一.函数依赖

定义:

设R(U)是属性集U上的关系模式。X, Y是U的子集。若对于R(U) 的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y” 或“Y函数依赖于X” ,记作 X→Y。

注:关于函数依赖的说明:

1.所有关系实例均要满足

2.函数依赖是语义范畴的概念, 只能根据语义来确定一个函数依赖 比如姓名→年龄这个函数依赖,只有该部门没有同名人的条件下成立

3.数据库设计者可以对现实世界 作强制的规定

非平凡函数依赖与平凡函数依赖

在关系模式R(U)中,对于U的子集X和Y, 如果X→Y,但Y ⊈ X,则称X→Y是非平凡的函数依赖。 若X→Y,但Y⊆X, 则称X→Y是平凡的函数依赖。

例:关系SC (Sno, Cno, Grade)

① 非平凡的函数依赖:(Sno, Cno) → Grade

② 平凡的函数依赖 (Sno, Cno) → Sno (Sno, Cno) → Cno

若X→Y,则X称为这个函数依赖的决 定属性组,也称为决定因素 (Determinant)

若X→Y,Y→X,则记作X←→Y

若Y不函数依赖于X,则记作 X ↛ Y

(箭头不好看,放个图)

完全函数依赖和部分函数依赖

传递函数依赖

例: 在关系Student(Sno, Sdept, Mname)中 Sno → Sdept,Sdept → Mname,存在传递函数依赖: Mname传递函数依赖于Sno

二.码

定义

主属性与非主属性

①包含在任何一个候选码中的属性,称为主属性 (Prime attribute)

②不包含在任何码中的属性称为 非主属性(Nonprime attribute)或 非码属性 (Non-key attribute)

全码 (All-key):

全码 (All-key):整个属性组是码

例2. ①关系模式S (Sno,Sdept,Sage), Sno是码 ②SC (Sno,Cno,Grade), (Sno,Cno)是码

例3. 关系模式R (P,W,A)  码为: (P,W,A),即全码 (All-Key)

外部码

e.g.在SC (Sno,Cno,Grade)中,Sno 不是码,但Sno是关系模式S (Sno Sdept,Sage)的码。Sno是关系模式 SC的外部码 主码与外部码一起提供了表示关系间联系的手段

三.范式

①第一范式(1NF)

1NF的定义:如果一个关系模式R的所有属性都是不可分的基本数据项 , 则 R∈1NF

第一范式是对关系模式最起码的要求。 不满足第一范式的数据库模式不能称为关系数据库。 但是满足第一范式的关系模式并不一定是一个好的关系模式。

例4. 关系模式S-L-C (Sno, Sdept, Sloc, Cno, Grade) Sloc为学生住处,假设每个系的学 生住在同一个地方。存在函数依赖:

我们认为S-L-C不是一个好的关系模式:

1. 插入异常 插入一个学生,该生未选课,则该生无Cno,这样的元组插不进S-L-C中,因为插入元组必须给定码值。

2. 删除异常 若某一学生只选了一门课,若这一门课他也不选了, 则要删掉该元组,此时该生的信息也被删除。

3. 数据冗余度大 同一个系的住址信息,大量冗余 学生选修K门课时,Sdept和Sloc也要重复存K次

4. 修改复杂 转系时,不仅要改Sdept,还要改Sloc

所以:S-L-C不是一个好的关系模式,原因:Sdept, Sloc部分函数依赖于码

解决方法: S-L-C分解为两个关系模式,以消除这些部分函数依赖 :

SC (Sno, Cno, Grade) S-L (Sno, Sdept, Sloc)

②第二范式(2NF)

定义: 若R∈1NF,且每一个非主属 性完全函数依赖于码,则R∈2NF。

可以理解为:2NF消除了非主属性对码的部分函数依赖

采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上 减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。

将一个1NF关系分解为多个2NF的关系, 并不能完全消除关系模式中的各种异常情况和数据冗余。

③第三范式(3NF)

定义6.7 关系模式R 中若不存在 这样的码X,属性组Y及非主属性Z (Z⊈Y), 使得X→Y,Y→Z成立,Y→X, 则称R<U,F>∈3NF

若R∈3NF,则每一个非主属性既不是部分依赖于码也不传递依赖于码。

即:3NF消除了非主属性对码的传递函数依赖

采用投影分解法将一个2NF的关系分解为多个3NF关系,可以在一定程度上解决原2NF关系中存在插入异常、删除异常、数据冗余度大、修改复杂等问题。

将一个2NF关系分解为多个3NF的关系 后,仍然不能完全消除关系模式中的各 种异常情况和数据冗余。

④BC范式(BCNF)

定义:关系模式R<U,F>∈1NF, 若X→Y且Y⊈X时X必含有码, 则R<U,F>∈BCNF

等价于:每一个决定因素都包含码

BCNF消除了主属性对码的传递函数依赖和部分函数依赖

若R∈BCNF

① 所有非主属性对每一个码都是完全函数依赖

② 所有的主属性对每一个不包含它的码,也是完全函数依赖

③ 没有任何属性完全函数依赖于非码 的任何一组属性

判断下列关系模式为第几范式:

例5. 关系模式C (Cno,Cname,Cpno)

– C∈3NF

– C∈BCNF

没有任何属性对Cno部分依赖或传递依赖,所以是3NF。 C是Cno是唯一的决定因素,所以是BCNF。

例6. 关系模式S (Sno,Sname,Sdept,Sage)

– 假定Sname也具有唯一性,则S有两个码Sno,Sname

– S∈3NF

– S∈BCNF

其他属性不存在对码的传递函数依赖与部分函数依赖, 所示是3NF。同时除Sno和Sname外,无其他决定因素, 所以S也属于BCNF。

例7. 关系模式SJP (S,J,P)

S: 学生,J: 课程, P: 名次 每一个学生选修每门课的成绩有一定的名次, 每门课中每一名次只有一个学生。

分析函数依赖:

(S,J)→P; (J,P)→S

(S,J)与 (J,P)都可以作为候选码,而且他们是相交的。不存在属性对码的传递依赖或部分依赖。 是否属于3NF和BCNF: SJP∈3NF ,SJP∈BCNF

例8. 在关系模式STJ (S,T,J)中,S表示学生, T表示教师,J表示课程 每一教师只教一门课,每门课有若干教师;某一学生选修某门课, 就对应一个固定的教师;某一学生选修了某教师的课,就对应一 个固定的课程。

函数依赖: (S,J)→T,(S,T)→J,T→J

候选码: (S,J)和(S,T)

是否属于3NF、BCNF:

STJ ∈ 3NF,没有任何非主属性对码部分依赖或传递依赖

STJ ∉ BCNF,T是决定因素,T不包含码

⑤多值依赖

定义:设R(U)是属性集U上的一个关系 模式。X, Y, Z是U的子集,并且Z=U-X-Y。 关系模式R(U)中多值依赖 X→→Y成立, 当且仅当对R(U)的任一关系r,给定一对 (x, z)值,有一组Y的值,这组值仅仅决 定于x值而与z值无关。

举例:有这样一个关系 <仓库管理员,仓库号,库存产品号> ,假设一个产品只能放到一个仓库中,但是一个仓库可以有若干管理员,那么对应于一个 <仓库管理员,库存产品号>有一个仓库号,而实际上,这个仓库号只与库存产品号有关,与管理员无关,就说这是多值依赖。

平凡的多值依赖和非平凡的多值依赖:

若X→→Y,而Z=φ(即Z为空),则称 X→→Y为平凡的多值依赖 否则称X→→Y为非平凡的多值依赖

例10. 关系模式WSC(W,S,C) W表示仓 库,S表示保管员,C表示商品

假设每个仓库有若干个保管员,若干种商品

每个保管员保管所在的仓库的所有商品

仓库中的每种商品被所有保管员保管

由此我们可以得到多值依赖的性质:

① 多值依赖具有对称性 若X→→Y,则X→→Z,其中Z=U-X-Y

② 多值依赖具有传递性 若X→→Y,Y→→Z, 则X→→Z –Y

③ 函数依赖是多值依赖的特殊情况,若 X→Y,则X→→Y

④ 若X→→Y,X→→Z,则X→→YZ

⑤ 若X→→Y,X→→Z,则X→→Y∩Z

⑥ 若X→→Y,X→→Z,则X→→Y-Z, X→→Z-Y

⑥第四范式(4sNF)

定义:关系模式R<U,F>∈1NF,如果 对于R的每个非平凡多值依赖X→→Y (Y⊈X),X都含有码,则R∈4NF

如果R ∈ 4NF,则R ∈ BCNF

不允许有非平凡且非函数依赖的多值依赖

② 允许的非平凡多值依赖实际上是函数依赖

关于多值依赖和第四范式大家可以去看一下:

多值依赖和第四范式的个人理解

习题一:

关系模式 R(员工编号,日期,零件数,部门名称,部门经理),表示某个工厂里每个员工每天生产的零件数,以及员工所在的部门和经理信息。假设:每个员工只在一个部门工作,每个部门只有一个经理。
(1) 写出模式 R 的基本函数依赖和候选码。(4 分)
(2) R 是否满足 2NF。如果不满足,请把 R 分解成 2NF。(3 分)
(3) 进一步将 R 分解成 3NF。(3 分)

(1) 根据给出的语义,R(员工编号,日期,零件数,部门名称,部门经理)的函数依赖包括:{(员工编号,日期)→零件数;员工编号→部门名称;部门名称→部门经理}。候选码:(员工编号,日期)。
(2) R 不是 2NF,因为(员工编号,日期)是候选码,存在非主属性(部门名称)对码的部分函数依赖。分解为 2NF: R1(员工编号,日期,零件数),R2(员工编号,部门名称,部门经理)。
(3) 分解为如下 3NF:R1(员工编号,日期,零件数),R2(员工编号,部门名称),R3(部门名称,部门经理)。

习题二

1. 设有下表所示的关系 R:(本题共 8 分)

课程号教师号教师地址
C001T1 Room1
C002T2Room1
C003T3Room2
C004T2Room1

(1)该关系最高满足第几范式?请说明理由。(3 分)
(2)请说明在什么情况下会发生删除操作异常?(2 分)
(3)请将它分解为高一级范式,说明分解后如何解决分解前可能存在的删除操作异常的?(3
分)

(1)根据给出的语义,R(课程名,教师号,教师地址)的函数依赖:课程号→教师号;教师号→教师地址;并且教师号→/课程名,所以存在课程号→教师地址即非主属性教师地址对码的传递函数依赖。但是并没有非主属性对码的部分函数依赖,所以满足2NF,不满足3NF

(2)当删除课程号时,教师有关的信息也会一起删除
(3)分解为 3NF: R1(课程号,教师号)

课程号教师号
C001T1 
C002T2
C003T3
C004T2

R2(教师号,教师地址)

教师号教师地址
T1 Room1
T2Room1
T3Room2
  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值