第七章 关系数据库设计理论

32
第第第 第第第第第第第第第

description

第七章 关系数据库设计理论. 关系数据库的规范化设计是指面对一个应用问题 , 如何选择一个比较好的关系模式集合。. 研究数据间自然联系与约束. 数据依赖. 规范化设计理论. 范式. 范式是关系模式的标准. 模式设计方法. 是自动化设计的基础. R ( U , D , dom() , F ). 数据依赖. 属性到域上的映射关系. 关系的域. 属性集. 关系名. 关系的内涵称为关系模式。它是静态的,与时间无关。 关系模式 通常简记为: R (U , F) 。. 关系模式设计引论. 在某校信息管理系统中要建立一个数据库来描述学生和选课 - PowerPoint PPT Presentation

Transcript of 第七章 关系数据库设计理论

Page 1: 第七章  关系数据库设计理论

第七章 关系数据库设计理论

Page 2: 第七章  关系数据库设计理论

关系数据库的规范化设计是指面对一个应用问题 ,如何选择一个比较好的关系模式集合。

规范化设计理论

数据依赖

范式

模式设计方法

研究数据间自然联系与约束

范式是关系模式的标准

是自动化设计的基础

Page 3: 第七章  关系数据库设计理论

数据依赖属性到域上的映射关系

关系的域属性集

R ( U , D , dom() , F )

关系名

关系的内涵称为关系模式。它是静态的,与时间无关。关系模式通常简记为: R (U , F) 。

Page 4: 第七章  关系数据库设计理论

关系模式设计引论

在某校信息管理系统中要建立一个数据库来描述学生和选课的一些信息,面临的对象有:学号、姓名、系名、系主任、课号、成绩。 由已知事实可以得知上述对象之间有如下对应关系:

(l) 一个系有若干学生,但一个学生只属于一个系;(2) 一个系只有一名系主任;(3) 一个学生可选修多门课程,每门课程有若干学生选修;(4) 每个学生学习每一门课程有一个成绩。如何设计一个合理的关系数据库模式?

Page 5: 第七章  关系数据库设计理论

方案 1 :采用一个总的关系模式,将这些对象都放在 SA 中。 SA( 学号,姓名,系名,系主任,课号,成绩 )( 1 )数据冗余 每个班的系主任信息多次重复出现,导致数据冗余太大,既浪费存储空间,又容易造成数据的不一致性。( 2 )插入异常 插入异常指的是应该插入的信息不能正常插入,例如,新生刚入学,就无法把该系及相应系主任信息插入到数据库。( 3 )删除异常 删除异常指的是不该删除的信息被删除了,例如,当一个班的全部学生

毕业了,在删除该系学生信息时就会将该系及系主任信息也删除了。

Page 6: 第七章  关系数据库设计理论

结论:•该关系模式不是一个好的模式。•“ 好”的模式:不会发生插入异常、删除异常、更新

异常,数据冗余应尽可能少。原因:在该例中系主任属性不仅函数依赖于系名,而且还依

赖于学号。正是由于属性间约束关系太强才造成了上述异常现象。

解决方法:通过分解关系模式来消除其中不合适的依赖。•如:将 SA 分解为两个关系模式:• S( 学号,姓名,系名 ) 、 D( 系名,系主任 ) 、• SC( 学号,课号,成绩 )

Page 7: 第七章  关系数据库设计理论

由此可见:• 关系模型中用关系来描述实体及其联系 , 对同一现实世界

可用不同的关系模式来描述 , 但不同的关系模式的效果却有很大差异。

• 判断是否存在插入异常、删除异常和更新异常以及是否存在数据冗余是一种直观的判断一个关系模式设计质量的方法。

• 如何消除不合理的数据依赖,将一个“不好”的关系模式改造为一个“好”的关系模式,这就是关系数据库设计过程中要讨论的规范化理论问题。

Page 8: 第七章  关系数据库设计理论

函数依赖

关系模式通常简记为: R (U , F) ,其中 F 为数据依赖集,数据依赖是同一关系中属性间的相互依赖和相互制约。而规范化(Normalization) 是指定义一组关系模式应该符合条件 ( 范式 ).

数据依赖 多值依赖

函数依赖

连接依赖

Page 9: 第七章  关系数据库设计理论

