890 likes | 1.03k Views
第六章 关系数据库的规范化设计. 6.1 关系模式的设计的问题. 数据库 系统原理及应用. 6.2 规范化. 6.3 数据依赖的推理规则. 6.4 模式分解. 6.1 关系模式的设计的问题. 1 、当用户给定了一组数据后,应该构成几个关系,每个关系应由哪些属性组成,这个问题是一个 DB 设计问题,确切地讲是 DB 的逻辑设计问题。 2 、由于关系模型有严格的数学理论基础,并且可以向其他模型进行转换,故以关系模型为背景进行这个问题的讨论,也就形成了 DB 逻辑设计的一个有力工具 —— 关系数据库的规范化理论。. 6.1. 关系模式的设计的问题.
E N D
第六章 关系数据库的规范化设计 6.1关系模式的设计的问题 数据库系统原理及应用 6.2规范化 6.3 数据依赖的推理规则 6.4模式分解
6.1 关系模式的设计的问题 1、当用户给定了一组数据后,应该构成几个关系,每个关系应由哪些属性组成,这个问题是一个DB设计问题,确切地讲是DB的逻辑设计问题。 2、由于关系模型有严格的数学理论基础,并且可以向其他模型进行转换,故以关系模型为背景进行这个问题的讨论,也就形成了DB逻辑设计的一个有力工具——关系数据库的规范化理论。 6.1 关系模式的设计的问题
3、对于一个现实问题,在不同的时刻关系模式的关系(值)也会有变化,但现实世界中许多已知的事实又限定了关系模式的所有可能的关系必须满足一个的完整性约束条件,这些约束或者通过对属性值的限定,或者通过属性间的属性值的相互关系(称为数据依赖,是语意范畴)反映出来,这就是数据模式设计的关键。3、对于一个现实问题,在不同的时刻关系模式的关系(值)也会有变化,但现实世界中许多已知的事实又限定了关系模式的所有可能的关系必须满足一个的完整性约束条件,这些约束或者通过对属性值的限定,或者通过属性间的属性值的相互关系(称为数据依赖,是语意范畴)反映出来,这就是数据模式设计的关键。 6.1 关系模式的设计的问题 4、数据依赖 前面讲过: R ( U, D, DOM, F) 关系 属性 域 属性→域的影射 数据依赖 本章讨论R(U、F)
数据依赖: • 函数依赖(Functional Dependency)FD • 多值依赖(Multivalued Dependency)MD • 联接依赖(Join Denpendency)JD • FD是重点,顾名思义,同数学中的函数,如Y=f(x) 6.1 关系模式的设计的问题 5、对于任一个不考虑FD的关系模式会有什么不当之处?
例6-1: R(SNO,CNO,GRADE,SD,MN) 在该关系中: U={SNO,CNO ,GRADE ,SD,MN} 6.1 关系模式的设计的问题 已知函数依赖: F={ SNO→SD,SD→MN, (SNO,CNO)→GRADE }
如有一系刚成立,尚无学生 则系名,系主任无法加入 如有一门新课,尚无人选 则无法加入 如有一学生尚无选择课 则无法加入 6.1 关系模式的设计的问题 插入异常 如只有一学生选过某课,而现在毕业(不选) 则该课被删除,不存在 如某系的学生全毕业 则该系不存在 删除异常
如一个系换了系主任,则需对所有该系的学生信息进行修改,若一些元组的信息修改,而另一些元组的相同信息没有修改,导致数据的不一致性…… 6.1 修改异常 关系模式的设计的问题 系名,系主任,(SD,MN)的存储次数同该系的学生的选课人次有关。即:浪费存储,又要付出代价来维护。 数据冗余
如果R(SNO,CNO,GRADE,SD,MN)分解为: R1(SNO,CNO,GRADE) 6.1 R2(SNO,SD) 关系模式的设计的问题 R3(SD,MN) 则会减少上述的问题,但这也是通过经验分解,是否有理论来支持这一分解呢? 本节结束
6.2 规范化 1971年,E.F.Codd提出该理论,即使数据库设计走向完备的规范化理论。 一般按属性间的依赖情况来区分。 分为:1NF,2NF,3NF BCNF… 本章的一些符号约定: 6.2 • 英文单个首部大写字母“A、B、C、D、E、…”代表单个属性。 • 英文单个尾部大写字母,“U、V、W、X、Y、Z”代表属性集。 规范化
大写字母R代表关系模式,小字字母r代表其关系(值),也用属性名组合的方式表示关系模式。如属性有A、B、C,则可用ABC表示该关系模式。大写字母R代表关系模式,小字字母r代表其关系(值),也用属性名组合的方式表示关系模式。如属性有A、B、C,则可用ABC表示该关系模式。 • 属性集{A1,A2,…An}写为A1,…An • 属性集X∪Y 写为XY • 属性集X∪A写为XA 6.2 规范化
6.2.1函数依赖(FD ) 1. 定义: 设R(U)是属性集U上的关系模式,X、Y是U的子集,若对R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上属性值相等,而在Y上属性值不等(或对X的每一个具体值,Y都有唯一一个具体值与之相对应) 。则X函数决定Y,或Y函数依赖X,记作X→Y 6.2 2. 语义范畴: 规范化 例:SNO→SEX,SNAME→SEX (当有同名时,则SNAME→SEX)
3. 一些术语和记号 • X→Y,但Y X,则称X→Y是非平凡的FD。 • X→Y,YX,则 X→Y称平凡的FD。 • X→Y中,X为决定因素。 6.2.1 • X→Y,Y→X,则XY。 函数依赖(FD) • 若Y不FD于X,则X Y。
4.定义: 在R(U)中,如果X→Y,并对X的任一真子集X`,都有X`→Y,则Y对X是完全函数依赖,(Full Functional Dependency )记作X F Y。 6.2.1 若X→Y,但Y不完全FD于X,则称Y对X部分函数依赖(Partial Functional Dependency ),记作:X P Y 函数依赖(FD)
例6-2: R(SNO,CNO,GRADE,SD,MN) 已知:F={SNO→SD,SD→MN, (SNO,CNO)→GRADE} SNO GRADE 因为 CNO GRADE 6.2.1 函数依赖(FD) 所以(SNO,CNO)F GRADE (SNO,CNO)→SD,因为SNO→SD 所以(SNO,CNO) P SD
5. 定义: 在R(U)中,如果X→Y ,(YX),Y→Z则称Z传递函数依赖于X(Transitive Functional Dependency )。记作:X TZ 例6-3: R(SNO,CNO,GRADE,SD,MN) 6.2.1 已知:F={SNO→SD,SD→MN, (SNO,CNO)→GRADE} 函数依赖(FD) 因为:SNO→SD, SD→MN 则:SNO TMN
6. FD的推理规则: 1974年由Armstrong提出的。设U为属性集总体,F是U上的一组函数依赖,则有以下的推理规则: • A1 自反律: YXU 则X→Y • A2 增广律: X→Y ,Z U,则 XZ→YZ • A3 传递律: X→Y ,Y→Z ,则 X→Z 6.2.1 • 合并规则: X→Y ,X→Z ,则X→YZ 函数依赖(FD) • 伪传递规则: X→Y,W Y→Z ,则 WX→Z • 分解规则: X→Y, ZY ,则 X→Z
小 结 • 关系为什么要进行规范化。 • 规范化理论。
作 业 • 关系模式规范化的意义何在? 本节结束
6.2.2 码 术语定义: • 候选码:设K为R(U,F)中的属性或属性集,若K F U,则K为R的候选码。 • 主码:候选码多于一个,选定一个为主码。 • 主属性:包含在候选码中的属性为主属性。 • 非主属性:不包含在候选码中的属性为非主属性。 6.2 • 全码:所有属性的组合为码,称为全码。 • 如R(CNO, TNO, BNO) • 课程号 教师编码 参考书编号 规范化
例6-4: 求R(SNO,CNO,GRADE,SD,MN)的码。 已知: U={SNO, CNO , GRADE, SD, MN} 函数依赖 F={SNO→SD,SD→MN, (SNO,CNO)→GRADE} 6.2.2 码
解:该题即解 ? F U 已知:SNO→SD 据A2:(SNO,CNO)→SD,CNO 据分解规则:(SNO,CNO)→SD① 已知:SNO→SD,SD→MN 据A3:SNO→MN; 据A2:(SNO,CNO)→MN,CNO 6.2.2 据分解规则: (SNO,CNO)→MN② 码 据A1:(SNO,CNO)→SNO,CNO③
已知:(SNO,CNO)→GRADE ④ 据合并规则:合并①②③④ (SNO,CNO)→SNO,CNO,GRADE, SD,MN 因为SNO和CNO单独都不能函数决定U。 (SNO,CNO) F SNO,CNO,GRADE, SD,MN 故 (SNO,CNO )是R的码。 6.2.2 码
6.2.3 范式 1. 规范化: 以更单纯,结构更规则的关系逐步取代原有关系的过程(其过程是一个模式分解的过程)。 2. 范式: 在规范化过程中所产生的满足不同的约束条件的关系的结构,称为第N范式(Normal Form)。 6.2 范式为: 1NF,2NF,3NF,BCNF,4NF, 5NF(PJNF),DKNF, 6NF。 规范化 范式间关系式:6NF DKNF 5NF 4NF BCNF 3NF 2NF 1NF
6.2.41NF • 定义: • 如果关系模式R的每一个属性值都是不可分的原子值,那么称R是第1范式,记作R∈1NF。 例6-5: 6.2 规范化 出现了嵌套
例6-6: 出现了重复组。 6.2.4 1NF是关系模式应具备的最起码的条件。 1NF
6.2.5 2NF • 定义: • 若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。 • 严格的说:若R∈1NF,且每一个非主属性都不部分函数依赖于码,则R∈2NF。 例6-7: S(SNO,CNO,GRADE,SD,MN) 6.2 码: (SNO,CNO) 非主属性:GRADE,SD,MN 规范化
(SNO,CNO) F GRADE (SNO,CNO) P SD (SNO,CNO) P/TMN 该关系模式不是2NF,会产生相应的四个问题。 取消部分函数依赖。 S1(SNO,CNO,GARDE) S1∈2NF 6.2 规范化 S2(SNO,SD,MN) S2∈2NF
6.2.6 3NF 1. 定义: R∈2NF,且每个非主属性都不传递依赖于码,则R∈3NF。 或:R∈1NF,且每个非主属性既不部分依赖于码,也不传递依赖于码。 6.2 规范化
2. 继续6-7例 S2(SNO,SD,MN)∈2NF, SNO TMN 进行分解: S21 (SNO,SD) S22 (SD,MN) 到此,S关系所分解得到了以下三个关系: S1 (SNO,CNO,GRADE)∈3NF 6.2.6 S21(SNO,SD)∈3NF S22 (SD,MN)∈3NF 3NF 一般情况下,3NF已经解决绝大多数数据的冗余、插入、删除、修改异常。
3. 出现异常的问题 例6-8 :R(BNO,BNAME,AUTHOR) 书号 书名 作者 约定:一本书只有一个书号(即:一个书号对应一个书名)。 一个书名可有多个书号(即:不同书号可以有相同的书名)。 每本书可由多个作者,但一个作者编的书名应不同。 6.2.6 从语义得到 F={BNO→BNAME,(AUTHOR,BNAME)→BNO} 3NF 求:码
F={BNO→BNAME,(AUTHOR,BNAME)→BNO} 解: 因为:BNO→BNO,BNO→BNAME 所以:BNO→BNO,BNAME 据A2:BNO,AUTHOR→BNO,BNAME, AUTHOR 候选键:(BNO,AUTHOR) 又因为:AUTHOR,BNAME→BNO 据A1:AUTHOR,BNAME→AUTHOR,BNAME 据A4:AUTHOR,BNAME→BNO,BNAME,AUTHOR 6.2.6 3NF 侯选键:(AUTHOR,BNAME) 因为该关系模式中无非主属性,所以R∈3NF。
小 结 • 求码。 • 1NF、2NF、3NF的判断。
作 业 • 如何判断一个关系模式的范式级别? 本节结束
6.2.7BCNF(Boyce Codd Normaol Form) 1. 定义: R(U,F)∈1NF,若X→Y,且Y∈X时,X必含有码,则R∈BCNF。 即:每一个决定因素必含有码。 可以推出以下结论:R∈BCNF, 则 • 所有非主属性对每一个码都是完全函数依赖。 6.2 • 所有主属性对每一个不包含它的码,也是完全函数依赖。 规范化 • 没有任何属性完全依赖于非码的任何一组属性。
例6-8中: 因为BNO→BNAME,而BNO不是码。 所以R∈BCNF。 分解: R1(BNO,BNAME) ∈BCNF R2(BNO,AUTHOR)∈BCNF 6.2.7 BCNF 但会丢失(AUTHOR,BNAME)→BNO,产生语义矛盾。
如例6-8在分解前: 6.2.7 BCNF
在分解后: 即:同一作者可以编写同名的两本书,违背了语义,丢失了(AUTHOR,BNAME)→BNO函数依赖。 故:范式级别并非越高越好。 6.2.7 BCNF
例6-9:R(S, C, P) 学生 课程 名次 约定:每一个学生选一课有一名次, (S,C)→P 每门课每一名只有一个人(无并列) (C,P)→S 码是(S,C), (C,P) 。 即决定因素含有码。 符合BCNF的定义。R∈BCNF 例6-1经过分解得到的 : 6.2.7 (SNO,CNO,GRADE)∈BCNF BCNF (SNO,SD)∈BCNF (SD,MN)∈BCNF
6.2.8 多值依赖 • 引例 • 例6-10:R(C, T, B) 课程 老师 教课书 约定:某一门课有多个老师教,他们使用相同一套书,每个老师可以教多门课,一种参考书可以供多门课用。 6.2 规范化
2.变为二维表: 6.2.8 多值依赖 在R(C,T,B)中,码为(C,T,B) 是全码 。
3. 存在问题: ①冗余大。 ② 增加复杂:每增加一老师,就要增加若干记录。 ③ 删除复杂:每门课去一门参考书,就要删去若干记录。 ④ 修改复杂:每门课改一门参考书,就要改若干记录。 上述的问题,因为B和T的取值毫无关系,只取决于C,即R中存在着一种称为多值依赖的数据依赖。 6.2.8 多值依赖
4. 定义: 设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y,关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(X,Z)值,有一组Y的值,这组值仅仅决定于X的值而与Z无关。 (X,Y1,Z1) 或:如果存在 (X,Y2,Z2) 6.2.8 则存在 (X,Y1,Z2) 多值依赖 (X,Y2,Z1) 则称为多值依赖X→→Y。
另定义: R(U)中的任一关系r中,X,Y,Z=U-X-Y,任意两个元组t、s,有t[X] = s[X],就存在元组w,v∈r(w,v可以与t,s相同)使得: w[X]=v[X]=t[X] 有 w[Y]=t[Y] 和 v[Y]=s[Y] w[Z]=s[Z] v[Z]=t[Z] 存在 6.2.8 即交换s,t元组中的Y值即得的两个新元组必在r中,则X→→Y。 多值依赖
另定义: 把r投影到XY和R-XY上,连接两投影,如果仍为r,则是MVD。当且仅当R无损分解为XY,XZ。 6.2.8 多值依赖
上例中:C →→ T, C →→ B 5. MVD的性质: ⑴. 对称性:X→→Y则X→→Z,其中Z=U-X-Y ⑵. 传递性:X→→Y则Y→→Z,则X→→Z-Y ⑶. FD是MVD的特殊情况:若X→Y则X→→Y 平凡的MVD:如果X→→Y,而Z=,则X→→Y为平凡的MVD。
6. FD和MVD的区别、联系。 (1)联系: FD可以看作是MVD的一个子集。 因为X→Y描述了X和Y之间1:1的联系,而X→→Y是描述X与Y之间1:M的联系。如果X→→Y中规定每个X只有一个Y与之对应,那么X→→Y就成了X→Y。 6.2.8 多值依赖
(2)区别: MVD的有效性与属性集范围有关。 ① FD:X→Y的有效性仅取决于X,Y,只要在W上成立,则在U上也成立(XYWU)。 MVD:X→→Y不仅与X有关,还与U-X-Y有关,X→→Y在W上成立,在U上不一定成立。(WU) ② FD:X→Y在R(U)上成立,则对Y`Y,有X→Y` 6.2.8 多值依赖 MVD:X→→Y在R(U)上成立,则Y`Y,不一定有X→→Y`。
例6-11: R1(SNO,SAGE) R2(SNO,SSEX,SAGE) 对R1:SAGE→→SNO成立。 对R2: SAGE→→SNO成立吗? (X,Y1,Z1)则存在(X,Y1,Z2) 6.2.8 (X,Y2,Z2) (X,Y2,Z1) 多值依赖 则有:18 s1 女 18 s1 男 18 s2 男 18 s2 女 存在显然是不可能的。所以: SAGE→→SNO
小 结 • BCNF的判断。 • MVD。 • MVD和FD的区别。 本节结束
6.2.9 4NF 1. 定义: R(U)∈1NF,如果对于R的每个非平凡的MVD,X→→Y(YX),X都含有码,则R(U)∈4NF。 (因为X含有码,则X→Y。 4NF所允许的非平凡的MVD实际上就是FD。) 6.2 规范化