第 5章 关系数据库设计理论
? 一个数据库应用系统往往涉及到多方面的复杂的
数据信息。例如,在学生管理信息系统中,要涉
及到学生、院系、宿舍、课程、成绩等数据。再
例如,在产品销售数据库中设计到产品、类别、
仓库、销售单、销售明细单等数据。
? 如何将所涉及到的数据组织存入到数据库中?是
放在一个表中存放还是分放在几个表中存放?每
个表应由哪些属性组成?怎样设计才是科学合理
的呢?
? 解决之法是用 RDB设计理论:规范化理论
例如:产品报价数据库
第 5章 内容及要求
? 5.1 数据依赖 ( 数据依赖对关系模式的影响; 数据依赖
的概念, 包括函数依赖, 平凡函数依赖和非平凡函数依
赖, 完全函数依赖和部分函数依赖, 传递函数依赖, 码 )
? 5.2 范式理论 (范式, 2NF,3NF,BCNF,多值依赖, 4NF。
关系模式的规范化;各种范式小结和规范化步骤 。 )
? 5.3 关系模式的分解 ( 模式分解的准则;无损连接性;
保持函数依赖;模式分解的算法; )
? 5.4 小结
? 5.5 习题
5.1 数据依赖
? 数据依赖在关系模式中广泛存在, 影响巨大 。
? 恰当的数据依赖是必要的 。 但不必要的数据
依赖会对关系模式产生不好的影响 。
? 进行数据库设计时要深入分析数据间的依赖 。
? 本节主要介绍关系模式中的数据依赖的相关
概念, 分析数据依赖对关系模式的影响 。
5.1 数据依赖
? 5.1.1 关系模式中的数据依赖
? 5.1.2 数据依赖分类
? 5.1.3 一个关系模式中的 函数依赖
? 5.1.4 函数依赖 对关系模式的影响
? 5.1.5 函数依赖的概念
? 5.1.6 平凡函数依赖和非平凡函数依赖
? 5.1.7 完全函数依赖和部分函数依赖
? 5.1.8 传递函数依赖、码
5.1.1 关系模式中的数据依赖
? 1,关系模式描述为:
R( U,D,DOM,F)
R为关系名。 U属性名集合。 D为属性组 U中属
性所来自的域。 DOM属性向域的映象的集合。
F为属性间数据的依赖关系集合。
? 2,数据依赖 F:限定组成关系的各元组必须满
足的完整性约束条件。如属性的取值范围;或
者属性值间的相互关联(即数据依赖)。
? 3,关系模式的简述为,R( U,F)
5.1.2 数据依赖分类
? 1,关系模式中的数据依赖有多种,比较重要的是函数依
赖、多值依赖、连接依赖。
? 2,函数依赖:关系模式中属性间的普遍存在函数依赖。
例,student(sno,sname,ssex,sage,sdept)
该关系模式中存在以下函数依赖:
Sno— >sname,Sno— > ssex,Sno— > sdept。
? 3,多值依赖,一门课由多个老师上,使用同一套参考书。
? 4,连接依赖,关系与关系间往往存在联系。
5.1.3 学校关系模式的函数依赖
sno cname grade
sdept Mname
? 如学校数据库模式:一个系有若干学生,一个学生只属
于一个系;一个系只有一个系主任;一个学生可以选修
多门课程,每门课程有若干同学选修;每个学生所学的
每门课程都有成绩。
? 假设学校数据库模式仅由一个表构成。
student( sno,sdept,mname,cname,grade)
? 各属性为学号,所在系,系主任名,课程名,成绩。
? 关系中存在的数据依赖为:
5.1.4 函数依赖对关系模式的影响
? 关系模式,student( sno,sdept,mname,cname,grade)
存在一些问题,
? 1,数据冗余太大。 sdept,mname,cname重复保存。
? 2,更新异常。
? 3,插入异常。
? 4,删除异常。
? 为什么会出现这些问题呢?
? 因为存在不合适的数据依赖!
5.1.5 函数依赖的概念
? 定义:设 R( U) 是一个关系模式, U是 R的属性集合, X,
Y是 U的子集 。 对于 R( U) 的任意一个可能的关系 r,如
果 r中不存在两个元组, 它们在 X上的属性相同, 而在 Y
上的属性不同, 则称, X函数确定 Y”或, Y函数依赖于
X“,记作 X?Y。
? 说明,
? ( 1) 对 R中所有关系实例而言;
? ( 2) 数据库设计者可作强制规定, 如姓名不能同名;
? ( 3) 如 X?Y,X称为决定属性集;
? ( 4) 如 X?Y,并且 Y?X 则记为 X??Y;
? ( 5) 若 Y不函数依赖于 X,记作 X—\—>Y。
5.1.6 平凡函数依赖和非平凡函数依赖
? 定义:在关系模式 R( U), U是 R的属性集合, X,Y是
U的子集, 如果 X?Y,但 Y不包含于 X,则称 X?Y是非
平凡函数依赖, 若 Y包含于 X,则称 X?Y是平凡函数依
赖 。
? 说明:
? ( 1) 对任一关系模式, 平凡函数依赖必然成立 。
? ( 2) 本接只讨论非平凡函数依赖 。
? ( 3) 非平凡函数依赖易产生问题 。
5.1.7 完全函数依赖和部分函数依赖
? 定义:在关系模式 R( U), U是 R的属性集合, X,Y是
U的子集 。 如果 X?Y,并且对于 X的任何一个真子集 X1,
都有 X1 ——|?Y,, 则称, Y完全函数依赖于 X”,记作
X?Y。 若 X?Y,但 Y不完全函数依赖于 X,则称 Y部分函
数依赖 X,记作 X—P?Y。
? 说明:
? ( 1) 部分函数依赖易产生问题 。
? ( 2) 完全函数依赖中, X为决定属性, Y为非决定属性 。
5.1.8 传递函数依赖,码
? 传递函数依赖定义:在关系模式 R( U), 如果 X?Y,
Y——>Z,且 Y不包含于 X,Y——\?X,则称, Z传递函数
依赖于 X”,记作 X——>>Z。
? 码定义:设 K为关系模式 R( U,F) 中的属性或属性组 。
若 K?U,则称 K是一个候选码 。 若关系模式 R有多个候
选码, 则选定其中的一个为主码 。
? 码, 候选码, 主码, 外部码 。
5.2 范式理论
? 范式:是指符合某一级别的关系模式的集合。
? 目前主要有 6种范式:
? 1NF>2NF>3NF>BCNF>4NF>5NF
? 6种范式的规范化程度依次增强,满足后一种。
范式的关系模式必然满足前一种范式。
? 本节主要讲述这六种范式的特点。
5.2 范式理论
? 5.2.1 1NF及存在的问题
? 5.2.2 2NF及存在的问题
? 5.2.3 3NF及存在的问题
? 5.2.4 BCNF及存在的问题
? 5.2.5 4NF及存在的问题
? 5.2.6 5NF
? 5.2.7 学校管理数据库分析
? 5.2.8 STC数据库分析
5.2.1 1NF及存在的问题
sno
cno
sdept
sloc
grade
? 1NF定义:如果一个关系模式 R的所有属性是不可分的基本
数据项,则 R∈ 1NF 。
? 满足 1NF的关系模式并不一定是一个好关系模式。
? SLC( sno,sdept,sloc,cno,grade) 主码为( sno,cno)。
? 该模式存在非主属性对码的部分函数依赖和传递函数依赖。
? 该模式中存在以下三个问题。 数据冗余太大;更新异常;
插入异常;删除异常。
5.2.1 1NF关系模式的分解
? 对 SLC( sno,sdept,sloc,cno,grade)分解,变为:
SL(sno,sdept,sloc)
SC(sno,cno,grade)
? 分解后,去掉了非主属性 sdept对码的部分函数依赖。
sno sno
sdept
sloc
sdept
sloc
5.2.2 2NF及存在的问题
? 定义:若关系模式 R∈ 1NF,并且每一个非主属性都完
全函数依赖于 R的码,则称 R ∈ 2NF。
? 即不存在非主属性对码的部分函数依赖。
? 如果码中只包含一个属性且属于 1NF,则 R必属于 2NF。
? SLC分解后的 SL和 SC关系模式都属于 2NF。分解后异常
情况减少。
? 但关系模式 SL(sno,sdept,sloc)仍 SL存在操作异常:冗余
大,更新异常,插入异常,删除异常的情况。
? 其原因是还存在 sloc对 sno的传递函数依赖
5.2.2 2NF的分解
? 对 SL( sno,sdept,sloc) 作进一步的分解, 去掉 sloc对
sno传递依赖:
? SD( sno,sdept) DL( sdept,sloc)
? 这时, SD和 DL的函数依赖是正常的 。
? 分解后在一定程度上解决了:数据冗余大, 更新异常,
插入异常, 删除异常的情况 。
sno
sdept
sloc
sno sdept
slocsdept
5.2.3 3NF及存在的问题
? 定义:若关系模式 R<U,F>中不存在候选码 X,
属性组 Y,以及非主属性 Z( Z不包含于 Y), 使
得 X?Y,Y?Z和 Y—\?X成立, 则 R∈ 3NF。
? 若 R∈ 3NF,则 R的每一个非主属性既不部分函数
依赖于候选码, 也不传递函数依赖于候选码 。
? SD( sno,sdept), DL( sdept,sloc) 属于 3NF。
? 但 3NF并不一定就是一个好的关系模式 。 它并不
能完全消除异常情况和数据冗余 。
5.2.3 3NF的问题及分解
? 例,STJ( S,T,J) S表示学生,T表示教师,J表示课
程。假若每一教师只教一门课,每门课有若干教师教,
某一学生选定的某门课就确定了一个固定的教师。
? STJ中存在两个候选码( S,J)和( S,T),它存在以
下数据依赖:( S,J) ?T,( S,T) ?J,T?J。
? 即 STJ中存在 主属性 J部分依赖于码( S,T) 。
? 该模式仍存在以下情况,数据冗余太大。更新异常。
插入异常。删除异常。
? 对 STJ分解,变为,ST( S,T),TJ( T,J)
? 分解后,解决了上述几种异常情况。
5.2.4 BCNF
? 定义:若关系模式 R<U,F> ∈ 1NF,如果对于 R
的每个函数依赖 X?Y,若 Y不包含于 X,则 X必含
有候选码 。 那么 R∈BCNF 。
? 即在关系模式 R<U,F>中, 如果 每个决定属性都
包含候选码, 则 R ∈BCNF 。
? 即在 3NF的基础上,消除了主属性对码的部分依
赖和传递依赖,所在属性都不部分依赖或传递依
赖于码 。
5.2.4 BCNF三个性质
? BCNF具有三个性质,
? ( 1)所有非主属性都完全函数依赖于每个候
选码。
? ( 2)所有主属性都完全函数依赖于每个不包
含它的候选码。
? ( 3)没有任何属性完全函数依赖于非码的任
何一组属性。
? 如果 R中只有一个候选码,如 R ∈3NF,则必 R
∈BCNF 。
5.2.4 3NF?BCNF小结
? 3NF和 BCNF是以函数依赖为基础的关系模式规
范化程度的测度。
? 如果一个关系数据库中的所有关系模式都属于
BCNF,那么在函数依赖依赖范畴内,它已实
现了模式的彻底分解,达到了最高的规范化程
度。
5.2.5 一个存在多值依赖的关系模式
? 关系模式, TEACH(C,T,B),C表示课程,T
表示教师,B表示参考书。假设某一门课由
多个教师讲授,一门课使用相同的一套参
考书。
? 关系模式存在以下依赖:
? 数学 ?[邓海,陈红 ]?[高数,数学分析,微分
方程 ]
? 物理 ?[李东,张强,刘明 ] ?[普通物理学,光
学 ]
? 该关系模式码为( C,T,B),为全码。满
足 BCNF,但仍存在四种异常。
? 为什么呢?
课程
C
教师
T
参考书 B
数学 邓海 高数
数学 邓海 数学分析
数学 邓海 微分方程
数学 陈红 高数
数学 陈红 数学分析
数学 陈红 微分方程
物理 李东 普通物理
物理 李东 光学
… … …
5.2.5 多值依靠定义一
? 定义:设 R( U)是一个属性集 U上的一个关系模
式,X,Y和 Z是 U的子集,并且 Z=U-X-Y,多值依
赖 X??Y成立当且仅当对 R的任一关系 r,r在( X,
Z)上的每个值对应一组 Y的值,这组值仅仅决定
于 X值而与 Z值无关。
? 若 X??Y,而 Z=Ф (表示空集),则 X??Y为
平凡的多值依赖。否则称 X??Y为非平凡的多值
依赖。
5.2.5 多值依靠定义二
? 多值依赖另一定义:在关系模式 R( U)的任一关
系中,如果对于任意两个元组 t,s,有 t[X]=s[X],
就必存在元组 w,v∈r(w 和 v可以与 s和 t相同 ),使
得 w[X]=v[X]=t[X],而
w[Y]=t[Y],w[Z]=s[Z],v[Y]=s[Y],v[Z]=t[Z],即
交换 s,t元组的 Y值所得的两个新元组必在 r中,
则称 Y多值依赖于 X,记为 X??Y。其中,X和 Y是
U的子集,Z=U-X-Y。
5.2.5 多值依赖具有下列性质
( 1)对称性。即 X??Y,则 X??Z,其中 Z=U-X-Y。
( 2)传递性。即 X??Y,Y??Z,则 X??Z 。
( 3)函数依赖可以看作是多值依赖的特殊情况。
( 4)若 X??Y,X??Z,则 X??YZ 。
( 5)若 X??Y,X??Z,则 X??Y∩ Z 。
( 6)若 X??Y,X??Z,则 X??Y-Z,X??Z-Y 。
( 7)多值依赖的有效性与属性集的范围有关。
( 8)若多值依赖 X??Y在 R( U)上成立,对于 Y‘包含于
Y,并不一定 X??Y’成立,但是如果函数依赖 X?Y在 R
( U)上成立,对于任何 Y‘包含于 Y,必定 X?Y’成立。
5.2.5 多值依赖与 4NF
? 对 TEACH( C,T,B)处理,去掉多值依赖。
? 分解两个关系模式:
? CT( C,T) ∈ 4NF
? CB( C,B) ∈ 4NF
? 4NF定义,关系模式 R( U,F) ∈ 1NF,如果对
于 R的每个非平凡多值依赖 X??Y(Y不包含于
X),X都含有候选码,则 R ∈ 4NF 。
5.2.6 连接依赖
? 分解是关系规范化的主要手段,连接依赖是有关分解和
自然连接的理论,5NF是有关如何消除子关系的插入异
常和删除异常。
? 连接依赖:设 R( U)是属性集 U上的关系模式,X1,
X2,…Xn是 U的子集,且 U=X1∪ X2 ∪ … ∪ Xn,如 R等
于 R( X1),R( X2),…R( Xn)的自然连接,则称 R
在 X1,X2,…Xn上具有 n目连接依赖。记作,
∞[X1][X2]…[Xn]。
5.2.6 连接依赖和 5NF
? 5NF定义:如果关系模式 R中的每一个连接依
赖均由 R的候选码所隐含,则称 R∈ 5NF。
? 说明:
? ( 1)即指连接时所连接的属性均为候选码。
? ( 2)多表间的连接应满足 5NF较好。
5.2.7学校管理数据库分析
SNO CN G DN DM
S1 C1 A CS ZHANG
S1 C2 A CS ZHANG
S1 C4 A CS ZHANG
S1 C5 B CS ZHANG
S2 C2 B CS ZHANG
S2 C3 A CS ZHANG
S2 C4 B CS ZHANG
S3 C1 B MA WANG
S3 C2 C MA WANG
S3 C3 A MA WANG
S4 C1 A EL LI
S4 C2 B EL LI
S4 C3 C EL LI
S5 C2 B IS ZHAO
S5 C3 C IS ZHAO
S5 C4 A IS ZHAO
SNO DN
S1 CS
S2 CS
S3 MA
S4 EL
S5 IS
SNO CN G
S1 C1 A
S1 C2 A
S1 C4 A
S1 C5 B
S2 C2 B
S2 C3 A
S2 C4 B
S3 C1 B
S3 C2 C
S3 C3 A
S4 C1 A
S4 C2 B
S4 C3 C
S5 C2 B
S5 C3 C
S5 C4 A
DN DM
CS ZHANG
MA WANG
EL LI
IS ZHAO
UN SC
D
S
5.2.7 学校管理数据库的函数依赖
G SNO
CN
DN
DM
5.2.7 函数依赖的变换
SNO
CN
G
SC:
SNO DN
DN DM
SD:
D:
G SNO
CN
DN
DMUN:
f
p
p
t
DN
DM
SNO
SD:
t
5.2.8 STC数据库分析
Student Course Teacher
S1
S1
S2
S2
Physics
Maths
Maths
Physics
Zhao
Qian
Sun
Li
实例:
S
C T
S
T C
函数依赖:
S T
T C
ST:
TC:
5.3 关系模式的规范化
? 基本思想是逐步消除数据领带中不合适的部
分, 使模式中的各关系模式达到某种程度的
,分解,, 即采用, 一事一地, 的模式设计
原则, 让一个关系描述一个概念, 一个实体
或者实体间的一种联系 。
? 即, 概念单一化, 。
5.3 关系模式的规范化
? 5.3.1 规范化步骤
? 5.3.2 关系模式的分解的准则
? 5.3.3 一个关系模式分解的探讨
? 5.3.4 无损连接性
? 5.3.5 保持函数依赖
? 5.3.6 学生成绩登记表分析
5.3.1 规范化步骤
1NF
2NF
3NF
BCNF
4NF
5NF
消除非主属性对码的部分函数依赖
消除非主属性对码的传递函数依赖
消除主属性对码的部分和传递函数依赖
消除多值依赖
消除连接依赖
消除决定属性集非
码 非平凡 函数依赖
5.3.2 关系模式的分解的准则
? 要保证分解后的关系模式与原关系模式等价 。
有三种标准:
? ( 1) 分解具有无损连接性 。
? ( 2) 分解要保持函数依赖 。
? ( 3) 分解既要保持函数依赖, 又解要保持无
损连接性 。
5.3.3 一个关系模式分解的探讨
? 关系模式,SL( sno,sdept,sloc)
? 分解方法有:
? 方法一,SN( sno),SD(sdept),SO( sloc)
丢失了很多有用的信息, 分解不能保持函数依赖, 不
具有无损连接性 。
? 方法二,NL( sno,sloc), DL( sdept,sloc)
分解能保持函数依赖, 但不具有无损连接性 。
? 方法三,ND(sno,sdept),NL( sno,sloc)
分解具有无损连接性, 但不能保持函数依赖 。
? 方法四,ND(sno,sdept),DL( sdept,sloc)
分解既能保持函数依赖, 又具有无损连接性 。
5.3.4 无损连接性
? 设关系模式 R( U,F) 被分解为若干个关系模式 R1( U1,
F1), R2( U2,F2) …..Rn( Un,Fn), ( 其中
U=U1∪ U2……∪ Un,且不存在 Ui包含于 Uj中, Ri为 F在
Ui上的投影 ), 若 R与 R1,R2..…Rn自然连接的结果相等,
则称关系模式 R的分解具有无损连接性 。
? 只有具有无损连接性的分解才能保证不丢失信息 。
? 例如方法三,ND(sno,sdept),NL( sno,sloc)
? 分解具有无损连接性, 但不能保持函数依赖 。
5.3.5 保持函数依赖
? 设关系模式 R( U,F) 被分解为若干个关系模式
R1( U1,F1), R2( U2,F2) …..Rn( Un,
Fn), ( 其中 U=U1∪ U2……∪ Un,且不存在 Ui不
包含于 Uj中, Ri为 F在 Ui上的投影 ), 若 F所逻辑
蕴含的函数依赖一定也由分解得到的某个关系模
式中的函数依赖 Fi所逻辑蕴含, 则称关系模式 R
的分解具有保持函数依赖 。
? 方法四,ND(sno,sdept),DL( sdept,sloc)
分解既能保持函数依赖, 又具有无损连接性 。
5.3.6 学生成绩登记表分析