1. 函数依赖 (Functional Dependencies ,简写为 FD)定义:设 R(U) 是一个属性集 U上的关系模式, X和 Y是U的子集。若对于 R(U) 的任意一个可能的关系 r , r 中不可能存在两个元组在 X上的属性值相等, 而在 Y上的属性值不等, 则称 “ X函数确定 Y函数” 或 “ Y函数依赖于 X函数” ,记作X→Y(读作X决定 Y)。 X称为这个函数依赖的决定因素。例 : Student(Sno, Sname, Ssex, Sage, Sdept) 假设不允许重名,则有 :

Sno → Ssex , Sno → Sage, Sno → Sdept , Sno → Sname, Sname → Sno , Sname → Ssex ,Sname → Sage, Sname → Sdept

Page 10: 第七章  关系数据库设计理论

 函数依赖的说明:函数依赖指 R 的所有关系实例均要满足的约束条件。 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。

例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立数据库设计者可以对现实世界作强制的规定。例如函数依赖“姓名→年龄”成立 , 则所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元组。

Page 11: 第七章  关系数据库设计理论

几种特殊的函数依赖:在关系模式R(U) 中,对于U的子集 X和 Y,

例:在关系 SC(Sno, Cno, Grade) 中, 非平凡函数依赖: (Sno, Cno) → Grade 平凡函数依赖: (Sno, Cno)→ Sno, (Sno, Cno)→ Cno

对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明, 我们总是讨论非平凡函数依赖。

① 若 X→Y ,但 Y X ,则称 X→Y 是非平凡的函数依赖② 若 X→Y ,但 Y X ,则称 X→Y 是平凡的函数依赖③ 若 X→Y ,并且 Y→X ,则记为 X←→Y 。 (X 与 Y 相互决

定 )④ 若 Y 不函数依赖于 X ,则记为 X→Y 。

Page 12: 第七章  关系数据库设计理论

⑤ 在关系模式 R(U) 中,如果 X→Y ,并且对于 X 的任何一个真子集 X’ ,都有 X’→Y ,则称 Y 完全函数依赖于 X ,记作 X F Y 。若 X→Y ,但 Y 不完全函数依赖于 X ,则称 Y 部分函数依赖于 X ,记作 X P Y 。

例 : 在关系 SC(Sno, Sname, Cno, Grade) 中, 由于: Sno → Grade , Cno → Grade , 因此: (Sno, Cno) F Grade

(Sno, Sname,Cno) P Grade

Page 13: 第七章  关系数据库设计理论

⑥ 在关系模式 R(U) 中,如果 X→Y , (Y X) , Y→X , Y→Z ,则有 X →Z ,称 Z 传递函数依赖于 X ,记为 :

X T Z 。

例 : 在 SA( 学号,姓名,系名,系主任,课号,成绩 ) 中,有: 学号 → 系名,系名 → 系主任,则学号 T 系主任

Page 14: 第七章  关系数据库设计理论

主码的两个性质: ① 决定性: K → U

②最小性: K’K ,使得 K’ → U

主属性 (Prime Attribute) :所有候选码中出现的属性。非主属性 (Nonprime Attribute) :不出现在任何候选码中的属性。全码 (All Key) :由关系模式的所有属性构成码。

定义:设 K 为关系模式 R<U,F> 中的属性或属性组。若 K F U ,则 K 称为 R 的一个候选码( Candidate Key )。若关系模式 R 有多个候选码,则选定其中的一个做为主码( Primary key )。

Page 15: 第七章  关系数据库设计理论

  范式 (Normal Form) 是满足一定要求的关系模式的集合。关系数据库中的关系必须满足一定的要求,依照要求的不同程度分为不同范式。1NF 如果一个关系模式 R 的所有属性都是不可分的基本数据项,则称关系 R 为第一范式的关系模式 (First Normal Form) ,简称

关系 R 属于一范式,记为: R 1NF∈ 。

• 第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。 ( 由关系属性的原子性得出 ) 。

• 但是满足第一范式的关系模式并不一定是一个好的关系模式。仍然存在数据冗余度大 、插入异常 、修改和删除异常。

范 式

Page 16: 第七章  关系数据库设计理论

2NF :若关系模式 R 1NF∈ ,并且每一个非主属性都完全函数依赖于 R 的码,则 R 2NF∈ 。例:对 SA( 学号,姓名,系名,系主任,课号,成绩 ) 进行分析,主码为 ( 学号,课号 ) , 学号 → 系名, ( 学号,课号 ) → 系名其不属于 2NF , 故对其分解

