第5章关系模式的规范化设计
数据库技术及应用课程第5章教案

思考与创新
(1)结合大作业的逻辑设计部分,判断自己设计的关系模式是否满足规范化理论要求。
(2)如果不满足,要求设计出规范化理论要求的关系模式。
课后习题
讨论:选出两个数据库设计大作业(优劣对比),并分别对其关系模式设计部分进行模式求精。
教学小结
(1)一个“好”的关系模式应该是:
数据冗余应尽可能少。
不发生插入异常、删除异常、更新异常等问题。
模式分解时,分解后的模式应具有无损连接和保持依赖等特性。
(2)函数依赖是关系模式中属性之间存在的一种约束关系。
思考与创新
(1)结合大作业的逻辑设计部分,判断自己设计的关系模式是否存在大量数据冗余问题和分解不正确而带来的有损连接或不保持依赖关系的问题。
使学生会”用”数据库,具有较强的数据库设计、数据库系统管理和应用开发能力,能够灵活运用数据库技术解决实际应用问题,并能够成为数据库设计员。
教学内容
(1)规范化理论:1NF、2NF、BNCF范式、3NF基本概念。
(2)模式分解算法:BCNF分解算法和3NF分解算法。
(3)数据库模式求精:运用关系理论对已有关系模式进行结构调整、分解、合并和优化,以满足应用系统的功能及性能等需求。基于函数依赖理论的模式求精步骤为:①确定函数依赖;②确定模式所属范式;③分析是否满足应用需求;④模式分解;⑤模式合并。
第1讲问题及函数依赖理论
任课教师
刘爱红
单位
信息学院
上课地点
2501
教学目的
(1)掌握判断并设计一个好的关系模式的基本原则和方法。
(2)熟练掌握函数依赖理论。
第5章-关系数据库规范化理论-复习题

