数据库第六章关系数据理论.ppt
合集下载
数据库课件 第六章 关系数据库设计理论优秀课件
注:主码和外码一起提供了表示关系间联系的手段。
6.3 规范化
• 范式是对关系数据库的规范化过程中为不同 程度的规范化要求设立的不同标准。
• 范式是符合某一种级别的关系模式的集合。
• 范式的种类: 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF)
6.1 问题的提出
存在的问题: ⒈ 数据冗余太大
– 浪费大量的存储空间 ⒉ 更新异常
– 更新代价大,可能导致数据不一致 ⒊ 插入异常
– 该插的数据插不进去 ⒋ 删除异常
– 不该删除的数据不得不删,造成某些数据丢失
6.1 问题的提出
结论: • WAE关系模式不是一个好的模式。 • “好”的模式:不会发生插入异常、删除异常、 更新异常,数据冗余应尽可能少。
例:在关系wae中有:
仓库号→所在区域,所在区域→区域主管 可得到传递函数依赖:仓库号 t 区域主管
6.2.2 码
定义6.5 设K为R<U,F>中的属性或属性组合。若 K F U,则K称为R的一个侯选码。 若关系模式R有多个候选码,则选定其中的一 个做为主码。 • 主属性:包含在任何一个候选码中的属性
注:对任一关系模式,平凡函数依赖必然存在,则一般讨论非平凡函 数依赖。
6.2.1 函数依赖
• 完全函数依赖与部分函数依赖 定义6.3 在R(U)中,如果X→Y,并且对于X的任何 一个真子集X’ ,都有X’ → Y, 则称Y对X完全函数依 赖,记作X f Y。
若X→Y,但Y不完全函数依赖于X,则称Y对X 部分函数依赖,记作X P Y。
注:当确定函数依赖关系时,可从属性间的联系入手
6.2.1 函数依赖
6.3 规范化
• 范式是对关系数据库的规范化过程中为不同 程度的规范化要求设立的不同标准。
• 范式是符合某一种级别的关系模式的集合。
• 范式的种类: 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF)
6.1 问题的提出
存在的问题: ⒈ 数据冗余太大
– 浪费大量的存储空间 ⒉ 更新异常
– 更新代价大,可能导致数据不一致 ⒊ 插入异常
– 该插的数据插不进去 ⒋ 删除异常
– 不该删除的数据不得不删,造成某些数据丢失
6.1 问题的提出
结论: • WAE关系模式不是一个好的模式。 • “好”的模式:不会发生插入异常、删除异常、 更新异常,数据冗余应尽可能少。
例:在关系wae中有:
仓库号→所在区域,所在区域→区域主管 可得到传递函数依赖:仓库号 t 区域主管
6.2.2 码
定义6.5 设K为R<U,F>中的属性或属性组合。若 K F U,则K称为R的一个侯选码。 若关系模式R有多个候选码,则选定其中的一 个做为主码。 • 主属性:包含在任何一个候选码中的属性
注:对任一关系模式,平凡函数依赖必然存在,则一般讨论非平凡函 数依赖。
6.2.1 函数依赖
• 完全函数依赖与部分函数依赖 定义6.3 在R(U)中,如果X→Y,并且对于X的任何 一个真子集X’ ,都有X’ → Y, 则称Y对X完全函数依 赖,记作X f Y。
若X→Y,但Y不完全函数依赖于X,则称Y对X 部分函数依赖,记作X P Y。
注:当确定函数依赖关系时,可从属性间的联系入手
6.2.1 函数依赖
关系数据理论PPT精品课件
数据的冗余度很大,浪费了存储空间。
2021/3/1
7
(2)插入异常
学号
姓名
年龄
部门 系主任 课程号 成绩
S1
赵亦
17
计算机 刘伟
C1
90
S1
赵亦
17
计算机 刘伟
C2
85
S2
钱尔
18
信息
王平
C5
57
S2
钱尔
18
信息
王平
C6
80
S2
钱尔
18
信息
王平
C7
70
S2
钱尔
18
信息
王平
C5
70
S3
孙珊
20
信息
王平
C1
0
S3
孙珊
20
信息
王平
C2
70
S3
孙珊
20
信息
王平
C4
85
S4
李思
19
自动化 刘伟
s5
刘一己
18
null
null
C1 null
? 93
null
在这个关系模式中,(学号,课程号)是主关键字。根据关 系的实体完整性约束,主关键字的值不能为空,而这时没有学 生,学号,课程号均无值,因此导致插入异常。
2021/3/1
2021/3/1
11
6.2 怎么选择
一个好的关系模式应该具备以下条件: ✓尽可能小的数据冗余 ✓没有插入异常 ✓没有删除异常 ✓没有更新异常
2021/3/1
12
案例分析
SCD (学号,姓名,年龄,部门,系主任,课程号,成绩)
关系数据理论
则称Z传递函数依赖于X S# SD,SD DEAN
练习:给出一个具有传递函数依赖的关系模式例子
存在传递函数依赖的例子
示例
考虑为管理职工的工资信息而设计一个关系模式
职工 赵明 钱广 孙志 李开 周祥
级别 4 5 6 5 6
工资 500 600 700 600 700
函数依赖
候选码:设K为R< U , F >的属性(组),若K f U,
消除非主属性对码的部分依赖 如S2NF,因为 (S#,C#)p SN (S#,C#)p SD
2NF
改造
非主属性有两种,一种完全依赖于码,一种部分依赖于码。 将S分解为: SC(S# , C# , G) S_SD(S# , SN , SD , DEAN)
练习
关系模式R(A,B,C,D),码为AB,给出它的一个函数 依赖集,使得R属于1NF而不属于2NF
第六章 关系数据理论
内容出处: 1.Abraham Silberschatz《数据库系统概念》第七 章
第六章 关系数据理论
教学目的
本章讨论如何进行关系数据库的逻辑设计。首先介绍函数依赖的概念,然 后利用函数依赖和其他类型的依赖定义范式,并给出利用Armstrong公理 系统确定范式级别的方法,最后介绍一些将关系模式分解为更高级范式的 模式分解算法。
问题:关系模式的形式描述?
关系模式的设计问题
关系模式的形式描述
关系模式由五部分组成,即关系模式是一个五元组: R(U,D,DOM,F)
R:关系名 U:组成该关系的属性名集合 D:属性组U中属性所来自的域 DOM:属性到域的映射 F:属性间的数据依赖集合。它限定了组成关系的各个元组
3NF
不良特性
S_SD(S# , SN , SD , DEAN)
练习:给出一个具有传递函数依赖的关系模式例子
存在传递函数依赖的例子
示例
考虑为管理职工的工资信息而设计一个关系模式
职工 赵明 钱广 孙志 李开 周祥
级别 4 5 6 5 6
工资 500 600 700 600 700
函数依赖
候选码:设K为R< U , F >的属性(组),若K f U,
消除非主属性对码的部分依赖 如S2NF,因为 (S#,C#)p SN (S#,C#)p SD
2NF
改造
非主属性有两种,一种完全依赖于码,一种部分依赖于码。 将S分解为: SC(S# , C# , G) S_SD(S# , SN , SD , DEAN)
练习
关系模式R(A,B,C,D),码为AB,给出它的一个函数 依赖集,使得R属于1NF而不属于2NF
第六章 关系数据理论
内容出处: 1.Abraham Silberschatz《数据库系统概念》第七 章
第六章 关系数据理论
教学目的
本章讨论如何进行关系数据库的逻辑设计。首先介绍函数依赖的概念,然 后利用函数依赖和其他类型的依赖定义范式,并给出利用Armstrong公理 系统确定范式级别的方法,最后介绍一些将关系模式分解为更高级范式的 模式分解算法。
问题:关系模式的形式描述?
关系模式的设计问题
关系模式的形式描述
关系模式由五部分组成,即关系模式是一个五元组: R(U,D,DOM,F)
R:关系名 U:组成该关系的属性名集合 D:属性组U中属性所来自的域 DOM:属性到域的映射 F:属性间的数据依赖集合。它限定了组成关系的各个元组
3NF
不良特性
S_SD(S# , SN , SD , DEAN)
第六章 关系数据理论.ppt
5
3
3
解答:A->BC, B->C,AB->C…
21
6.2.1 函数依赖 (续)
2. 相关说明 函数依赖成立的条件 平凡的函数依赖 如果X Y,但Y X,则称其为平凡的函数依赖,否则 称为非平凡的函数依赖 如(Sno,SN) SN是平凡的函数依赖
22
6.2.1 函数依赖 (续)
32
6.2.3 范式(续)
3. 2NF
2NF的定义 • 若R1NF,且每个非主属性完全依赖于码,则称 R2NF • 消除非主属性对码的部分依赖 如S2NF,因为 (Sno,Cno)p SN (Sno,Cno)p SD
33
6.2.3 范式(续)
3. 2NF
1NF到2NF的改造
• 非主属性有两种,一种完全依赖于码,一种部分 依赖于码。 将S分解为: SC(Sno , Cno , G) S_SD(Sno , SN , SD , DEAN)
• 消除非主属性对码的部分函数依赖
34
改造结果
Sno SD
SD
DEAN
S01 杨明
D01
思齐
S02 李婉
D01
思齐
S03 刘海
D02
述圣
关系模式S(Sno , SN , SD , DEAN , Cno , G)在现实世 界中的体现的属性之间的依赖关系
• 一个系由若干学生,但一个学生只属于一个系(1-n) Sno -> SD
• 一个系只有一名主任 SD -> DEAN
• 每个学生学习一个课程,都有一个成绩G (Sno, Cno) -> G
27
范式关系图
1NF 2NF 3NF BCNF 4NF
关系数据库PPT课件
Sage 20 19 18 19
Sdept 计算机 水利 机电 计算机
例1 查询计算机系全体学生记录
σSdept='计算机‘ (S)
33
第33页/共57页
关系代数
• 投影 ΠA(R)={t[A]|tєR^A是R的属性}
A1
A2
A3
An
• 例2 查询所有学生的姓名和所在系 ΠSname,Sdept(S)
15
第15页/共57页
关系数据结构及其形式化定义
• 关系模式 • 对关系的描述 • R(U,D,Dom,F) R——关系名 U——属性名集合 D——属性组U中属性取值范围(域) Dom——属性向域的映像集合 F——属性间数据依赖关系的集合
16
第16页/共57页
关系数据结构及其形式化定义
• 关系与关系模式 • 关系是关系模式在某一时刻的状态或内容;它是动态的,随时间不断变化的 • 关系模式是静态的,稳定的
a1
Y
B
C
b1 c2
b3
c7
b4
c6
b2 c3
b6
c6
b2
c3
b2 c1
Y S B CD
b1 c2 d1
b2 c1 d1
b2 c3 d2
46
第46页/共57页
关系代数
• R÷S A a1
47
第47页/共57页
关系代数
• 对R中的A的值进行分组 • a1的象集 {(b1, c2),(b2, c3), (b2, c1)} • a2的象集 {(b3, c1),(b2, c3)} • a3的象集 {(b4, c6)} • a4的象集 {(b6, c6)}
例2:查询所有计算机系男生的姓名。 ΠSname(σSdept=‘计算机’ Ssex=‘男’(S))
第6章关系数据理论PPT课件
6.1.3 为什么要讨论函数依赖?
有关系模式:
S-L-C(Sno,Sdept,SLOC,Cno,Grade)
Sno
Sname Ssex
Sdept
Sloc
Cno Grade
李勇
男
计算机系
2公寓
c01
90
李勇
男
计算机系
2公寓
c02
86
李勇
男
计算机系
2公寓
c06
NULL
刘晨
男
计算机系
2公寓
c02
78
刘晨
• 有以下依赖关系: Sno→Sname, Sno→Sdept, Sno→Sage
例2: SC(Sno, Cno, Grade) (Sno, Cno)→Grade
函数依赖定义
• 设有关系模式R(A1,A2,…,An),X和Y均为{A1,A2,…,An}的子 集,r是R的任一具体关系,t1、t2是r中的任意两个元组;
6.1.2 一些术语和符号
1. 如果X→Y,但Y不包含于X,则称 X→Y是非平凡的函数依赖。
2 . 如果X→Y,但Y包含于X,则称 X→Y是平凡的函数依赖。
若无特别声明,我们讨论的都是非平凡 的函数依赖。
术语和符号(续)
3. 如果X→Y,则X称为决定因子。 4. 如果X→Y,并且Y→X,则记作
X←→Y。
结论
• Student关系模式不是一个好的模式。 • “好”的模式:
• 不会发生插入异常、删除异常、更新异常, • 数据冗余应尽可能少。 • 原因:由存在于模式中的某些数据依赖引起 • 解决方法:通过分解关系模式来消除其中不 合适的数据依赖
6.2 关系规范化
数据库原理6-3
伪传递规则:由X→Y,WY→Z,有XW→Z。
证明: X→Y,有WX →WY,又WY→Z,故XW→Z。
分解规则:由X→Y及 Z Y,有X→Z。 不需证明(A1, A3)
2.根据合并规则和分解规则,可得引理6.1; 引理6.l X→A1 A2…Ak成立的充分必要条件是X→Ai成立(i=l,2 ,…,k)。
例2:求F={AB→C,A→B,B→A}的最小函数依赖集Fmin。
解:(1)去掉F中冗余的函数依赖: 判断AB→C是否冗余。设:G1={ A→B,B→A},得:(AB)G1+=AB ∵ C (AB)G1+ ∴ AB→C不冗余 判断A→B是否冗余。设:G2={ AB→C,B→A},得:AG2+=A ∵ BABG2+ ∴ A→B不冗余 判断B→A是否冗余。设:G3={ AB→C,A→B },得:BG3+=B ∵ ABG3+ ∴B→A不冗余 函数依赖集仍然为F={AB→C,A→B,B→A};
(2) 去掉各函数依赖左部冗余的属性(本题只需考虑AB→C的情况) 方法1:在决定因素中去掉B,若CAF+,则以A→C代替AB→C。 求得:AF+=ABC ∵ CAF+ ∴ 以A→C代替AB→C 故:Fm={A→C,A→B,B→A} 方法2:在决定因素中去掉A,若CBF+,则以B→C代替AB→C。 求得:BF+=ABC ∵ CBF+ ∴ 以B→C代替AB→C 故:Fm={B→C,A→B,B→A}
→sdept,Sdept → Mname,(sno,cno) → Grade}
F ΄={sno →sdept, Sno → Mname, Sdept → Mname, (sno,cno) → Grade,(sno,sdept) → sdept}
数据库原理与应用第6章 关系数据理论-PPT精品课件
规范化理论目的: 讨论一个关系属性间不同的依赖情况(数据依赖)。 改造关系模式,通过分解关系模式来消除其中不合适 的数据依赖,以解决插入异常、删除异常、更新异常和 数据冗余问题。
两种重要的数据依赖: 函数依赖(Functional Dependency,FD) 多值依赖(Multivalued Dependency,MVD)
下成立
有关系实例均要满足的约束条件。
说明:
1. 所有关系实例均要满足 2. 语义范畴的概念 3. 数据库设计者可以对现实世界作强制的规定
需要指出的是:关系R中,如果属性组X是一个候选码或码,则属性组 Y一定函数依赖于X(这与候选码的定义一致)
术语和记号
X Y ,但 Y X ,则称 X Y 是非平凡的函数依赖
1) 元组的每个分量必须是不可分的数据项。 2) 数据库中的数据 冗余应尽可能少。 3) 关系数据库不能因为数据更新操作而引起数据不一致问题。 4) 当执行数据插入操作时,数据库中的数据不能产生插入异常现象 。 5) 数据库中的数据不能在执行删除操作时产生删除异常问题。
函数依赖 平凡函数依赖与非平凡函数依赖 完全函数依赖与部分函数依赖 传递函数依赖
问题的根源 1、关系规范化理论研究背景 2、数据依赖和键/码
关系模型建立在严格的数据 理论基础上,并可向别的数 据模型转换,因此常以关系 模型为背景来讨论这个问题
3、规范化(Normalization)理论(本章重点) 1NF、2NF、3NF、BCNF等范式
模式分解 关系模式规范化的必要性及方法途径
Sno
Cno
Grade
Sdept
Mname
该模式存在什么问题?怎么改善这个模式?
1. 数据冗余太大 2. 更新异常(Update Anomalies) 3. 插入异常(Insertion Anomalies) 4. 删除异常(Deletion Anomalies)
数据库技术及应用 第6章 关系数据理论(选讲部分)
原因:由存在于模式中的某些数据依赖引起的 解决方法:通过分解关系模式来消除其中不合适
的数据依赖。
17
数据库技术及应用
6.2 规范化
规范化理论正是用来改造关系模式,通过 分解关系模式来消除其中不合适的数据依 赖,以解决插入异常、删除异常、更新异 常和数据冗余问题。
18
数据库技术及应用
6.2.1 函数依赖
足不同程度要求的为不同范式。 范式的种类:
第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF)
30
数据库技术及应用
6.2.3 范式 各种范式之间存在联系:
1NF 2NF 3NF BCNF 4NF 5NF
例: 在关系SC(Sno, Cno, Grade)中, 由于:Sno →Grade,Cno → Grade, 因此:(Sno, Cno) f Grade
26
数据库技术及应用
四、传递函数依赖
定义6.3 在关系模式R(U)中,如果X→Y,Y→Z,
且Y X,Y→X,ZY则称Z传递函数依赖于X。
记为:Y 传→递 X 注: 如果Y→X, 即X←→Y,则Z直接依赖于X。 例: 在关系Std(Sno, Sdept, Mname)中,有:
32
数据库技术及应用
2NF
例: 关系模式SLC(Sno, Sdept, Sloc, Cno, Grade) Sloc为学生住处,假设每个系的学生住在同一个 地方。
函数依赖包括: (Sno, Cno) f Grade Sno → Sdept (Sno, Cno) P Sdept Sno → Sloc (Sno, Cno) P Sloc Sdept → Sloc
的数据依赖。
17
数据库技术及应用
6.2 规范化
规范化理论正是用来改造关系模式,通过 分解关系模式来消除其中不合适的数据依 赖,以解决插入异常、删除异常、更新异 常和数据冗余问题。
18
数据库技术及应用
6.2.1 函数依赖
足不同程度要求的为不同范式。 范式的种类:
第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF)
30
数据库技术及应用
6.2.3 范式 各种范式之间存在联系:
1NF 2NF 3NF BCNF 4NF 5NF
例: 在关系SC(Sno, Cno, Grade)中, 由于:Sno →Grade,Cno → Grade, 因此:(Sno, Cno) f Grade
26
数据库技术及应用
四、传递函数依赖
定义6.3 在关系模式R(U)中,如果X→Y,Y→Z,
且Y X,Y→X,ZY则称Z传递函数依赖于X。
记为:Y 传→递 X 注: 如果Y→X, 即X←→Y,则Z直接依赖于X。 例: 在关系Std(Sno, Sdept, Mname)中,有:
32
数据库技术及应用
2NF
例: 关系模式SLC(Sno, Sdept, Sloc, Cno, Grade) Sloc为学生住处,假设每个系的学生住在同一个 地方。
函数依赖包括: (Sno, Cno) f Grade Sno → Sdept (Sno, Cno) P Sdept Sno → Sloc (Sno, Cno) P Sloc Sdept → Sloc
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
规范化过程中通过一组投影运算消除传递依赖, 建议作如下分解(No2):
已知关系R(A,B,C), A为主码(A->B, A->C),且B->C, 则将R分解成为两个投影: R1(B,C), B为主码 R2(A,B), A为主码,B为外码
对3NF的进一步说明
在不考虑主属性对码的部分依赖和传递依赖时, 可以认为已实现了彻底的分解,已消除了插入 异常,删除异常,修改异常,冗余等问题。
的部分,使模式达到一定程度的分离,但又不丢失 原模式中的信息。 模式分解的数学实质:投影。
说明
模式分解可以在很大程度上消除冗余,解决更新异 常等问题,但也要付出做连接运算等效率上的代价。
函数依赖可以保证关系分解的无损连接性
设R(X,Y,Z),X,Y,Z为不相交的属性集合,如果 X Y 或 X Z ,则 有R(X,Y,Z)=R[X,Y] R[X,Z], 即R等于R的两组投影在X上的自然连 接,保证了关系R分解后不会丢失原有的信息。
进一步说明:函数依赖与属性之间联系类型的关系
分解说明
一个1NF,但非2NF的关系总是可以被分 解成为一组2NF的关系。
规范化过程中通过一组投影运算消除部 分依赖,建议作如下分解(No1):
已知关系R(A,B,C,D), (A,B)为主码,即(A,B)->C, (A,B)->D,且A->D(部分依赖), 则将R分解成 为两个投影: R1(A,D), A为主码 R2(A,B,C), (A,B)为主码,A为外码
删除异常
某学生所有的选课信息都删除后,其系、住处等信 息也被删除。
修改复杂(更新异常)
学生转系时,除了修改其系名外,还需修改其住处 信息;另外,若该学生选修了多门课程,则其对应 的重复存储的系、住处等信息需一一修改。
冗余
同系的所有学生的住处信息重复存储,同一学生选 多门课程时,其系、住处信息重复存储。
对定义的说明
函数依赖是语义范畴的概念
只能根据语义来确定一个函数依赖,而不能按照其形式化定义来 证明一个函数依赖是否成立;(如在无重名前提下Sname Age 成 立,否则就不存在此函数依赖)
函数依赖关系的存在与时间无关
它是关系中的所有元组均满足的约束条件,当关系中的元组增加、 删除或更新均不能破坏它;
一个BCNF范式必是3NF,但一个3NF范式不一定是BCNF (3NF中可 能存在主属性对码的部分和传递依赖)。
无重名条件下 SNC(SNO,SN,CNO,SCORE)
两个候选码:(SNO,CNO); (SN,CNO)
函数依赖 : SNO SN
(SNO,CNO) SCORE
(SN, CNO) SCORE
关系数据理论的研究背景 关系模型建立在严格的数学基础上,并可向 别的数据模型转换,因此常以关系模型为背 景来讨论这个问题
背景知识
数据模式(schema)
数据库中全体数据的逻辑结构和特征描述,如数据 记录的构成,数据间的联系,安全性、完整性要求 等。常以某一种数据模型为基础。
关系模型的形式化定义
BCNF是在函数依赖范畴内对关系模式的彻底分解, 已消除了插入和删除异常。
通常认为BCNF是扩充的第三范式,一般数据库设计 达到BCNF已足够。
实例
例1: 无并列名次时的SJP(学生S, 课程J, 名次P) (S,J)和(J,P) 均为候选码 函数依赖为(S,J)P, (J,P) S 其中,两个决定因素均包含(是)候选码 可见SJP BCNF
6.2.1 函数依赖
定义1
设R(U)是属性集U上的关系模式。X,Y是U的子
集。若对于R(U)的任意一个可能的关系r,r
中不可能存在两个元组在X上的属性值相等,
而在Y上的属性值不等,则称X函数确定Y或Y
函数依赖于X,记作
。 X Y
若 X Y ,则X叫做决定因素。
若Y不函数依赖于X,则记作 X Y。
t
X Z
6.2.3 范式
范式:符合某种级别(对关系中数据依赖 的要求)的关系模式。
范式种类
1NF, 2NF, 3NF, BCNF, 4NF,5NF 按级别(条件、要求)由低到高:
1NF 2NF 3NF BCNF 4NF 5NF 通常称某一关系模式R为第几范式,记作
R xNF。
R(U,D,dom,F),本章简化为R(U, F)。
候选码、主码、外码、全码。
主码和外码提供了一个表示关系间联系的手段
不包含在任何码中的属性,叫做非主属性。
一个例子:学生-课程-成绩管理
客观事实: 一个系有若干学生,但一个学生只属于一个系;一个 系只有一名负责人;一个学生可以选修多门课程,每 门课程有若干学生选修;每个学生学习每一门课程有 一个成绩。
例2: 每教师只教一门课时的STJ(学生S, 教师T, 课程J) (S,T)和(S,J) 均为候选码 函数依赖为(S,J) T, (S,T) J, T J 可见STJ 3NF(此例中无非主属性), 但STJ BCNF, 因T为决定因素,但不包含码
例子
前例是3NF, 也是BCNF SC(SNO, CNO, G); (SNO, CNO) G
2020/1/21
关系数据理论
要点
关系规范化理论研究背景 数据依赖 规范化(Normalization)理论
1NF、2NF、3NF、BCNF等范式 关系模式规范化的必要性及方法
6.1 问题的提出
问题提出: 针对一个具体问题,如何构造合适的(更好 的)数据模式,即如何更好地设计数据库的 逻辑结构?
非主属性SCORE对码不存在部分函数依赖和传递函数依赖,但
决定因素SNO或SN不包含候选码,即主属性对码存在部分函数依赖
(SNO,CNO)P SN
(SN,CNO)P SNO
故SNC 是3NF,非BCNF。其弊端?
主属性对码的部分ห้องสมุดไป่ตู้数依赖,造成SNC较大的数据冗余, 学生姓名的存储次数等于选课数,导致更新异常。当学生改 名时,必须对该学生的每一记录逐一修改。
解决办法
模式分解
依赖关系分析 G
SNO CNO
SDEPT SLOC
上例中的模式分解为下列两个模式,该模式是2NF
SC(SNO, CNO, G) (SNO, CNO)G S-L(SNO, SDEPT, SLOC) SNO SDEPT, SNO SLOC, SDEPT SLOC
SLOC
S-L中存在传递传递依赖,故该模式不是3NF
不是3NF可能存在的问题
插入异常
当新系没有招生时,其住处信息无法插入。
删除异常
当某系所有学生毕业而又没招生时,该系学生住处信 息将丢失。
更新异常
一个系住处信息变动时,需改动较多记录。
冗余
每个系的系名与学生住处信息重复存储的次数等于该 系学生人数
6.2.5 3NF
定义:若R2NF, 且它的任何一个非主属性都不 传递依赖于任何候选码,则R 3NF。
说明:即不存在非主属性部分依赖和传递依赖 于码的关系为3NF。
推论:不存在非主属性的模式为3NF。
上例中得到的关系模式是2NF
SC(SNO, CNO, G);
SNO
SDEPT
S-L(SNO, SDEPT, SLOC);
问题和改进
MN
SDEPT
SNO CNAME
G
该模式的主码为(SNO,CNAME) 存在的问题
插入异常:一个系无学生或未安排课程时,无法存入 系与负责人(实体完整性约束)
删除异常:一个系的学生全部毕业而没有招生时,系 与负责人也随之删除(现实中该系仍存在)
更新异常:当某系负责人更换时,须更新该系所有学 生信息中的数据,系统需付出的维护工作量很大
说明:不存在非主属性部分依赖于码的关系为2NF
举例:关系模式 S-L-C(SNO, SDEPT, SLOC, CNO, G)
函数依赖图
SNO
SDEPT
G CNO
SLOC
关系模式S-L-C是不2NF? 不是,因为SDEPT和SLOC部分依赖于码
不是2NF可能出现的问题
插入异常
某学生没有选课时,无法插入其系、住处等信息。
如属性X与Y有1:1联系时, X Y
当学生无重名时,SNo SName
如果属性X与Y有m:1的联系时,则只存在函 数依赖X Y
如SNo与Sage、SDept之间均为m:1 SNo Sage、 SNo SDept
如果属性X与属性Y有m:n的联系时,则X与Y 之间不存在任何函数依赖关系
如 SNo与CNo之间不存在函数依赖
作 X P Y
NOTE:只有当决定因素为组合属性时,讨论部分函数依赖才有 意义,当决定因素是单属性时,只能是完全函数依赖
定义3
设R(U)是属性集U上的关系模式。X,Y,Z是U的子集,如果 X Y 但 Y X ,而 Y Z( Y X ,Z Y)则称Z对X传递函 数依赖,记作
解决方法
继续模式分解
如上例中的模式可分解为3NF
SC(SNO, CNO, G); (SNO, CNO) G S-D(SNO, SDEPT); SNO SDEPT D-L(SDEPT, SLOC); SDEPT SLOC
SNO
G
CNO
SNO SDEPT
SDEPT SLOC
分解说明
一个2NF,但非3NF的关系总是可以被分解成为 一组3NF的关系。
冗余太大:系名、负责人姓名重复存储 “包罗万象”的关系模式并不好!
原因:数据依赖存在一些不合适的性质,需寻找更好 的模式,一个好的模式应具备以下四个条件:
已知关系R(A,B,C), A为主码(A->B, A->C),且B->C, 则将R分解成为两个投影: R1(B,C), B为主码 R2(A,B), A为主码,B为外码
对3NF的进一步说明
在不考虑主属性对码的部分依赖和传递依赖时, 可以认为已实现了彻底的分解,已消除了插入 异常,删除异常,修改异常,冗余等问题。
的部分,使模式达到一定程度的分离,但又不丢失 原模式中的信息。 模式分解的数学实质:投影。
说明
模式分解可以在很大程度上消除冗余,解决更新异 常等问题,但也要付出做连接运算等效率上的代价。
函数依赖可以保证关系分解的无损连接性
设R(X,Y,Z),X,Y,Z为不相交的属性集合,如果 X Y 或 X Z ,则 有R(X,Y,Z)=R[X,Y] R[X,Z], 即R等于R的两组投影在X上的自然连 接,保证了关系R分解后不会丢失原有的信息。
进一步说明:函数依赖与属性之间联系类型的关系
分解说明
一个1NF,但非2NF的关系总是可以被分 解成为一组2NF的关系。
规范化过程中通过一组投影运算消除部 分依赖,建议作如下分解(No1):
已知关系R(A,B,C,D), (A,B)为主码,即(A,B)->C, (A,B)->D,且A->D(部分依赖), 则将R分解成 为两个投影: R1(A,D), A为主码 R2(A,B,C), (A,B)为主码,A为外码
删除异常
某学生所有的选课信息都删除后,其系、住处等信 息也被删除。
修改复杂(更新异常)
学生转系时,除了修改其系名外,还需修改其住处 信息;另外,若该学生选修了多门课程,则其对应 的重复存储的系、住处等信息需一一修改。
冗余
同系的所有学生的住处信息重复存储,同一学生选 多门课程时,其系、住处信息重复存储。
对定义的说明
函数依赖是语义范畴的概念
只能根据语义来确定一个函数依赖,而不能按照其形式化定义来 证明一个函数依赖是否成立;(如在无重名前提下Sname Age 成 立,否则就不存在此函数依赖)
函数依赖关系的存在与时间无关
它是关系中的所有元组均满足的约束条件,当关系中的元组增加、 删除或更新均不能破坏它;
一个BCNF范式必是3NF,但一个3NF范式不一定是BCNF (3NF中可 能存在主属性对码的部分和传递依赖)。
无重名条件下 SNC(SNO,SN,CNO,SCORE)
两个候选码:(SNO,CNO); (SN,CNO)
函数依赖 : SNO SN
(SNO,CNO) SCORE
(SN, CNO) SCORE
关系数据理论的研究背景 关系模型建立在严格的数学基础上,并可向 别的数据模型转换,因此常以关系模型为背 景来讨论这个问题
背景知识
数据模式(schema)
数据库中全体数据的逻辑结构和特征描述,如数据 记录的构成,数据间的联系,安全性、完整性要求 等。常以某一种数据模型为基础。
关系模型的形式化定义
BCNF是在函数依赖范畴内对关系模式的彻底分解, 已消除了插入和删除异常。
通常认为BCNF是扩充的第三范式,一般数据库设计 达到BCNF已足够。
实例
例1: 无并列名次时的SJP(学生S, 课程J, 名次P) (S,J)和(J,P) 均为候选码 函数依赖为(S,J)P, (J,P) S 其中,两个决定因素均包含(是)候选码 可见SJP BCNF
6.2.1 函数依赖
定义1
设R(U)是属性集U上的关系模式。X,Y是U的子
集。若对于R(U)的任意一个可能的关系r,r
中不可能存在两个元组在X上的属性值相等,
而在Y上的属性值不等,则称X函数确定Y或Y
函数依赖于X,记作
。 X Y
若 X Y ,则X叫做决定因素。
若Y不函数依赖于X,则记作 X Y。
t
X Z
6.2.3 范式
范式:符合某种级别(对关系中数据依赖 的要求)的关系模式。
范式种类
1NF, 2NF, 3NF, BCNF, 4NF,5NF 按级别(条件、要求)由低到高:
1NF 2NF 3NF BCNF 4NF 5NF 通常称某一关系模式R为第几范式,记作
R xNF。
R(U,D,dom,F),本章简化为R(U, F)。
候选码、主码、外码、全码。
主码和外码提供了一个表示关系间联系的手段
不包含在任何码中的属性,叫做非主属性。
一个例子:学生-课程-成绩管理
客观事实: 一个系有若干学生,但一个学生只属于一个系;一个 系只有一名负责人;一个学生可以选修多门课程,每 门课程有若干学生选修;每个学生学习每一门课程有 一个成绩。
例2: 每教师只教一门课时的STJ(学生S, 教师T, 课程J) (S,T)和(S,J) 均为候选码 函数依赖为(S,J) T, (S,T) J, T J 可见STJ 3NF(此例中无非主属性), 但STJ BCNF, 因T为决定因素,但不包含码
例子
前例是3NF, 也是BCNF SC(SNO, CNO, G); (SNO, CNO) G
2020/1/21
关系数据理论
要点
关系规范化理论研究背景 数据依赖 规范化(Normalization)理论
1NF、2NF、3NF、BCNF等范式 关系模式规范化的必要性及方法
6.1 问题的提出
问题提出: 针对一个具体问题,如何构造合适的(更好 的)数据模式,即如何更好地设计数据库的 逻辑结构?
非主属性SCORE对码不存在部分函数依赖和传递函数依赖,但
决定因素SNO或SN不包含候选码,即主属性对码存在部分函数依赖
(SNO,CNO)P SN
(SN,CNO)P SNO
故SNC 是3NF,非BCNF。其弊端?
主属性对码的部分ห้องสมุดไป่ตู้数依赖,造成SNC较大的数据冗余, 学生姓名的存储次数等于选课数,导致更新异常。当学生改 名时,必须对该学生的每一记录逐一修改。
解决办法
模式分解
依赖关系分析 G
SNO CNO
SDEPT SLOC
上例中的模式分解为下列两个模式,该模式是2NF
SC(SNO, CNO, G) (SNO, CNO)G S-L(SNO, SDEPT, SLOC) SNO SDEPT, SNO SLOC, SDEPT SLOC
SLOC
S-L中存在传递传递依赖,故该模式不是3NF
不是3NF可能存在的问题
插入异常
当新系没有招生时,其住处信息无法插入。
删除异常
当某系所有学生毕业而又没招生时,该系学生住处信 息将丢失。
更新异常
一个系住处信息变动时,需改动较多记录。
冗余
每个系的系名与学生住处信息重复存储的次数等于该 系学生人数
6.2.5 3NF
定义:若R2NF, 且它的任何一个非主属性都不 传递依赖于任何候选码,则R 3NF。
说明:即不存在非主属性部分依赖和传递依赖 于码的关系为3NF。
推论:不存在非主属性的模式为3NF。
上例中得到的关系模式是2NF
SC(SNO, CNO, G);
SNO
SDEPT
S-L(SNO, SDEPT, SLOC);
问题和改进
MN
SDEPT
SNO CNAME
G
该模式的主码为(SNO,CNAME) 存在的问题
插入异常:一个系无学生或未安排课程时,无法存入 系与负责人(实体完整性约束)
删除异常:一个系的学生全部毕业而没有招生时,系 与负责人也随之删除(现实中该系仍存在)
更新异常:当某系负责人更换时,须更新该系所有学 生信息中的数据,系统需付出的维护工作量很大
说明:不存在非主属性部分依赖于码的关系为2NF
举例:关系模式 S-L-C(SNO, SDEPT, SLOC, CNO, G)
函数依赖图
SNO
SDEPT
G CNO
SLOC
关系模式S-L-C是不2NF? 不是,因为SDEPT和SLOC部分依赖于码
不是2NF可能出现的问题
插入异常
某学生没有选课时,无法插入其系、住处等信息。
如属性X与Y有1:1联系时, X Y
当学生无重名时,SNo SName
如果属性X与Y有m:1的联系时,则只存在函 数依赖X Y
如SNo与Sage、SDept之间均为m:1 SNo Sage、 SNo SDept
如果属性X与属性Y有m:n的联系时,则X与Y 之间不存在任何函数依赖关系
如 SNo与CNo之间不存在函数依赖
作 X P Y
NOTE:只有当决定因素为组合属性时,讨论部分函数依赖才有 意义,当决定因素是单属性时,只能是完全函数依赖
定义3
设R(U)是属性集U上的关系模式。X,Y,Z是U的子集,如果 X Y 但 Y X ,而 Y Z( Y X ,Z Y)则称Z对X传递函 数依赖,记作
解决方法
继续模式分解
如上例中的模式可分解为3NF
SC(SNO, CNO, G); (SNO, CNO) G S-D(SNO, SDEPT); SNO SDEPT D-L(SDEPT, SLOC); SDEPT SLOC
SNO
G
CNO
SNO SDEPT
SDEPT SLOC
分解说明
一个2NF,但非3NF的关系总是可以被分解成为 一组3NF的关系。
冗余太大:系名、负责人姓名重复存储 “包罗万象”的关系模式并不好!
原因:数据依赖存在一些不合适的性质,需寻找更好 的模式,一个好的模式应具备以下四个条件: