关系范式规范化理论.ppt_第1页
关系范式规范化理论.ppt_第2页
关系范式规范化理论.ppt_第3页
关系范式规范化理论.ppt_第4页
关系范式规范化理论.ppt_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第三章 关系数据库规范化理论,2,1. 关系代数,概述 传统的集合运算 专门的关系运算,3,概述,1. 关系代数:,一种抽象的查询语言,用对关系的运算来表达查询,3. 关系代数运算的三个要素:,2. 运算的三要素:,运算对象,运算符,运算结果,4. 关系代数运算的分类:,运算对象关系,运算结果关系,运算符四类,传统的集合运算并、差、交、广义笛卡尔积 专门的关系运算选择、投影、连接、除,4,表1 关系代数运算符,5,1.1 关系代数,概 述 传统的集合运算 专门的关系运算,6,1. 并(Union),设关系 R 和 S: 具有相同的目 n(即两个关系都有 n 个属性) 相应的属性取自同一个域 则: 1)关系 R 和 S 的 并 记为: RS = t | t R t S 结果仍为 n 目关系,由 属于R 或者属于S 的元组组成,7,并(续),R,S,RS,8,2. 差(Difference),设关系 R 和 S: 具有相同的目 n(即两个关系都有 n 个属性) 相应的属性取自同一个域 则: 2)关系 R 和 S 的 差 记为: R - S = t | t R t S 结果仍为 n 目关系,由 属于R 而不属于S 的元组组成,9,差(续),R,S,R-S,10,3. 交(Intersection),设关系 R 和 S: 具有相同的目 n(即两个关系都有 n 个属性) 相应的属性取自同一个域 则: 3)关系 R 和 S 的 交 记为: RS = t | t R t S 用差表示:RS = R (R-S) 仍为n 目关系,由既属于 R 又属于 S 的元组组成,11,交 (续),R,S,R S,12,4. 广义笛卡尔积(Extended Cartesian Product),有2个关系 R 和 S,若 关系 R:n 目关系(有n个属性),有k1个元组 关系 S:m 目关系(有m个属性),有k2个元组 则: 关系R和S的广义笛卡尔积 记作: RS = tr ts | tr R ts S 共有 k1k2 个元组(行),每个元组有 nm 列: 前 n 列是关系 R 的一个元组 后 m 列是关系 S 的一个元组,13,广义笛卡尔积 (续),R,S,R S,14,1.2 专门的关系运算,概述 传统的集合运算 专门的关系运算,15,常用的几个记号,(1) R,tR,tAi 设关系模式为R(A1,A2,An),它的一个关系设为R。tR 表示 t 是 R 的一个元组,tAi 则表示元组 t 中相应于属性 Ai 的一个分量,关系R:学生(学号, 姓名,性别,院系 ) R的一个元组 t :(1001,李明,男,信息学院) tA1表示分量1001, tA2表示分量李明,16,常用的几个记号,(2) A,tA, A,若 A = Ai1, Ai2, , Aik,其中Ai1, Ai2, , Aik 是A1, A2, , An中的一部分,则A 称为 属性列 或 域列;,tA =( t Ai1, t Ai2, , t Aik)表示元组 t 在属性列 A 上诸分量的集合。,17,例如:,R的一个元组 t :(1001,李明,男,信息学院) tA =( 1001,李明),18,常用的几个记号,R 为 n 目关系,S 为 m 目关系, tr R,tsS, 称为元组的连接。,它是一个 n + m 列 的元组,前 n 个分量为 R 中的一个 n 元组,后 m 个分量为 S 中的一个 m 元组。(R 和 S 的广义笛卡尔积),19,R,S,20,1. 选择(Selection),选择:指的是 在关系R中选择满足给定条件的元组,记作: F (R) = t | tR F(t) = 真 这里,F 是逻辑表达式。 选择运算 实际上是 从关系 R 中选取使逻辑表达式 F 为真的元组。 是从行的角度进行的运算:,21,选择(续),举例 设有一个学生-课程数据库,包括: 学生关系 Student 课程关系 Course 选修关系 SC,22,选择(续),(a) Student,23,选择(续),(b) Course,24,选择(续),(c) SC,25,选择(续),例1 查询信息系(IS系)全体学生,Sdept = IS (Student) 或 5 =IS (Student) 结果:,26,选择(续),例2 查询年龄小于20岁的学生。, Sage 20 (Student) 或 4 20 (Student),结果:,27,2. 投影(Projection),投影: 从 R 中选择出若干 属性列 组成新的关系, A(R) = tA | t R A:R中的属性列 是从 列 的角度进行运算:,28,投影(续),即求 Student 关系在学生姓名和 所在系两个属性上的投影。,例3 查询 学生的 姓名 和 所在系:,结果:, Sname,Sdept (Student) 或 2,5 (Student),29,投影(续),例4 查询学生关系Student中都有哪些系。,结果:,Sdept(Student),即查询Student关系在所在系属性上的投影:,注意:投影结果中,取消重复的元组。,30,投影(续),例5 查询开设了哪些课程(课程名)。,即查询 Course 关系在课程名上的投影:,Cname (Course),31,3. 连接(Join),也称为连接,是从两个关系的笛卡尔积中选取属性间满足一定条件的元组,记作:,其中,A 和 B 分别为 R 和 S 上度数相等且可比的属性组,为比较运算符(四类),连接运算从 R 和 S 的广义笛卡尔积 RS 中选取 R 关系在 A 属性组上的值与 S 关系在 B 属性组上值 满足比较关系的元组。,32,连接的分类 等值连接,等值连接(equijoin) 是指为“”的连接运算 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:,33,连接的分类 自然连接,自然连接(Natural join) 是一种特殊的等值连接 要求两个关系中进行比较的分量必须是相同的属性组 并且在结果中把重复的属性列去掉 若 R 和 S 具有相同的属性组 B,则自然连接表示如下:,34,连接(续),关系R和关系S如下,R,S,35,连接(续),把满足条件“R中C 属性值 S中E属性值”的元组连接起来:,36,连接(续),把满足条件“R中B属性值 S中B属性值”的元组连接起来:,37,连接(续),由于 R 和 S 中有相同的属性组 B,自然连接 就是:把满足条件“R中 B 属性值 S 中 B 属性值”的元组连接起来,并且去掉一个重复的 B 属性组:,38,连接(续),由 例6 和 例7 中看出,一般的连接操作是从 行 的角度进行运算。,在例8中,自然连接还需要 取消重复列,所以是同时从行 和 列 的角度进行运算。,39,综合举例(续),例 9 查询选修了2号课程的学生的学号,1)在SC关系上把课程号Cno 2的元组找出来: Cno = 2 (SC),2)再求出其在学号Sno上的投影: Sno ( Cno=2 (SC),3)Sno(Cno=2(SC) 95001,95002,2. 关系数据理论,2.1 问题的提出 2.2 规范化,2.1 问题的提出,关系数据库的逻辑设计,针对具体问题,如何构造一个适合于它的数据模式,数据库逻辑设计的工具关系数据库的规范化理论,问题的提出,一、概念回顾 二、关系模式的形式化定义 三、关系模式的简化定义 四、什么是数据依赖 五、数据依赖对关系模式影响,一、概念回顾,关系:描述实体、属性、实体间的联系,实质上是一张二维表,由元组和属性列组成,关系是元组的集合。,关系模式:是对关系的结构上的描述,必须指出该关系由哪些属性列组成、这些属性列分别来自哪些域,属性和域之间的映象关系,以及要满足哪些完整性约束。,一、概念回顾,关系数据库:支持关系模型的数据库系统。,数据库模式:一个数据库中关系模式的全体集合就构成了该数据库的模式。,二、关系模式的形式化定义,一个关系模式由五部分组成,即是一个五元组: R(U, D, DOM, F),R: 关系名 U: 组成该关系的属性名集合 D: 属性组U中属性所来自的域 DOM:属性向域的映象集合 F: 属性间数据的依赖关系的集合,三、关系模式的简化表示,关系模式 R(U, D, DOM, F)可以简化为一个三元组:(由于3,4对于模式设计关系不大) R(U, F),当且仅当U上的一个关系r 满足 F 时,r 称为关系模式 R(U, F)的一个关系,四、什么是数据依赖,1. 完整性约束的表现形式有2种:,限定属性取值范围: 例如学生成绩必须在 0 - 100 之间,定义属性 值 间的相互关连,主要表现在属性值的相等与否,这就是数据依赖,它是数据库模式设计的关键,什么是数据依赖(续),2. 数据依赖 是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系 是现实世界属性间相互联系的抽象 是数据内在的性质 是语义的体现,什么是数据依赖(续),3. 数据依赖的类型,函数依赖(FD)(重点) 多值依赖(MVD) 其他,函数依赖,有一个学生关系: 学生(学号Sno,姓名Sname,系名Sdept),当 学号Sno 确定后,该学生的姓名Sname和系名Sdept 也就唯一的确定了,称为 Sno 函数决定 Sname 和 Sdept,或者说,Sname 和Sdept 函数依赖于Sno,记作:Sno Sname,Sno Sdept,类似于函数,自变量x确定后,函数值f(x)也确定了。,五、数据依赖对关系模式的影响,例:描述学校及其学生的数据库:,学生的学号(Sno)、所在系(Sdept) 系主任姓名(Mname)、课程名(Cname) 成绩(Grade),U Sno, Sdept, Mname, Cname, Grade ,三元组的关系模式 : S (U, F),数据依赖对关系模式的影响(续),由于该数据库中存在以下情况:, 一个系有若干学生, 一个学生只属于一个系 一个系只有一名主任(正主任) 一个学生可以选修多门课程, 每门课程有若干学生选修 每个学生所学的每门课程都有一个成绩。,数据依赖对关系模式的影响(续),得到属性组 U 上的一组函数依赖 F:,F Sno Sdept, Sdept Mname, (Sno, Cname) Grade ,关系模式S 中存在的问题,1. 数据冗余太大 在每个学生元组中,系主任姓名重复出现浪费大量存储空间,2. 插入异常 如果一个系刚成立尚无学生(没有Sno),就无法把这个系及其系主任的信息存入数据库,另外,如果某个系的系主任换人了,就要更改每个学生的元组,维护代价很大,3. 删除异常 如果某个系的学生全部毕业了,Sno将被全部删除,同时也把该系及系主任的资料删除了,数据依赖对关系模式的影响(续),结论:,关系模式 S 不是一个好的模式,因为某些属性之间存在着一些数据依赖关系,解决方法:通过分解关系模式来消除其中不合适 的数据依赖。,一个好的模式:不会发生插入异常、删除异常,数据冗余应尽可能少。,数据依赖对关系模式的影响(续),解决方法如下:,把关系模式 S 分解为3个关系模式:,S(Sno,Sdept,Sno Sdept);,SG(Sno,Cname,Grade,(Sno,Cname)Grade);,Dept(Sdept,Mname,SdeptMname),2.2 规范化,规范化理论 正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常,和数据冗余问题。,规范化:通过分析关系(关系模式)中存在的弱点,将该关系分解为若干个高一级的关系。,范式:关系规范化的程度称为范式,1NF,2NF,3NF,BCNF,2.3 函数依赖,一、函数依赖 二、平凡函数依赖与非平凡函数依赖 三、完全函数依赖与部分函数依赖 四、传递函数依赖,一、函数依赖,定义2.1 设R(U)是一个属性集U上的关系模式,X和Y是U的子集。 若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作 XY。,一、函数依赖,例如:学生(Sno,Sname,Sdept,Sage),由于在所有的元组中,Sno都是唯一的,因此,Sno函数确定Sname 和 Sdept。,如果规定Sname不能重复,那么在所有的元组中Sname也都是唯一的,可以说,Sname函数确定Sdept,或者说, Sdept函数依赖于Sname 记作: Sname Sdept,或者说, Sname 和 Sdept函数依赖于Sno,Sno Sname, Sno Sdept,几个术语和符号,如果 XY,则 X 叫做决定因素(Determinant),如果 XY , Y X ,则记作: X Y,如果Y不函数依赖于X,则记作: XY,二、平凡函数依赖与非平凡函数依赖,如果 XY,但 Y X,则称 XY 是非平凡的函数依赖,如果 XY,但 Y X, 则称 XY 是平凡的函数依赖,例:在关系 SC(Sno, Cno, Grade)中,,非平凡函数依赖:(Sno, Cno) Grade,平凡函数依赖: (Sno, Cno) Sno,(Sno, Cno) Cno,三、完全函数依赖与部分函数依赖,定义2.2 在关系模式 R(U)中,如果XY,并且对于 X 的任何一个真子集X,都有 X Y, 则称 Y 完全函数依赖于 X,记作: X F Y 若XY,但Y不完全函数依赖于X,则称 Y 部分函数依赖于X,记作: X P Y,三、完全函数依赖与部分函数依赖,例: 在关系 SC(Sno, Cno, Grade)中, 用X 表示(Sno, Cno),用Y 表示 Grade, 那么, (Sno, Cno) Grade 但是 Sno Grade,Cno Grade, 因此 (Sno, Cno) F Grade,四、传递函数依赖,定义2.3 在关系模式R(U)中,如果XY,YZ,且Y X,YX,则称 Z 传递函数依赖于X。 注: 如果YX, 即 XY,则称Z 直接函数依赖于X。 例: 在关系 Std(Sno, Sdept, Mname)中,有: Sno Sdept,Sdept Sno,Sdept Mname Mname 传递函数依赖于Sno,2.4 码,定义2.4 设 K 为关系模式 R中的属性或属性组合。若 K U,则 K 称为 R 的一个侯选码(Candidate Key)。若关系模式 R 有多个候选码,则选定其中的一个做为主码(Primary key)。 主属性与非主属性 全码(ALL KEY),外部码,定义2.5 关系模式 R 中的属性或属性组 X 不是R 的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码。,主码和外部码一起提供了表示关系间联系的手段,SC(Sno,Cno,Grade) Student(Sno,Sname,Sdept,Sage) Course(Cno,Cname,Cpno,Ccredit),2.5 范式,关系数据库中的关系必须满足一定的要求。 把满足不同程度要求的关系称为不同的范式。,范式的种类,2.5 范式,各种范式之间存在联系:,若某一关系模式 R 为第 n 范式,可简记为 R n NF 例:R 1 NF,R 3 NF,2.6 1NF的定义,1NF的定义 如果一个关系模式R 的所有属性都是不可再分的基本数据项,则 R1NF。,第一范式是对关系模式的最起码的要求。不满足第一范式的数据库不能称为关系数据库,但是满足第一范式的关系模式并不一定是一个好的关系模式。,例:SLC(Sno, Cno, Sdept, Sloc, Grade)1NF,2.6 1NF的定义,例:SLC(Sno, Sdept, Sloc, Cno, Grade)1NF 码为(Sno,Cno),函数依赖如下:,Sno Sdept (Sno, Cno) F Grade Sno Sloc (Sno, Cno) P Sdept Sno Sloc (Sno, Cno) P Sloc Sdept Sloc,2.6 1NF的定义,SLC(Sno, Cno, Sdept, Sloc, Grade)1NF,但其中存在很多问题:,1. 插入异常 一个新生刚报道,学号是 2004100,在信息系,住在 5楼,但是他还没有选课,即没有Cno 属性。由于码(Sno,Cno)不存在,就不能把该学生的信息插入数据库。,2. 删除异常 学生 2004101 只选了一门课 C1,现在又退选了,那么就要删除 C1 属性,由于C1是主属性,就必须把 C1 所在元组全部删除。因此,学生2004101的其他信息也被删除了。,2.6 1NF的定义,3. 修改复杂 学生 2004100 从信息系转到了数学系(MA),只需修改 Sdept 即可。但是,由于 SdeptSloc, 同时要修改 Sloc 属性,即将学生改变住处。 另外,如果该学生选了10门课,那么就要把这 10个元组中的 Sdept 和 Sloc 全部修改,使得修改操作复杂,而且容易出错。,因此 SLC(Sno, Sdept, Sloc, Cno, Grade)1NF 是不够的,必须进一步规范化。,2.6 2NF的定义,定义2.6 若关系模式 R1NF,并且每一个非主属性 都 完全函数依赖于 R 的码,则R2NF。,例:SLC(Sno, Cno, Sdept, Sloc, Grade)1NF,例:SLC(Sno, Cno, Sdept, Sloc, Grade) 2NF,因为:,非主属性 Sdept 部分依赖于码,模式分解,将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余,通过 模式分解,将一个低一级范式的关系模式转换为若干个高一级范式的关系模式的集合,这个过程称为 规范化。,将 SLC(Sno, Sdept, Sloc, Cno, Grade)分解:,2.7 第三范式 3NF,3NF的定义 定义2.7 关系模式 R 中若不存在这样的码X、属性组 Y 及非主属性 Z(Z Y), 使得XY(Y X),YZ,成立,则称 R 3NF,即:若R 1NF ,并且每个非主属性都不传递依赖于R的码,则R 3NF,若R 3NF ,则在 R 中不存在非主属性对码的传递依赖 和 部分函数依赖。,2.7 3NF,例, SL(Sno, Sdept, Sloc) 2NF 1)由于Sno Sdept,Sdept Sloc,即存在非主属性 Sloc 对码 Sno 的传递依赖,因此, SL(Sno, Sdept, Sloc) 3NF,2)一个关系模式若不属于3NF,同样会出现很多问题,因此将 SL 分解为 2个3NF的关系模式: SD(Sno, Sdept) 3NF DL(Sdept, Sloc) 3NF,规范化理论小结,关系模式规范化的基本步骤 1NF 消除非主属性对码的部分函数依赖 消除决定属性 2NF 集非码的非平 消除非主属性对码的传递函数依赖 凡函数依赖 3NF 消除主属性对码的部分和传递函数依赖 BCNF,第三章 小结,1. 掌握以下概念: 关系,关系模式,关系数据库,数据库模式,码,外码,主属性,非主属性,范式,规范化 关系模式的五元组和三元组表示方法 2. 掌握函数依赖的有关内容: 函数依赖的定义,平凡函数依赖与非平凡函数依赖,完全函数依赖与部分函数依赖,传递函数依赖 3. 掌握范式有关内容: 1NF, 2NF , 3NF, BCNF的定义及其特点 1NF 2NF , 2NF 3NF的转化,关系模式分解的标准,三种模式分解的等价定义 分解具有无损连接性 分解要保持函数依赖 分解既要保持函数依赖,又要具有无损连接性,模式的分解(续),例: SL(Sno, Sdept, Sloc) F= SnoSdept,SdeptSloc,SnoSloc SL2NF 存在插入异常、删除异常、冗余度大和修改复杂等问题 分解方法可以有多种,模式的分解(续),SL Sno Sdept Sloc 95001 CS A 95002 IS B 95003 MA C 95004 IS B 95005 PH B ,模式的分解(续),1. SL分解为下面三个关系模式: SN(Sno) SD(Sdept) SO(Sloc),分解后的关系为:,SN SD SO Sno Sdept Sloc 95001 CS A 95002 IS B 95003 MA C 95004 PH 95005 ,模式的分解(续),分解后的数据库丢失了许多信息 例如无法查询95001学生所在系或所在宿舍。 如果分解后的关系可以通过自然连接恢复为原来的关系,那么这种分解就没有丢失信息,模式的分解(续),2. SL分解为下面二个关系模式: NL(Sno, Sloc) DL(Sdept, Sloc) 分解后的关系为: NL DL Sno Sloc Sdept Sloc 95001 A CS A 95002 B IS B 95003 C MA C 95004 B PH B 95005 B ,模式的分解(续),NL DL Sno Sloc Sdept 95001 A CS 95002 B IS 95002 B PH 95003 C MA 95004 B IS 95004 B PH 95005 B IS 95005 B PH ,模式的分解(续),NL DL比原来的SL关系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论