对于某个床位在某个时间是由特定的住客入住的: (客 ,床 房 ,位 住 号 号 宿 ( 日 住 期 ,客 预 ) ,身 付 退份 款 房证 日
根据上述函数依赖,可以求得关系模式的候选键为: (客房号,床位号,住宿日期)
2021/5/23
7
关系模式收费中: 主属性:客房号,床位号,住宿日期 非主属性:住客身份证号,住客姓名,性别,地址,收费标准, 退房日期,预付款。 根据关系模式存在的函数依赖有非主属性收费标准为候选键部分 依赖关系,所以关系模式最高直达到第一范式。如何将关系模式 进行分解使其达到第二范式。 收费标准(客房号,床位号,收费标准) 住宿(客房号,床位号,住宿日期,住客身份证,住客姓名, 性别,地址,退房日期)
解:关系R存在的函数依赖有
(商店编号,商) 品 编 部号 门编号
(商店编号,部) 门 编 负号 责人
(商店编号,商) 品 编 数号 量
2021/5/23
4
利用函数依赖求候选键: L类属性:商店编号,商品编号;LR类:部门编号;R类:负责人 数量。而且(商店编号,商品编号)+=U,所以关系模式R的候 选键为(商店编号,商品编号)。 判断R属于第几范式: 非主属性为:部门编号,负责人,数量。它们对候选键都是完全函 数依赖关系,所以R是满足第二范式的。但是,
2021/5/23
3
3、假设某商业集团数据库有一关系模式R如下: R(商店编号,商品编号,数量,部门编号,负责人)
现规定:1、每个商店的每种商品只在一个部门销售。 2、每个商店的每个部门只有一个负责人。 3、每个商店的每种商品只有一个库存数量。
回答下列问题:1、写出R的基本函数依赖 2、找出关系模式R的候选键 3、关系模式R最高达到第几范式?为什么
5第五章第4讲关系模式的规范化

5第五章第4讲关系模式的规范化关系模式的规范化是数据库设计中的一个重要概念,它通过一系列规则和规范化原则,使得关系模式能够更加合理、高效地组织和管理数据。
规范化的目的是消除冗余和数据依赖,以避免数据异常和不一致的情况发生。
本文将介绍关系模式规范化的基本概念、规则和原则,并讨论规范化的实际应用。
关系模式规范化的基本概念是:在关系数据库中,每个关系模式都应该经过规范化,以达到最佳的数据结构和数据组织方式。
规范化是一个多阶段的过程,每个阶段都有特定的规则和原则。
第一范式(1NF)是最基本的规范化原则。
它要求每个关系模式的属性都是原子性的,即不可再分的。
这意味着属性的值不可以是集合、数组或多值的。
如果一个属性的值可以被分解为更小的数据项,则需要拆分为多个属性,使得每个属性都是原子的。
第二范式(2NF)要求在满足1NF的基础上,消除非主属性对码的部分函数依赖。
函数依赖指的是当一个属性的值确定之后,另一个属性的值也能确定。
如果一个属性只依赖于码中的一部分属性,而不是整个码,那么它就存在部分函数依赖,需要拆分为多个关系模式,以消除这种依赖。
第三范式(3NF)要求在满足2NF的基础上,消除非主属性对互相之间的传递依赖。
传递依赖指的是当一个属性的值确定之后,其他非主属性的值也能确定。
如果一个非主属性依赖于另一个非主属性,而不是直接依赖于码,那么它就存在传递依赖,需要拆分为多个关系模式,以消除这种依赖。
此外,还有更高级的规范化形式,如BCNF(巴斯-科德范式)和第四范式。
BCNF要求在满足3NF的基础上,消除所有非主属性对码的冗余依赖。
第四范式则要求在满足BCNF的基础上,消除多值依赖和联合依赖。
这些规范化原则和规则都是为了最大程度地消除数据冗余和依赖问题,并提高数据库的性能和数据完整性。
关系模式规范化在实际应用中有着广泛的应用。
首先,在数据库设计阶段就应该考虑规范化原则,选择合适的属性和关系模式,避免冗余和依赖问题。
大学计算机教程第六版 第5章数据库技术应用

3.连接运算(Join简记为JN)
连接是从关系R与S的笛卡尔积中,选取R的第i 个属性值和S的第j个属性值之间满足一定条件表达 式,构成关系子集。
关系R与T作θ连接。如表5.13和表5.14所示。
5.6.1 数据库设计理论的应用 数据库数据相关性称为数据依赖。数据依赖主
要分为内在关系的函数依赖(简记FD)和多值依赖 (简记MVD)。
把关系看成一个集合,集合运算如并、交、差、 笛卡尔积等运算,均可用到关系运算中。
设有三个关系实例R、S和T,如表5.6所示。
关系R和S的并是由属于R或S或同时属于R和S的 元组组成的集合,记为R∪S,如表5.7所示。
2. 差运算(Difference)
关系R和S的差是由属于R而不属于S的所有元组 组成的集合,记为R-S,如表5.8所示。
3. 交运算(Intersection)
关系R和S交是由同时属于R和S的元组组成的集 合,记为R∩S,如表5.9所示。
4. 笛卡尔积
关系R和S的笛卡尔积R×S的结果如表5.10所 示。
1.选择运算(Selection 简记为SL)
选择条件用F表示,在关系R中挑选满足条件F的 所有元组,组成一个新的关系,这个关系是关系R 的一个子集,记为:
设D1,D2,…Dn为n个集合,称D1×D2×…×Dn={(d1, d2, …dn)∈Di,(i=1,2, …n)}为集合D1,D2,…Dn 的笛卡尔积。
其中,Di(i=1,2,…n)可能有相同的,称它们为域, 域是值的集合。
笛卡尔积可表示为一个二维表。如果给出三个域:
D1={王欣,刘伟平} D2={张德君,李波} D3={网络技术应用,数据库原理} 则D1,D2,D3的笛卡尔积为D1×D2×D3={ (王欣,张德君,网络技术应用),(王欣,张德君,数据库原理), (王欣,李波,网络技术应用),(王欣,李波,数据库原理),(刘 伟平,张德君,网络技术应用),(刘伟平,张德君,数据库原理), (刘伟平,李波,网络技术应用),(刘伟平,李波,数据库原理)}
数据库原理第五章关系数据库的规范化设计

12
模式分解是关系规范化的 主要方法(二)
与TDC相比,分解为三个关系模式后,数据的冗余度明显 降低。 当新插入一个系时,只要在关系D中添加一条记录。 当某个教师尚未讲课,只要在关系T中添加一条教师记录, 而与TC授课关系无关,这就避免了插入异常。 当某个系的教师不再讲课时,只需在TC中删除该教师的 全部授课记录,而关系D中有关该系的信息仍然保留,从 而不会引起删除异常。 同时,由于数据冗余度的降低,数据没有重复存储,也不 会引起更新异常。
24
2.2 完全函数依赖和部分函数依赖
例如:学生成绩表中
姓名 王一 王二 王三 王一
学号 1 2 3 4
年龄 16 15 16 16
籍贯 河北 山东 北京 天津
姓名不能推出年龄,学号也不能推出年龄,但是 姓名 + 学号能推出年龄,故完全依赖;
学号能直接推出籍贯,故是部分依赖
25
2.3 传递函数依赖
当关系中的元组增加、删除或更新后都不能被破 坏这种函数依赖。因此,必须根据语义来确定属 性之间的函数依赖,而不能单凭某一时刻关系中 的实际数据值来判断。
20
函数依赖的定义和性质(六)
函数依赖可以保证关系分解的无损连接性
设R(X,Y,Z),X,Y,Z为不相交的属性集合,如果X Y或X Z,则有R(X,Y,Z)=R[X,Y]*R[X,Z],其中,R[X,Y]表示关 系R在属性(X,Y)上的投影,即 R等于其投影在X上的自然连 接,这样便保证了关系R分解后不会丢失原有的信息,称为 关系分解的无损连接性
关系数据库设计理论

五、FD的推理规则
从已知的FD集推导未知的FD,可以使用的推导规则 (Armstrong) 设有关系模式R(U),X、Y、Z是U的子集: A1(自反性):如果 Y X ,则有 XY 在R上成立。 A2(增广性):如果 XY 在R上成立,那么有 XZYZ A3(传递性):如果 XY和 YZ在R上成立,则有 XZ
S# -> SNAME C# -> TNAME (S#,C#) ->GRADE
三、属性间的联系和函数依赖 属性间的联系有三种,但并不是每一种关系中都存在函数 依赖,设有属性集X、Y属于关系模式R,
如果X和Y之间是‘1-1’关系,则存在函数依赖:
X YY, X
如果X和Y之间是‘1-M’关系,则存在函数依赖:
第五章 关系数据库设计理论
5.1 问题的提出-什么是不好的数据库设计
实际问题,假定在设计数据库时出现如下的关系模式: Student(Sno, Sname, Dept,Cno, Grade) 学生(学号,姓名,院系,课程号,成绩)
Sno Sname Dept Cno Grade
1000 李平 计算机 001
FD的分类: 1、对于FD:XY ,如果 Y X ,则称为“平凡的FD” 2、对于FD:XY ,如果 YX ,则称为“非平凡的FD” 3、对于FD:XY ,如果 YXφ则为“完全非平凡的FD”
Armstrong的推论: 1、合并规则: 由 XYX,Z可以 得 YZ 到X 2、分解规则: 由 XYZ可以 得 YX, 到 ZX 3、伪传递规则:由 XYY,WZ则得 到 Z XW
86
1000 李平 计算机 002
97
1000 李平 计算机 003
83
1001 王莉 计算机 001
第5章关系数据理论.ppt

2019/10/18
数据库系统
13
第五章 关系数据理论
(4)部分函数依赖: XY,但Y不完全函数依赖于X, 即存在X’ X,有X’Y。
记作 X p Y
如在 S(S#,SN,SD,SA)中,因为 S#SD, 所以 (S#,SN) p SD
又如:(Sno,Cno)→Sdept是部分函数依赖
(5)传递函数依赖:若XY,Y X,YZ, 且Z(XY)= ,则称Z对X是传递函数依赖。
职工关系(工号,姓名,工种,车间号) 车间关系(车间号,车间名,车间主任) 定额关系(工号,日期,定额,超额,车间号)
本节开头
2019/10/18
本章开头
数据库系统
下一节
7
第五章 关系数据理论
§2 数据依赖
数据模型中我们讨论了实体间的联系,同时提到实体内部 属性间也有联系。事实上上一节中的问题都是由于属性间的联 系引起的。
微分方程
高等代数 数学分析
这是产生问题的原因吗?
…… 数据库系统
17
第五章 关系数据理论
2、多值依赖(MultiValued Dependency,缩写为MVD)
设 R(U)是属性集U上的关系模式,X、Y、Z是U的子集,
且Z=UXY,多值依赖XY成立当且仅当对R(U)的任一关
系r,任给的一对(x,z)值有一组Y的值,这组值仅仅取决于
一方面,修改工作量大; 另一方面,可能漏改或该错,会造成数据的不一致性;
上例充分说明对关系模式若随意设计,其后果是严重的。 本章将要讨论产生上述问题的原因以及解决办法,即如何改 造一个不好的关系模式。这就是规范化理论要解决的主要问题。
2019/10/18
数据库系统
关系数据库规范化理论(05)

5.3 函数依赖
关系模式S(S# , SN , SD , DEAN , C# , G)
根据一般的事实,有: 一个系有若干学生,而一个学生只属于一个系;
一个系只有一名系主任;一个学生可以选修多门课 程,每门课程也可以由多个学生选修;每个学生的 每门课程都只有一个成绩。据此语义,可以得到一 组FD F
9
5.2 数据依赖
G
SNO
DN
CN
DM
关系的规范化理论就是用于改造关系模式,通过 分解关系模式来消除其中不合适的数据依赖,以 解决插入异常、删除异常、更新异常和数据冗余 问题。
10
5.3 函数依赖
函数依赖
设R(U)是属性集U上的关系模式,X , Y U, r是 R(U) 上的任意一个关系,如果成立
对t , s r,若t[X] = s[X],则t[Y] = s[Y] 那么称“X函数决定Y”,或“Y函数依赖于X”,记 作XY 称X为决定因素
如S# SN, (S#,C#) G
不存在t , s r,t[X] = s[X],但t[Y] ≠ s[Y]
11
5.3 函数依赖
A
B
C
D
a1
b1
c1
d1
a1
快速热身
关系模式R(A,B,C,D),码为AB,给出它的一个函数 依赖集,使得R属于2NF而不属于3NF
33
5.4 .4 BC范式(BCNF)
STC(S# , T# , C#)
每位老师只教授一门课
T# C#
某学生选定一门课,就对应一位老师
(S#,C#) T#
候选码
(S#,T#),(S#,C#)
28
5.4 .3 3NF
S# SN SD DEAN S01 杨明 D01 思齐 S02 李婉 D01 思齐 S03 刘海 D02 述圣 S04 安然 D02 述圣 S05 乐天 D03 省身
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关系模式的冗余和异常问题(1)
在数据库设计中,如果一个关系模式设计得不好,就会出现像文件系 统一样的数据冗余、异常、不一致等问题。
※ 例4.1 设有一个关系模式R(TNAME,ADDRESS, CNO,CNAME),其属性分别表示教师姓名、教师地 址、任教课程的编号和课程名。
关系模式R的实例
TNAME ADDRESS CNO
前言
※ 关系数据库的规范化设计是指面对一个现实问题,如 何选择一个比较好的关系模式集合,即应该构造几个 关系模式,每个关系由哪些属性组成。
※ 规范化设计理论主要包括三个方面的内容:
数据依赖(核心的作用) 范式 模式设计方法
※ 数据依赖研究数据之间的联系,范式是关系模式的标 准,模式设计方法是自动化设计的基础。规范化设计 理论对关系数据库结构的设计起着重要的作用。
第5章 关系模式的规范化设计
※ 问题提出 ※ 函数依赖 ※关系模式的分解 ※关系模式的范式
主要内容
本章重要概念
※ (1) 关系模式的冗余和异常问题。 ※ (2) FD的定义、逻辑蕴涵、闭包、推理规则、
与关键码的联系;平凡的FD;属性集的闭包; 推理规则的正确性和完备性;FD集的等价; 最小依赖集。 ※ (3) 无损分解的定义、性质、测试;保持依赖 集的分解。 ※ (4) 关系模式的范式:1NF,2NF,3NF, BCNF。分解成2NF、3NF模式集的算法。
还可以写出其他一些FD:
CNO→CNAME,TNAME,TAGE) TNAME→TAGE
注意:函数依赖不是指关系R的某个或某些关系满足的约束条件, 而是指R的一切关系均要满足的约束条件。
函数依赖的定义(3)
※ 对于函数依赖的定义注意以下三点: ※ ⑴ 函数依赖是一个基于关系模式(不是一个关系模式的
CNAME
t1
a1
c1
n1
t1
a1
c2
n2
t1
a1
c3
n3
t2
a2
c4
n4
t2
a2
c5
n2
t3
a3
c6
n4
关系模式的冗余和异常问题(2)
该模式出现的问题有: ※ (1) 数据冗余: 如果一个教师教几门课程,那么这个教师的地址就
要重复几次存储。 ※ (2) 操作异常: 由于数据的冗余,在对数据操作时会引起各种异常:
(a) 关系模式R1的实例
(b ) 关系模式R2的实例
TNAME ADDRESS
TNAME CNO CNAME
t1
a1
t2
a2
t3
a3
是否算最佳分解?
那末,什么样的关系 模式是最优的?标准 是什么?如何实现?
t1
c1
n1
t1
c2
n2
t1
c3
n3
t2
c4
n4
t2
c5
n2
t3
c6
n4
图4.2 关系模式分解的实例
特定实例)的函数概念,即如果一个关系模式R中存在函 数依赖X→Y,则要求该模式的所有具体关系都满足X→Y。 ※ ⑵ 函数依赖不取决于属性构成关系的方式(即关系结 构),而是关系所表达的信息本身的语义特性,我们只能 根据这种语义信息确定函数依赖,没有其他途径。 ※ ⑶ 函数依赖是数据库设计者对于关系模式的一种断言或 决策,即在设计关系型数据库时不仅要设计关系结构,而 且要定义数据依赖的条件,限制进入关系的所有元组都必 须符合所定义的条件,否则拒绝接受输入。
a3 b1 c4 d4
函数依赖只能根据语义来确定。如姓名→年龄只有在该 部门没有同名人的条件下是函数依赖。
ABCD a1 b1 c1 d1 a1 b2 c2 d2 a2 b2 c3 d3 a3 b2 c4 d4
函数依赖的定义(2)
例5.2 有一个关于学生选课、教师任课的关系模式:
R(SNO,SNAME,CNO,GRADE,CNAME,TNAME, TAGE)
主要内容
函数依赖的定义(1)
※函数依赖是属性间基本的一种依赖,它是 关键码概念的推广。
※定义5.1 设有关系模式R(U),X和Y是属性 集U的子集,若对于R(U)的任意一个可能的 关系r,r中不可能存在两个元组在X上的属 性值相等,而在Y上的属性值不等,则称X 函数确定Y或Y函数依赖(Functional Dependency,简记为FD)于X,记作 X→Y。
① 修改异常。例如教师t1教三门课程,在关系中就会有三个元组。 如果他的地址变了,这三个元组中的地址都要改变。若有一个元 组中的地址未更改,就会造成这个教师的地址不惟一,产生不一 致现象。
② 插入异常。如果一个教师刚调来,尚未分派教学任务,那么要 将教师的姓名和地址存储到关系中去时,在属性CNO和CNAME 上就没有值(空值)。在数据库技术中空值的语义是非常复杂的, 对带空值元组的检索和操作也十分麻烦。
属性分别表示学生学号、姓名、选修课程的课程号、成绩、课 程名、任课教师姓名和年龄等意义。
如果规定,每个学号只能有一个学生姓名,每个课程号只能决定 一门课程,那么可写成下列FD形式:
SNO→SNAME
CNO→CNAME
每个学生每学一门课程,有一个成绩,那么可写出下列FD:
(SNO,CNO)→GRADE
函数依赖的定义
※FD是对关系模式R的一切可能的关系r定义的。对 于r的任意两个元组,如果X值相同,则要求Y值 也相同,即对一个X值有唯一个Y值与之对应。该 定义类似于数学中的单值函数定义。
在图中,左边图有:A→B 右边图没有:A →B
ABCD a1 b1 c1 d1 a1 b1 c2 d2 a2 b2 c3 d3
本章的符号约定
※ 英文字母表首部的大写字母“A,B,C,D,…”表示单 个属性。
※ 英文字母表尾部的大写字母“…,U,V,W,X,Y,Z” 表示属性集。
※ 大写字母R表示关系模式,小写字母r表示其关系。 ※ 属性集{A1,A2, …,An}简记为A1A2 …An 。 ※ 属性集X和Y的并集X∪Y简记为XY。 X∪{A}简写为XA或
AX。
一般地,我们设计关系数据库模式时,要注意三方面的问题: ⑴ 必须从语义上摸清这些数据联系(实体联系和属性联系)。 ⑵ 尽可能的将互相依赖密切的属性构成单独模式。 ⑶ 切忌把依赖关系不密切、特别是具有“排它”性的属性硬凑到一起。
5.2 函数依赖
※函数依赖的定义 ※FD的逻辑蕴含 ※FD的推理规则 ※FD和关键码的联系 ※属性集的闭包 ※FD集的最小依赖集
③删除异常。如果在图4.1中要取消教师t3的教学任务,那么就要 把这个教师的元组删去,同时也把t3的地址信息从表中删去了。 这是一种不合适的现象。
关系模式的冗余和异常问题(3)
可以说,关系模式R不是一个好的模式。一个“好”的模式应当不会发生插入异常、 删除异常、更新异常,数据冗余应尽量少。
规范化原则:“关系模式有操作异常或冗余问题,就分解它。”