第4章 关系规范化基础

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通常实际情况下,规范化到3NF就可以了。
返回
21
4.2.2 常用的三种范式
1、第一范式(1NF) 定义:设R是一个关系模式。 如果R的每个属性 的值域都是不可分的简单数据项(即是原子) 的集合, 则称这个关系模式属于第一范式, 简 记作R∈1NF。 1NF是规范化最低的范式,它要求无重复记录; 字段不可分解。 在任何一个关系数据库系统中, 关系至少应该 是第一范式。 不满足第一范式的数据库模式不 能称为关系数据库。 第一范式不能排除数据冗余和异常情况的发生。
学号→姓名,学号→性别 ,学号→课程, (课程、 学号)→学分 非主属性部分依赖于码 ,故关系S不属于2NF。对上 述关系模式进行分解,分解为两个关系: S1(学号,姓名,性别);S2(学号,课程,学分) S1∈2NF;S2∈2NF
返回
26
关系的分解
(1)如果R不满足1NF条件,先对其分解,使
返回
18
4.2 关系规范化
关系数据库中的关系必须满足一定的规范化要求,对于 不同的规范化程度可用范式来衡量。 范式(Normal Form)是符合某一种级别的关系模式的 集合 第一范式(1NF)
第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF)
包含在任何候选关键字中的各个属性称为主属性
不包含在任何候选码中的属性称为非主属性
R(学号#,姓名,出生日期,成绩)存在下列 函数依赖关系:
学号→姓名 学号→性别 学号→出生日期 学号→成绩
每个非主属性都完全依赖于码 ,所以该关系R∈2NF
返回
25
第二范式(2NF)
主关键字是属性的组合,这样的关系模式可能 不是第二范式。 关系S(学号,姓名,性别,课程,学分),存 在下列函数依赖关系:
多值依赖(Multivalued Dependency,简称MVD)
连接依赖(Join Dependency,简称JD) 返回
6
4.1.1 函数依赖
1. 函数依赖的定义
函数依赖:在关系R中,X、 Y为R的两个属性 或属性组,如果对于R的所有关系r都存在: 对 于X的每一个具体值,Y都只有一个具体值与之 对应,则称属性Y函数依赖于属性X。记作X→Y。
学号→姓名 计算机 女 学号→专业名 韦严平 计算机 男 学号→性别 李方方 计算机 男 学号→总学分
返回
学生情况(学号#,姓名,性别,出生时间,总学分)
8
4.1.1 函数依赖
2. 函数依赖与属性间的联系类型的关系
关系模式中,如果属性X与Y有1:1联系时,则存在函 数依赖X ↔ Y。
例如,当学生没有重名时,SNO ↔ SN;
返回
20
各种范式之间存在联系: 1NF⊃2NF⊃3NF⊃BCNF ⊃4NF⊃5NF 通常把某一关系模式R为第n范式简记为 R∈nNF。
在这些范式中,最重要的是3NF和BCNF,它 们是进行规范化的主要目标
一个低一级范式的关系模式,通过模式分解可 以转换为若干个高一级范式的关系模式的集合, 这个过程称为规范化。
返回
23
第一范式(1NF)
例如:学生选课情况表如下表所示: 学生选课表
姓名
张三 王五 张三 张三 张三 王五 王五
姓名
课程 课程 高数 离散数学 高数 普物 英语 普物
离散数学 程序 英语 设计
学期 学期 1 2 1 1
程序设计
1 2 2
24
返回
第二范式(2NF)
如果关系模式R是第一范式,且每个非主属性都 完全依赖于码 ,则称R为满足第二范式的模式, 记为:R∈2NF模式。
28
第三范式(3NF)
如果关系模式R是第二范式,且没有一个非主 属性是传递函数依赖于码 ,则称R为满足第三 范式的模式,记为:R∈3NF模式。
关系ST(学号,楼号,收费);其中包含的函 数依赖关系有: 学号→楼号 楼号→收费 则:学号→收费 对上述关系模式进行分解,分解为两个关系: st1(学号,楼号); st2(楼号,收费)
返回
2
提 问
什么是选择、投影运算? 什么是并、交、差运算? 连接运算分几种?
等值连接与自然连接区别?
返回
3
自然连接一定是等值连接,但等值连接
不一定是自然连接,因为自然连接要求
相等的分量必须是公共属性,而等值连
接要求相等的分量不一定是公共属性
等值连接不把重复属性去掉,而自然连
接要把重复属性去掉
返回
15
4.2 关系规范化
关系模式学生信息表中存在的问题 ①数据冗余(太大浪费大量的存储空间)。
例:每一个系主任的姓名重复出现
②更新异常(数据冗余 ,更新数据时,维护数据完整性代 价大)
例:某系更换系主任后,系统必须修改与该系学生有关的每 一个元组
③插入异常(该插的数据插不进去)
例,如果一个系刚成立,尚无学生,我们就无法把这个系及 其系主任的信息存入数据库。
简单表述:如果知道X的值,就可以获得Y的值 R的一切关系都要满足定义中的限定
返回
7
例4-1
学 号 001101 001102 001103 001104 001106 姓 名 王林 程明 王燕
学生情况表
专业名 计算机 计算机 性别 男 男 出生时间 1980-02-10 1981-02-01 1979-10-06 1980-08-26 1980-11-20 总学分 50 50 50 50 50
④删除异常(不该删除的数据不得不删)
例,如果某个系的学生全部毕业了, 我们在删除该系学生信 息的同时,把这个系及其系主任的信息也丢掉了。
返回
16
4.2 关系规范化
“好”的模式:不会发生插入异常、删除异常、 更新异常,数据冗余应尽可能少。 原因:由存在于模式中的某些数据依赖引起的 解决方法:通过分解关系模式来消除其中不合 适的数据依赖。 关系模式规范化的目的
返回
4
目 录
4.1 数据依赖 4.2 关系规范化
返回
5
4.1 函数依赖
实体间的联系有两类
一类是实体与实体之间的联系 另一类是实体内部各属性间的联系
定义属性值间的相互关连,这就是数据依赖, 是语义的体现。
数据依赖共有三种
函数依赖(Functional Dependency,简称FD)
例:在学生课程(学生号,课程号,成绩)关 系中,若存在函数依赖为: (学生号,课程号) →成绩;(学生号,课程号)→ 课程号;
返回
10
4.1.2几种特定的函数依赖
2、 完全函数依赖和部分函数依赖
设关系模式R(U), X, Y⊆U: 如果X→Y, 并且对于X的任何一个真子集Z, Z→Y 都不成立, 则称Y完全函数依赖于X。 若X→Y, 但对于X的某一个真子集Z, 有Z→Y成立, 则称Y部分函数依赖于X。 例: 在关系SC(Sno, Cno, Grade)中,Sno, Cno是主码 由于:Sno →Grade不成立,Cno → Grade也不成立 因此:Grade 完全函数依赖于(Sno, Cno) ; 返回
返回
22
第一范式(1NF)
例如:下表描述的是职工情况。 职工情况表
工资
职工号 姓名 职工号 姓名 20017 20017 李岚 李岚
Байду номын сангаас
基本工资 职务工资 工龄工资
890 890
900 900
基本工资
职务工资 300 300
300 300
工龄工资 30 30
40 40
20013 王晓江 20013 王晓江
返回
13

全函数依赖?

什么是函数依赖、非平凡函数依赖、完 什么是主属性、非主属性?
返回
14
4.2 关系规范化
设有一描述学校的数据库: 学生的学号(Sno)、所在系(Sdept)、系主任姓 名(Mname)、课程名(Cname)、成绩(Grade) 学生信息表(Sno, Sdept, Mname, Cname, Grade ) 语义:一个系有若干学生, 一个学生只属于一个系; 一个系只有一名主任; 一个学生可以选修多门课程, 每门课程有若干学生选修; 每个学生所学的每门课 程都有一个成绩。
第4章
关系规范化基础
返回
1
1. 2. 3. 4. 5. 6.
S(学号S#,姓名SN,所在系SD,年龄SA) C(课程号C#,课程名CN,先修课号PC#) SC(S#,C#,成绩G) 检索学生的所有情况 检索年龄大于等20岁的学生姓名 检索先修课号为C2的课程号 检索课程号C1的成绩为A的所有学生姓名 检索S1修读的所有课程名及先修课号 检索年龄为23的学生所修课程名
其满足1NF。
(2)R符合1NF条件但不符合2NF条件
分解R使其满足2NF。
时,
(3)R符合2NF条件但不符合3NF条件时,分
解R使其满足3NF。
返回
27
第二范式(2NF)
关系职工信息P(职工号,姓名,职称,项目 号,项目名称,项目排名)
主码为(职工号,项目号),存在函数依赖如下: (职工号,项目号)→ 项目名称;职工号→姓名; (职工号,项目号)→ 项目排名;职工号→职称; 项目号→项目名称。 由于非主属性部分依赖于码 ,故关系P不属于2NF。 对上述关系模式进行分解,分解为三个关系: 职工信息表(职工号,姓名,职称) 项目排名表(职工号,项目号,项目排名) 项目表(项目号,项目名称) 返回
解决问题 基本思想是消除数据依赖中的不合适部分,使各关 系模式达到某种程度的分离,使一个关系描述一个 概念、一个实体或实体间的一种联系。 返回
17
关系模式分解
所谓关系模式的分解,就是对原有关系在不同
的属性上进行投影,从而将原有关系分解为两
个或两个以上的含有较少属性的多个关系
关系模式经分解后,应与原来的关系模式等价, 即两者对数据的使用者来说应该是等价的。即 对分解前后的关系作相同内容的查询,应产生 相同的结果,这是对模式分解的基本要求。
如果属性X与Y有m:1的联系时,则只存在函数依赖 X→Y。
例如,SNO与AGE,DEPT之间均为m:1联系,所以有 SNO→AGE ,SNO→DEPT;
如果属性X与Y有m:n的联系时,则X与Y之间不存在任 何函数依赖关系。
返回
9
4.1.2几种特定的函数依赖
1、非平凡函数依赖和平凡函数依赖 设关系模式R(U), X、 Y⊆ U: 如果X→Y, 且Y ⊆ X(子集), 则称X→Y 为平凡的函数依赖。 如果X→Y, 且Y不是X的子集, 则称X→Y为 非平凡的函数依赖。
BCNF是从1NF直接定义而成的,可以证明, 如果R∈BCNF,则R∈3NF。 BCNF的关系模式都具有如下3个性质。
(1)所有非主属性都完全函数依赖于每个候选码。
(2)所有主属性都完全函数依赖于每个不包含它的 候选码。
(3)没有任何属性完全函数依赖于非码的任何一组 属性。
返回
31
BC范式(BCNF)
如果关系模式R∈BCNF,由定义可知,R中不存在任 何属性传递函数依赖于或部分依赖于任何候选码,所 以必定有R∈3NF。但是,如果R∈3NF,R未必属于 BCNF。 3NF和BCNF是以函数依赖为基础的关系模式规范化程 度的测度。 如果一个关系数据库中的所有关系模式都属于BCNF, 那么在函数依赖范畴内,它已实现了模式的彻底分解, 达到了最高的规范化程度,消除了插入异常和删除异 常。
11
4.1.2几种特定的函数依赖
3、传递函数依赖
设关系模式R(U), X ⊆ U, Y ⊆ U, Z ⊆ U。 如果X→Y, Y→Z成立, 但Y→X不成立, 且 Z-X、 Z-Y和Y-X均不空, 则称X→Z为传递函 数依赖。 例如: 关系模式R={A, B, C, D}, 其上的函数 依赖集F={A→B, B→C, A→C, AB→D}, 则 A→C为传递函数依赖。
返回
29
第三范式(3NF)
推论1: 如果关系模式R∈1NF,且它的每一个 非主属性既不部分依赖、 也不传递依赖于码 , 则R∈3NF。 推论2: 不存在非主属性的关系模式一定为 3NF。
返回
30
BC范式(BCNF)
关系模式R∈1NF,对任何非平凡的函数依赖 X→Y,X均包含码,则R∈BCNF。
返回
12
4.1.3 码的函数依赖表示
设K为关系模式R(U)中的属性或属性集合。 若K→U,则K称为R的一个候选码 (Candidate Key)。 若关系模式R有多个候选码,则选定其中一个 作为主码(Primary Key)。
关系模式R中属性或属性组X并非R的码,但X 是另一个关系模式的码,则称X是R的外部码 (Foreign Key),也称为外码。
相关文档
最新文档