① S2( 学号 , 课号 , 成绩 )∈2NF ② S1( 学号,姓名,系名,系主任 )∈2NF

2NF 的关系模式存在的问题: (S1 不是一个好的关系模式 ) 数据冗余度大:若计算机班有 10 个学生,则该系学生的系主任值就要重复存储 10 次。

P

Page 17: 第七章  关系数据库设计理论

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

 说明: 3NF 是指不含非主属性对码的传递依赖的关系模式;每个非主属性对码的直接完全依赖。例: S1( 学号 , 姓名,系名,系主任 )) 2NF ∈

 学号 → 系名,系名 → 系主任,则学号 → 系主任 存在非主属性对码的传递依赖 , 不属于 3NF; 将关系模式 S1 分

解为: S2( 学号 , 姓名,系名 ) DEP( 系名,系主任 )

分解后的关系模式 S2 与 DEP 中不再存在传递依赖,二者都∈ 3NF 。

T

Page 18: 第七章  关系数据库设计理论

– 1NF 是指关系模式中的所有属性都满足原子性,是关系模式的最低要求。

– 2NF 是指关系模式中不存在非主属性 ( 组 ) 对码的部分依赖。– 3NF 是指关系模式中不存在非主属性 ( 组 ) 对码的传递依赖。– 范式间的包含关系: 3NF2NF1NF– 范式的级别越高,其存在的操作异常和数据冗余越小。– 解决操作异常和数据冗余的方法是通过关系模式的分解使其达到更高一级的范式。

– 分解实质为让每个关系只有一个主题;如一个关系有多个主题,就将其分解为多个关系,“一事一地”原则。

对比理解 1NF 、 2NF 、 3NF

Page 19: 第七章  关系数据库设计理论

结论:①BCNF3NF 。② 若 R∈BCNF ,则R 中所有非主属性对每一个码都完全直接函数依赖。 ( 由 2NF 、 3NF 定义得到 )

③ 若 R∈BCNF ,则R 中所有主属性对每个不包含它的码都完全函数依赖。

④ 若 R∈BCNF ,则R 中没有任何属性完全函数依赖于非码的任何一组属性。

BCNF :设关系模式 R<U , F>∈1NF ,如果对于 R 的每个函数依赖 X→Y (YX) , X 必包含码,则R∈BCNF(Boyce Codd Normal Form) ,又称修正 ( 或扩充 ) 的第三范式。

Page 20: 第七章  关系数据库设计理论

例:关系模式 SJP(S, J, P) 中, S 是学生, J 表示课程, P表示名次。每一学生选修每门课程的成绩都有一定名次,且名次不重复。

FD: (S, J) →P,   (J, P) →S

码: (S, J) , (J, P)

非主属性:无 ① 不存在非主属性对码的部分依赖 SJP 2NF∈ ② 不存在非主属性对码的传递依赖 SJP 3NF∈ ③ 每一个函数依赖的决定因素都包含码 S BCNF∈

Page 21: 第七章  关系数据库设计理论

例:在关系模式 STJ ( S , T , J )中, S 表示学生, T表示教师, J表示课程。每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称。

由语义得如下 FD :(S , J)→T , (S , T)→J , T→J

函数依赖图:

S

JT

S

TJ

STJ

码: (S , J) , (S , T)非主属性:无① 不存在非主属性对码的部分依赖

STJ ∈2NF② 不存在非主属性对码的传递依赖

STJ ∈3NF③ 存在函数依赖 T→J ,其中的决定

因素T 不包含码 STJ BCNF

Page 22: 第七章  关系数据库设计理论

不属于 BCNF 的关系模式存在的问题: STJ( S , T , J)

(1) 插入异常  学生未开始选修某门课程前,无法输入教师任课信息。

(2) 删除异常  删除学生选课信息,教师任课信息一并删除。(3) 数据冗余度大  同一教师的任课信息在多个学生选课的记录中重复存储。

  (4) 修改复杂  由冗余性决定。

Page 23: 第七章  关系数据库设计理论

多值依赖2 多值依赖 (Multivalued Dependencies ,简写为 MVD)

