数据库原理第五章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
W
X Y
解:X→Y X→W, W→Y 为非平凡函数依赖
为平凡函数依赖
第三节
范式
关系模式满足的确定约束条件称为范 式,根据满足约束条件的级别不同,范式 由低到高分为1NF,2NF,3NF,BCNF,4NF,5NF 等。 关系模式的规范化:把一个低一级范式的 关系模式分解为高一级范式的关系模式的 过程。
例 SCX(SNO,SNAME,AGE,SEX,CNO,CNAME,GRADE) X Y SNO → SNAME SNO → AGE SNO → SEX (SNO,CNO) → GRADE CNO → CNAME
SNO GRADE
wenku.baidu.com
(3)、自反性、增广性和传递性
设U 是关系模式R的属性集 ,F是R上成立 的只涉及到U中属性的函数依赖集,则: 自反性:若Y X U,则X→Y在R上成立 增广性:若X→Y在R上成立,且Z U,则 XZ → YZ在R上成立 传递性:若X→Y和Y→Z在R上成立,则X 在R上成立
3) GRADE关系:U={SNO SNAME CNO CNAME GRADE} F={SNO->SNAME,CNO->CNAME,SNO,CNO->GRADE} 我们称3)为泛关系模式,它把现实问题的 所有属性组成一个关系模式。
sno s1 s1 s2 s2 sname 李立 李立 丁惠 丁惠 cno cname grade c1 DB 78 c3 OS 87 c1 DB 90 c2 DS 83 c3 OS 77
分解关系
如上例设计的教学管理关系数据库模型
解:sct(sno, cno, tno, sname, grade, cname, tname)
解一:
students(sno,sname) students(sno,sname) courses (cno,tno,cname) courses (cno,cname) teachers(tno,cno, tname) teachers(tno, tname) sc (sno,cno,grade) sc (sno,cno,grade) teaching(tno,cno)
CT(CNO,CN,TNAME, SALARY)
3. 第三范式(3NF)
给定关系模式 R 及其上的函数依赖集 F, 如果 R 的任何一个非主属性都不传递函 数依赖于它的任何一个侯选码,则称 R 是 第三范式,简记为3NF。(非主属性也不部 分依赖于码) △定理:一个3NF的关系(模式)必定是2NF 的(3NF 2NF 1NF) 。
回顾例2,分解为: SC(SNO,CNO,GRADE), CT(CNO,CN,TNAME, SALARY) 在SC中,不存在前述的四种问题; 但在CT中,仍然存在着前述的四种问题. 说明2NF还不够好。原因是在CT中存在传 递依赖。
传递函数依赖
在 R(U) 中 , 如 果 X→Y, Y→Z, 并 且 Y→X, 那么称X→Z是传递函数依赖 , 即 Z 传递函数依赖于X。
例如:
学号
姓名
年龄
性别
学号—SNO 姓名—SN 年龄—age 性别—sex 课程号—CNO 课程名—CN 教师名—TN 成绩—G
学生S
M 选课sc N
成绩
课程C
课程号 课程名 教师名
例:(sno,cno) (sno,cno) cno (sno,cno)
P
F
F
F
cn tn cn g
(5)、平凡函数依赖和非平凡函数依赖
函数依赖(Functional Dependency,FD)是数 据依赖的一种,它反映属性或属性组之 间相互依存,互相制约的关系,即反映 现实世界的约束关系。
(1)、函数依赖定义
设R(U)是属性U上的一个关系 模式,X和Y均为U={A1,A2,…,An} 的子集,r为R的任一关系,如果对于 r中的任意两个元组u,v,只要有 u[X]=v[X],就有u[Y]=v[Y],则称X 函数决定Y,或称Y函数依赖于X,记 为X→Y。
• 删除问题
SCT(SNO,CNO,CN,GRADE,TNAME,SALARY)
异常原因:存在非主属性CN部分函数 依赖于侯选键(SNO,CNO) 解决的方法:是用投影分解把关系模式 SCT分解为两个关系模式 分解:SC(SNO,CNO,GRADE), CT(CNO,CN,TNAME, SALARY) 分解后得到的两个关系模式均为2NF
第五章 关系的规范化设计
函数依赖;规范化设计;数据依 教学内容: 赖的公理系统;模式分解。 1、函数依赖和多值依赖;会根 据语义找出属性间的各种依赖 关系; 2、各级范式的性质;能够判断 关系模式所符合的范式级别; 3、能够将满足低级范式的模式 转化成满足高级范式的模式。 函数依赖、范式;模式分解方法
例1:
R(U,F)U=(ABCD), F={AB→C,C→D}
解:
R中的候选码为: AB
R为: 2NF
★若给出关系模式的函数依赖集,如何 确定关系模式中的候选键(码)?
(1)如果有属性不在函数依赖集中出 现,那么它必须包含在候选码中; (2)如果有属性不在函数依赖集中任 何函数依赖的右边出现,那么它 必须包含在候选码中; (3)如果该属性或属性组能唯一标识 元组,则它就是候选码;
例:1.sno→sname,
cno→cname,
(sno,cno)→grade 2.tno→cno, sno→tname
只能根据语义来确定函数依赖性的存在与否。
(2)属性间的联系决定函数依赖关系
设X、Y均是U的子集 1.X和Y间联系是1:1,则X→Y,Y→X。 2.X和Y间联系是M:1(M>1),则X→Y。 3.X 和 Y间联系是 M:N(M,N>1) ,则 X、 Y 间不存在函数依赖。
•
删除问题
Sno S1 S1 S1 S1 S2 S3 S3 S3 S4 S4 S5 S5
Cno C1 C2 C3 C4 C1 C1 C2 C4 C1 C2 C1 C4
Tno T1 T2 T3 T4 T4 T4 T2 T4 T1 T2 T1 T4
Sname 赵民 赵民 赵民 赵民 李军 陈江 陈江 陈江 魏致 魏致 乔远 乔远
Grade 90 90 85 87 90 75 70 56 90 85 95 80
Cname Tname OS 彭 DS 杨 C++ 刘 DB 张 OS 张 OS 张 DS 杨 DB 张 OS 彭 DS 杨 OS 彭 DB 张
产生问题的原因? 属性间约束关系(即数据间的依赖关系)太强
解决问题的方法:
要求学生 掌握:
教学重点 及难点:
第五章 关系的规范化设计
第一节 第二节
第三节 第四节 第五节
问题的提出 函数依赖
范式 数据依赖的公理系统 模式的分解
第一节
概念回顾
关系模式设计问题的提出
• 关系:描述实体、属性和实体间的联系, 从形式上看,是一张二维表
• 关系模式:用来定义关系 • 关系数据库:基于关系模型的数据库,利 用关系来描述现实世界,从形式上看由一组 关系组成 • 关系数据库模式:定义这组关系的关系模 式的全体
按照一定的原则从数量众多而又相互关 联的数据中,构造出一组既能较好地反 映现实世界,而又有良好的操作性能的 关系模式。
例:设计教学管理关系数据库模型
sc
解:sct(sno, cno, tno, sname, grade, cname, tname)
关系SCT
问题分析
• 冗余度高
• • 修改困难 插入问题
解二:
Students
Sno S1 S2 S3 S4 S5 Sname 赵民 李军 陈江 魏致 乔远
Teachers
Cno T1 T2 T3 T4 Cname 彭 杨 刘 张
sc
Sno S1 S1 S1 S1 S2 S3 S3 S3 S4 S4 S5 S5 Cno C1 C2 C3 C4 C1 C1 C2 C4 C1 C2 C1 C4 Grade 90 90 85 87 90 75 70 56 90 85 95 80
泛关系:
s2 丁惠
泛关系模式中存在的问题
sno s1 s1 s2 s2 sname 李立 李立 丁惠 丁惠 cno cname grade c1 DB 78 c3 OS 87 c1 DB 90 c2 DS 83
s2 丁惠
c3
OS
77
(1)数据冗余 (3)更新异常
(2)插入异常 (4)删除异常
关系数据库设计的核心: 关系模式设计
2.第二范式(2NF)
给定关系模式 R及其上的函数依赖 集 F, 如果 R 的任何一个非主属性都完全 依赖于它的每一个侯选关键字,则称 R 是第二范式,简记为2NF。
回顾概念 键:由一个或几个属性组成
1、超键:能唯一标识元组的属性集。
2、候选键(码):不含有多余属性的超键。
3、主键(主码) :用户选作元组标识的一个 候选键。 4、主属性 :包含在任何一个候选键中的属性 5、非主属性 :不包含在任何一个候选键中 的属性
Courses
Cno C1 C2 C3 C4 Cname OS DS C++ DB
Teach
Cno C1 C1 C2 C3 C4 Tno T1 T4 T2 T3 T4
本章要解决的主要问题
1.怎样评价关系模式的优劣 2.怎样将关系模式分解为一组较理想的关系模式
第二节:函数依赖 数据依赖是通过一个关系中属性间值 的相等与否体现出来的数据间的相互 关系,分函数依赖和多值依赖。
→
Z
(4)、完全函数依赖和部分函数依赖
定义 : 在 R(U) 中 , 如果X→Y,并且对于 X 的 任何真子集 X’都不存在X’→Y,则称Y 完全 函数依赖于 X, 记作 X F Y ;否则,如果 X→Y,且 X 中存在一个真子集 X’ ,使得 X’→Y成立,则Y部分函数依赖于X,记作 X P Y。
设 X,Y 均 为 某 关 系 上 的 属 性 集 , 且 X→Y 1)若Y包含于X,则称X→Y为: 平凡函数依赖; 2)若Y不包含于X,则称X→Y为: 非平凡函数依赖。
(一般都指的是非平凡函数依赖)
例:设X,Y,W为关系R中的三个属性组, 属性关系如下图所示,问X→Y, X→W, W→Y各属于上述何种函数依赖。
问题:若R∈1NF,且R中所有候选码均为单属 性,则R一定是2NF吗?
结论:若R∈1NF,且R中所有 候选码均为单属性, 则R ∈ 2NF.
因为若R中所有候选码均为单属性, 就不可能存在某个非主属性部分函数 依赖于候选码,此时1NF必为2NF 。
分解为2NF后,是否都不存在前述的四种 异常问题?
关系模式的一般形式:R(U, D, DOM, F)
R ==>关系名 U ==>全部属性集合 D ==>属性所来自的域的集合 DOM==>属性向域的映象集合 F ==>属性间数据的依赖关系集合 主要讨论R (U, F)
如何设计一个合理的关系数据库模式?
例:设计一个关系数据模型以存放学生各门 课考试成绩。 有若干答案: 1)STUDENT关系:SNO SNAME COURSE关系:CNO,CNAME GRADE关系:SNO CNO GRADE 2)GRADE关系:SNO SNAME CNO GRADE COURSE关系:CNO,CNAME
∪ ∪
CT(CNO, CNAME, TNAME,BDATE,SALARY) 例1: F={ CNO→TNAME, CNO→CNAME, TNAME→SALARY,TNAME→ BDATE} 解:
存在非主属性BDATE和SALARY传递函 数依赖于码,故CT∈2NF,不是3NF.
1.第一范式(1NF) 关系模式的所有域为简单域,其元素不 可再分,即属性不能再分,是数据项而不 是属性组。
例1: A1,A2,A3,…,Ak,…,An Ak1 Ak2
例2:工资(工号,姓名,工资(基本工资,年 绩津贴,煤电补贴))
★不满足1NF的关系称为非规范化关系。 ★关系数据模型不能存储上述两个例子( 非规范化关系) ★转化方法: 1) A1,A2,A3,…,Ak1,Ak2,…,An 2)工资(工号,姓名,基本工资,津贴,奖金)
例 2:
SCT(SNO,CNO,CN,GRADE,TNAME,SALARY)
F={(SNO,CNO)→GRADE,CNO→CN, CNO→TNAME, TNAME→SALARY}
候选码: sno,cno 存在不完全依赖? 存在:cno->cn
• 插入问题
答案:非2NF 存在问题:
• 冗余度高
• 修改困难
X Y
解:X→Y X→W, W→Y 为非平凡函数依赖
为平凡函数依赖
第三节
范式
关系模式满足的确定约束条件称为范 式,根据满足约束条件的级别不同,范式 由低到高分为1NF,2NF,3NF,BCNF,4NF,5NF 等。 关系模式的规范化:把一个低一级范式的 关系模式分解为高一级范式的关系模式的 过程。
例 SCX(SNO,SNAME,AGE,SEX,CNO,CNAME,GRADE) X Y SNO → SNAME SNO → AGE SNO → SEX (SNO,CNO) → GRADE CNO → CNAME
SNO GRADE
wenku.baidu.com
(3)、自反性、增广性和传递性
设U 是关系模式R的属性集 ,F是R上成立 的只涉及到U中属性的函数依赖集,则: 自反性:若Y X U,则X→Y在R上成立 增广性:若X→Y在R上成立,且Z U,则 XZ → YZ在R上成立 传递性:若X→Y和Y→Z在R上成立,则X 在R上成立
3) GRADE关系:U={SNO SNAME CNO CNAME GRADE} F={SNO->SNAME,CNO->CNAME,SNO,CNO->GRADE} 我们称3)为泛关系模式,它把现实问题的 所有属性组成一个关系模式。
sno s1 s1 s2 s2 sname 李立 李立 丁惠 丁惠 cno cname grade c1 DB 78 c3 OS 87 c1 DB 90 c2 DS 83 c3 OS 77
分解关系
如上例设计的教学管理关系数据库模型
解:sct(sno, cno, tno, sname, grade, cname, tname)
解一:
students(sno,sname) students(sno,sname) courses (cno,tno,cname) courses (cno,cname) teachers(tno,cno, tname) teachers(tno, tname) sc (sno,cno,grade) sc (sno,cno,grade) teaching(tno,cno)
CT(CNO,CN,TNAME, SALARY)
3. 第三范式(3NF)
给定关系模式 R 及其上的函数依赖集 F, 如果 R 的任何一个非主属性都不传递函 数依赖于它的任何一个侯选码,则称 R 是 第三范式,简记为3NF。(非主属性也不部 分依赖于码) △定理:一个3NF的关系(模式)必定是2NF 的(3NF 2NF 1NF) 。
回顾例2,分解为: SC(SNO,CNO,GRADE), CT(CNO,CN,TNAME, SALARY) 在SC中,不存在前述的四种问题; 但在CT中,仍然存在着前述的四种问题. 说明2NF还不够好。原因是在CT中存在传 递依赖。
传递函数依赖
在 R(U) 中 , 如 果 X→Y, Y→Z, 并 且 Y→X, 那么称X→Z是传递函数依赖 , 即 Z 传递函数依赖于X。
例如:
学号
姓名
年龄
性别
学号—SNO 姓名—SN 年龄—age 性别—sex 课程号—CNO 课程名—CN 教师名—TN 成绩—G
学生S
M 选课sc N
成绩
课程C
课程号 课程名 教师名
例:(sno,cno) (sno,cno) cno (sno,cno)
P
F
F
F
cn tn cn g
(5)、平凡函数依赖和非平凡函数依赖
函数依赖(Functional Dependency,FD)是数 据依赖的一种,它反映属性或属性组之 间相互依存,互相制约的关系,即反映 现实世界的约束关系。
(1)、函数依赖定义
设R(U)是属性U上的一个关系 模式,X和Y均为U={A1,A2,…,An} 的子集,r为R的任一关系,如果对于 r中的任意两个元组u,v,只要有 u[X]=v[X],就有u[Y]=v[Y],则称X 函数决定Y,或称Y函数依赖于X,记 为X→Y。
• 删除问题
SCT(SNO,CNO,CN,GRADE,TNAME,SALARY)
异常原因:存在非主属性CN部分函数 依赖于侯选键(SNO,CNO) 解决的方法:是用投影分解把关系模式 SCT分解为两个关系模式 分解:SC(SNO,CNO,GRADE), CT(CNO,CN,TNAME, SALARY) 分解后得到的两个关系模式均为2NF
第五章 关系的规范化设计
函数依赖;规范化设计;数据依 教学内容: 赖的公理系统;模式分解。 1、函数依赖和多值依赖;会根 据语义找出属性间的各种依赖 关系; 2、各级范式的性质;能够判断 关系模式所符合的范式级别; 3、能够将满足低级范式的模式 转化成满足高级范式的模式。 函数依赖、范式;模式分解方法
例1:
R(U,F)U=(ABCD), F={AB→C,C→D}
解:
R中的候选码为: AB
R为: 2NF
★若给出关系模式的函数依赖集,如何 确定关系模式中的候选键(码)?
(1)如果有属性不在函数依赖集中出 现,那么它必须包含在候选码中; (2)如果有属性不在函数依赖集中任 何函数依赖的右边出现,那么它 必须包含在候选码中; (3)如果该属性或属性组能唯一标识 元组,则它就是候选码;
例:1.sno→sname,
cno→cname,
(sno,cno)→grade 2.tno→cno, sno→tname
只能根据语义来确定函数依赖性的存在与否。
(2)属性间的联系决定函数依赖关系
设X、Y均是U的子集 1.X和Y间联系是1:1,则X→Y,Y→X。 2.X和Y间联系是M:1(M>1),则X→Y。 3.X 和 Y间联系是 M:N(M,N>1) ,则 X、 Y 间不存在函数依赖。
•
删除问题
Sno S1 S1 S1 S1 S2 S3 S3 S3 S4 S4 S5 S5
Cno C1 C2 C3 C4 C1 C1 C2 C4 C1 C2 C1 C4
Tno T1 T2 T3 T4 T4 T4 T2 T4 T1 T2 T1 T4
Sname 赵民 赵民 赵民 赵民 李军 陈江 陈江 陈江 魏致 魏致 乔远 乔远
Grade 90 90 85 87 90 75 70 56 90 85 95 80
Cname Tname OS 彭 DS 杨 C++ 刘 DB 张 OS 张 OS 张 DS 杨 DB 张 OS 彭 DS 杨 OS 彭 DB 张
产生问题的原因? 属性间约束关系(即数据间的依赖关系)太强
解决问题的方法:
要求学生 掌握:
教学重点 及难点:
第五章 关系的规范化设计
第一节 第二节
第三节 第四节 第五节
问题的提出 函数依赖
范式 数据依赖的公理系统 模式的分解
第一节
概念回顾
关系模式设计问题的提出
• 关系:描述实体、属性和实体间的联系, 从形式上看,是一张二维表
• 关系模式:用来定义关系 • 关系数据库:基于关系模型的数据库,利 用关系来描述现实世界,从形式上看由一组 关系组成 • 关系数据库模式:定义这组关系的关系模 式的全体
按照一定的原则从数量众多而又相互关 联的数据中,构造出一组既能较好地反 映现实世界,而又有良好的操作性能的 关系模式。
例:设计教学管理关系数据库模型
sc
解:sct(sno, cno, tno, sname, grade, cname, tname)
关系SCT
问题分析
• 冗余度高
• • 修改困难 插入问题
解二:
Students
Sno S1 S2 S3 S4 S5 Sname 赵民 李军 陈江 魏致 乔远
Teachers
Cno T1 T2 T3 T4 Cname 彭 杨 刘 张
sc
Sno S1 S1 S1 S1 S2 S3 S3 S3 S4 S4 S5 S5 Cno C1 C2 C3 C4 C1 C1 C2 C4 C1 C2 C1 C4 Grade 90 90 85 87 90 75 70 56 90 85 95 80
泛关系:
s2 丁惠
泛关系模式中存在的问题
sno s1 s1 s2 s2 sname 李立 李立 丁惠 丁惠 cno cname grade c1 DB 78 c3 OS 87 c1 DB 90 c2 DS 83
s2 丁惠
c3
OS
77
(1)数据冗余 (3)更新异常
(2)插入异常 (4)删除异常
关系数据库设计的核心: 关系模式设计
2.第二范式(2NF)
给定关系模式 R及其上的函数依赖 集 F, 如果 R 的任何一个非主属性都完全 依赖于它的每一个侯选关键字,则称 R 是第二范式,简记为2NF。
回顾概念 键:由一个或几个属性组成
1、超键:能唯一标识元组的属性集。
2、候选键(码):不含有多余属性的超键。
3、主键(主码) :用户选作元组标识的一个 候选键。 4、主属性 :包含在任何一个候选键中的属性 5、非主属性 :不包含在任何一个候选键中 的属性
Courses
Cno C1 C2 C3 C4 Cname OS DS C++ DB
Teach
Cno C1 C1 C2 C3 C4 Tno T1 T4 T2 T3 T4
本章要解决的主要问题
1.怎样评价关系模式的优劣 2.怎样将关系模式分解为一组较理想的关系模式
第二节:函数依赖 数据依赖是通过一个关系中属性间值 的相等与否体现出来的数据间的相互 关系,分函数依赖和多值依赖。
→
Z
(4)、完全函数依赖和部分函数依赖
定义 : 在 R(U) 中 , 如果X→Y,并且对于 X 的 任何真子集 X’都不存在X’→Y,则称Y 完全 函数依赖于 X, 记作 X F Y ;否则,如果 X→Y,且 X 中存在一个真子集 X’ ,使得 X’→Y成立,则Y部分函数依赖于X,记作 X P Y。
设 X,Y 均 为 某 关 系 上 的 属 性 集 , 且 X→Y 1)若Y包含于X,则称X→Y为: 平凡函数依赖; 2)若Y不包含于X,则称X→Y为: 非平凡函数依赖。
(一般都指的是非平凡函数依赖)
例:设X,Y,W为关系R中的三个属性组, 属性关系如下图所示,问X→Y, X→W, W→Y各属于上述何种函数依赖。
问题:若R∈1NF,且R中所有候选码均为单属 性,则R一定是2NF吗?
结论:若R∈1NF,且R中所有 候选码均为单属性, 则R ∈ 2NF.
因为若R中所有候选码均为单属性, 就不可能存在某个非主属性部分函数 依赖于候选码,此时1NF必为2NF 。
分解为2NF后,是否都不存在前述的四种 异常问题?
关系模式的一般形式:R(U, D, DOM, F)
R ==>关系名 U ==>全部属性集合 D ==>属性所来自的域的集合 DOM==>属性向域的映象集合 F ==>属性间数据的依赖关系集合 主要讨论R (U, F)
如何设计一个合理的关系数据库模式?
例:设计一个关系数据模型以存放学生各门 课考试成绩。 有若干答案: 1)STUDENT关系:SNO SNAME COURSE关系:CNO,CNAME GRADE关系:SNO CNO GRADE 2)GRADE关系:SNO SNAME CNO GRADE COURSE关系:CNO,CNAME
∪ ∪
CT(CNO, CNAME, TNAME,BDATE,SALARY) 例1: F={ CNO→TNAME, CNO→CNAME, TNAME→SALARY,TNAME→ BDATE} 解:
存在非主属性BDATE和SALARY传递函 数依赖于码,故CT∈2NF,不是3NF.
1.第一范式(1NF) 关系模式的所有域为简单域,其元素不 可再分,即属性不能再分,是数据项而不 是属性组。
例1: A1,A2,A3,…,Ak,…,An Ak1 Ak2
例2:工资(工号,姓名,工资(基本工资,年 绩津贴,煤电补贴))
★不满足1NF的关系称为非规范化关系。 ★关系数据模型不能存储上述两个例子( 非规范化关系) ★转化方法: 1) A1,A2,A3,…,Ak1,Ak2,…,An 2)工资(工号,姓名,基本工资,津贴,奖金)
例 2:
SCT(SNO,CNO,CN,GRADE,TNAME,SALARY)
F={(SNO,CNO)→GRADE,CNO→CN, CNO→TNAME, TNAME→SALARY}
候选码: sno,cno 存在不完全依赖? 存在:cno->cn
• 插入问题
答案:非2NF 存在问题:
• 冗余度高
• 修改困难