号 姓名






课程成绩







分 教师 师号 成绩
S1
S2
张三
李四


CS
CS
98
99
C1
C2
C3
C4
C5
C1
DB
DS
OS
MA
PH
DB
60
60
80
120
90
60
3
3
4
6
5
3






M1
M9
M4
M7
M2
M1
90
70
85
90
75
86
? 如何对该关系模式进行分解呢?
5.4 小结
? 优秀的 DB设计是 DBS应用成功的基石 。 RDB逻辑设计
以 RDB规范化理论为指导 。
? 不合理数据依赖会产生冗余度大, 插入修改删除异常 。
数据依赖分函数依赖, 多值依赖和连接依赖 。 规范化就
是消除关系模式中存在的不合适的数据依赖 。
? 1NF→ 2NF消除非主属性对侯选 码 的部分函数依赖
? 2NF→ 3NF消除非主属性对侯选 码 的传递函数依赖
? 3NF→ BCNF消除主属性对侯选 码 的部分和传递函数依赖
? BCNF→ 4NF消除非平凡且平函数依赖的多值依赖
? 4NF→ 5NF消除不是有候选码所蕴含的连接依赖
? 规范化 须遵守两准则:无损联接 性和 保持函数依赖 。
5.5 习题一
? 5.1名词解释:数据依赖, 函数依赖, 平凡函数依赖, 非
平凡函数依赖, 传递函数依赖, 多值依赖, 连接依赖,
1NF,2NF,3NF,BCNF,4NF,5NF,码, 无损联接性, 无
损联接性
? 5.2关系模式 R(U,F),U={Sno,Sname Dname,Dmanager,
Cname,Grade}各属性分别表示学号, 系名, 系主任名,
课程名和分数, 请分析存在的数据依赖 。 F={Sno→Sname,
Sno→Dname, Dname→Dmanager, (Sno,Cname)→Grade}
? 5.3分析下面关系模式中的函数依赖,Student(Sno,
Sname,Grade,Class,Bh,Bplace,Sex)
5.5 习题二
? 5.4 学生管理的情况:一个系有若干名学生,
一个学生只属于一个系, 一个系只有一名系主
任, 一个学生可以选修多门课程, 一门课程可
由多名学生选修, 每个学生学了每门课程有一
个成绩, 请设计一个数据库模式 。
? 5.5分析 SCT( SNO,CNO,CNAME,GRADE,TNAME,
BDATE,SALARY) 存在的问题, 如何进行规范化?
5.5 习题三
5.6 现有一个未规范化的表,包含了项目、部件和部件向项目
已提供的数量信息。请采用规范化方法,将该表规范化到 3NF。
部件号 部件名 现有数量 项目代号 项目内容 项目负责人 已提供 数量
205 CAM 30 12 AAA 01 1020 BBB 02 15
210 COG 155
12 AAA 01 30
25 CCC 11 25
30 DDD 12 15