– 在关系模式 R(X,Y,Z) 的任一关系 r 中,如果对于 X 的一个确定值,都存在 Y 的一组值与之对应,且 Y 的这组值与 Z中属性值无关,则称 Y 多值依赖于 X ,记为 X→→Y 。 这里X 、 Y 、 Z 是 U 的子集,且 Z=U-X-Y 。即:

X Y Z

t x y1 z1s x y2 z2w x y1 z2v x y2 z1

Page 24: 第七章  关系数据库设计理论

– 特殊的多值依赖:  若 X→→Y ,而 Z = φ ,则称 X→→Y 为平凡的多值依赖,否则称 X→→Y 为非平凡的多值依赖。

– 多值依赖的性质:( 1 )多值依赖具有对称性

   若 X→→Y ,则 X→→Z ,其中 Z = U - X - Y 。( 2 )多值依赖具有传递性

   若 X→→Y , Y→→Z , 则 X→→Z –Y 。( 3 )函数依赖是多值依赖的特殊情况

   若 X→Y ,则 X→→Y 。(由 MVD 的定义得出)( 4 )若 X→→Y , X→→Z ,则 X→→Y Z

(由 MVD 定义得出, X→→Y Z 为平凡的 MVD )

Page 25: 第七章  关系数据库设计理论

( 5 )若 X→→Y , X→→Z ,则 X→→Y∩Z

( 6 )若 X→→Y , X→→Z ,则 X→→Y-Z , X→→Z -Y

– 多值依赖与函数依赖的区别(1) 有效性多值依赖的有效性与属性集的范围有关

• 若 X→→Y 在 U 上成立,则在 W ( X Y W U )上一定成立;反之则不然,即 X→→Y 在 W 上成立,在 U 上并不一定成立 .

• 多值依赖的定义中不仅涉及属性组 X 和 Y ,而且涉及 U 中其余属性 Z 。

Page 26: 第七章  关系数据库设计理论

(2) 包含性  若函数依赖 X→Y 在 R ( U )上成立,则对于任何 Y‘ Y 均有 X→Y’ 成立。  多值依赖 X→→Y 若在 R(U) 上成立,不能断言对于任何Y‘ Y 有 X→→Y’ 成立。

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

说明 : (1) 对于平凡的多值依赖, X 不可能成为码,应是全码;(2) 每个非平凡的函数依赖 X→→Y , X 又含有码,则 X→Y ;(3) 4NF 只允许平凡的多值依赖;(4) 所有含有非平凡 MVD 和 EMVD 都不是 4NF 。

Page 27: 第七章  关系数据库设计理论

例如,有关系模式 Teach(C,T,B) , C 表示课程, T 表示教师, B 表示参考书。假设该关系如图所示。

语言程序设计数据库原理信息管理学

李四张三

信息管理C

网络安全布线工程网络原理

刘军王成李明

计算机网络

图课程-教师-参考书之间的关系

Page 28: 第七章  关系数据库设计理论

该关系可用二维表表示如下:

课程( C) 教师( T) 参考书( B)

信息管理 张三 信息管理学

信息管理 张三 数据库原理

信息管理 张三 C 语言程序设计

信息管理 李四 信息管理学

信息管理 李四 数据库原理

信息管理 李四 C 语言程序设计

计算机网络 李明 网络原理

计算机网络 李明 布线工程

Page 29: 第七章  关系数据库设计理论

课程( C) 教师( T) 参考书( B)

计算机网络 李明 网络安全

计算机网络 王成 网络原理

计算机网络 王成 布线工程

计算机网络 王成 网络安全

计算机网络 刘军 网络原理

计算机网络 刘军 布线工程

计算机网络 刘军 网络安全

续表

Page 30: 第七章  关系数据库设计理论

Teach 具有惟一候选码 (C,T,B) ,即全码,因而 Teach∈BCNF 。但 Teach 模式中存在一些问题:

( 1 )数据冗余度大。( 2 )增加操作复杂。( 3 )删除操作复杂。( 4 )修改操作复杂。

Page 31: 第七章  关系数据库设计理论

规范化总结:关系数据库的规范化理论是数据库逻辑设计的工具。

– 一个关系只要其分量都是不可分的数据项,它就是规范化的关系,但这只是最基本的规范化。

– 规范化程度可以有多个不同的级别– 规范化程度过低的关系不一定能够很好地描述现实世

界,可能会存在插入异常、删除异常、修改复杂、数据冗余等问题

– 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化

Page 32: 第七章  关系数据库设计理论