第关系数据理论
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
F={ 教师→课程,(学生,课程)→教师,(学生, 教师)→课程 }
该关系的候选码为(学生,课程)或(学生,教 师), 该关系一定是3NF的。 但由于决定因素教师没包 含码,该关系不属于BCNF。假设有100名学生选课,存 在冗余(教师,课程),可分解为:
教师(教师,课程)
学生(学生,教师)
第25页/共81页
或者说,属性X函数决定属性Y,记作X→Y。 其中X称为这 个函数依赖的决定属性组,也称为决定因素,Y称为被决 定因素。
此定义可简单表述为: 如果属性X的值决定属性Y的值,那么属性Y函数依赖于 属性X。 换一种说法是,如果知道X的值,就可以获得Y的值。
第4页/共81页
术语和记号
Sno
sname sage spno cno cname
因此引出下面的定义:
第10页/共81页
定义6.3 传递函数依赖
在R(U )中,如果 X Y , (Y X ),Y X ,Y Z ,
传递
则称Z对X传递函数依赖,记作: X Z。
为什么要加上条件Y X ?
若不添加,则XY,变成
直接
X Z
第11页/共81页
问题:主码从函数依赖的角度,如何定义?
若X Y,Y X ,记作X Y。 若Y不函数依赖于X ,则记作X Y。
第6页/共81页
在前面关系中,存在哪些函数依赖?
Sno
sname sage spno cno
cname
mark
(Sno,cno)mark Snosname,Snosage,Snospno Cnocname 有没有其他函数依赖关系?
称
R U, F 3NF
即若R是3NF,则在关系中每一个非码属性既不部分函数 依赖于码也不传递依赖于码。因此:
S_L Sno Sdept Sloc
S_D Sno Sdept
D_L Sdept Sloc
分解后的两个关系是否满足3NF,分解的原则是什么?
第18页/共81页
若关系不满足3NF,则分解关系去掉传递函数依赖关系, 使分解后的各个关系满足3NF。
课程C 物理 数学
教员T 李勇 王军
李勇 张平
参考书B
普通物理学 光学原理 物理习题集
数学分析 微分方程 高等代数
什么是函数依赖,该数 据中,各个属性间存在 函数依赖吗?
计算数学 …
张平 周峰
…
数学分析 …
… 第28页/共81页
它们之间的关系应 该是怎样的?
写成规范化形式如下:
课程C
物理 物理 物理 物理 物理 物理 数学 数学 数学 数学 数学 数学
第13页/共81页
6.2范式
• 第1范式的内容是什么? • 主码与其他非码属性的关系应该是怎样的? • 考虑如下关系,(Sno,Cno)为码。
Sno(学号) Sdept(院系) Sloc(宿舍) Cno(课程号) Grade(成绩)
该关系中存在哪些完全函数依赖关系和部分函数依赖
关系?
F
(Sno,Cno) Grade
cname
结论:表之所以存在前面的问题是因为它的 非码属性之间存在函数依赖,即非码属性部 分函数依赖于码,如何解决?
第9页/共81页
考查下面关系:
Sno(学号) Sdept(学生所在院系)
Mname(系负责人)
存在哪些完全函数依赖关系,特点是什么? SnoSdept,SdeptMname SnoMname 问题:SdeptSno是否成立?
小结: •2NF的定义:强调完全函数依赖。 •3NF的定义:强调不存在传递函数依赖。 •BCNF的定义:强调只有码才可以是决定因素。
它们之间的关系如何?
第26页/共81页
关系是 • 2NF,不能保证是3NF和BCNF; • 3NF,能保证是2NF,但不能保证是BCNF; • BCNF,能保证是2NF和3NF。 关系如下:
F
X Y
若XY,但Y不完全函数依赖于X,则称Y对X部分函数 依赖,记作:
P
X Y
问题:
第8页/共81页
下列关系中有哪些完全函数依赖关系,有哪些部分函数 依赖关系?
Sno
sname sage spno cno
cname
mark
Sno
sname sage spno cno
Sno
cno
mark
分解后是否存在部分函数依赖?
从另一个角度讲,一旦确定了学号的值或课程号的值就可以知道 相应的其他信息,如姓名,年龄,课程名称。
我们说姓名或年龄函数依赖于学号,课程名称函数依赖于课程 号。
在前面的关系中还有那些依赖关系?
函数依赖的定义:
第3页/共81页
定义6.1 函数依赖
所谓函数依赖是指在关系R(型)中,X、 Y为R的两个属性或 属性组,如果对于R的所有关系r(记录)都存在: 对于X的每 一个具体值,Y都只有一个具体值与之对应,则称属性Y函数 依赖于属性X。
但是如果R∈3NF,R未必属于BCNF。 3NF比BCNF放宽 了一个限制,即允许决定因素不包含码。 请看下面两个 例子:
第23页/共81页
例 1: 通讯(城市名,街道名 ,邮政编码) 该关系的码是(城市名,街道名),根据语义其函
数依赖集为: F={(城市名,街道名)→邮政编码,邮政编码→城市名} 所以非主属性邮政编码完全函数依赖于码,且无
sname和sage是否函数依赖于(Sno,cno),还函数依赖于哪个属性, 这个属性与(Sno,cno)的关系是什么?
是,sno,包含与被包含的关系。
第7页/共81页
因此
定义6.2 完全函数依赖与部分函数依赖
在R(U)中,如果XY,并且对于X的任何一个真子集X’,
都有
X'Y
则称Y对X完全函数依赖,记作
Customer-name Loan-number
实质是非主属性含有决定因素,如Loan-number。分解后 去掉了非主属性的决定因素。
第20页/共81页
定义6.8
关系模式R<U,F> 1NF。若XY且Y X 时X必含
有码,则称
R U, F BCNF
X必含有码的含义是什么,请举例?
由BCNF的定义可以得到以下推论: 如果R∈BCNF,则 •R中所有非主属性对每一个码都是完全函数依赖;
BCNF与3NF的关系是什么?
第22页/共81页
定理: 如果R∈BCNF,则R∈3NF一定成立。
证明: 用反证法。 如果R∈BCNF,但不是3NF,则R中一定存在传递函数依赖。 即R中必定存在候选码X,
非主属性A,属性组Y,其中A X,A Y, X→Y,使得X→Y→A成立。 Y不是R的码,但Y是R的 决定因素(Y→A),根据BCNF的定义,R不是BCNF,与假设相矛盾。 所以假设不成立。
…
教员T
李勇 李勇 李勇 王军 王军 王军 李勇 李勇 李勇 王平 王平 王平
…
参考书B
普通物理学 光学原理 物理习题集 光学原理 普通物理学
物理习题集 数学分析 微分方程 高等代数 数学分析 微分方程 高等代数
…
在这个关系中码是 什么?
Sno(学号) Sdept(院系) Sloc(宿舍) Cno(课程号) Grade(成绩)
S_L
Sno Sdept Sloc
S_C
Sno
Cno
Grade
分解后的各个关系是否满足2NF,分解的原则是什么?
第16页/共81页
若关系中存在非主属性部分函数依赖于主码(不满足2NF), 则修改关系去掉这些部分函数依赖关系,一般做法就是 分解关系成为多个关系,使它们满足2NF。 考虑一下,分解后的关系S_L的特性?
3、若有一个学生选修个多门课程,现在他要调宿舍, 需要怎样修改表中的记录?
需要修改多个记录——修改复杂
4、假设有一个学生选修了多门课程,需要怎样添加
记录?
Sdept和Sloc多次填写——冗余大
第15页/共81页
如何解决
定义6.6
若关系R1NF,且每个非主属性完全函数依赖 于码,则R 2NF。
前面的关系是否满足2NF,若不满足该如何修改使它满 足2NF?
银行系统现有关系如下:分行,客户,借贷编号,如何构 造一个关系,体现3者的联系。
Branch-name Customer-name Loan-number
(分行)
(客户)
(借贷编号)
该关系哪些属性是码,是否满足2NF,是否满足3NF?
(Branch-name, Customer-name)是码,非主属性完全依赖于 码,其没有传递依赖,故满足2NF和3NF,但是若借 贷编号是为每个分行的不同金额的借贷业务编的号, 则有没有数据冗余?
2NF 3NF
BCNF
一个关系模式如果达到了 BCNF,那么在函数依赖范 围内,它已实现了彻底的分 离,消除了数据冗余、 插入 和删除异常。
第27页/共81页
现有例子如下:
学校中某一门课程由多个教员讲授,他们使用相同的一套参考书。 每个教员可以讲授多门课程,每种参考书可以供多门课程使用, 非规范化数据如下:
1、在表中每添加一个选课记录(元组),需要添加的信息包括哪 些,这些数据有什么特点?
学生的姓名,年龄和课程名称也需要添加,同一个学生或同一 门课程在多次添加选课记录时,重复太大——存在的冗余大。
2、假设“刘洋”同学的姓名改为“刘杨”,应该怎样操作?
需要修改每一个与“刘洋”有关的记录。——更新异常。
3、假设新增一门新课,还没有学生选修,如何在数据库中体现
定义6.4 主码
设K为R U , F 中的属性或属性组合,
F
若K U则K为R的候选码。当候选码多 于一个时,则选择其中一个作为主码。
ቤተ መጻሕፍቲ ባይዱ
第12页/共81页
函数依赖小结
• 函数依赖 • 非平凡的函数依赖 • 完全函数依赖 • 部分函数依赖 • 传递函数依赖
在关系(表)的“合理”化过程中如何使用函数依赖?
P
Sno Sdept, (Sno,Cno) Sdept
P
Sno Sloc, (Sno,Cno) Sloc
第14页/共81页
1、若要添加一个学生,他还没有选课,会出现怎样 的现象? 主码不全,添加出错,——插入异常
2、假设有一门课程C3只有某一个学生(如S6)选了,现 在该学生退学了,需要删除他的信息,在删除时会发 生怎样的现象? 将课程的信息也删除了——删除异常
出?
无法体现出——插入异常
4、假设有一部分同学毕业了,需要删除他们的记录,会发生怎 样的情况?
可能将课程的信息丢失了。——删除异常
若使用合并前的表,是否也会出现上述现象?因此…
第2页/共81页
合并后的表,它的结构不合理,原因分析:
1、学号,姓名,年龄,专业编号4个属性,从常识上讲只要知道 学号,其他3个属性便可得知,同理可知,知道了课程号就可以 知道课程的名称。
S_L
Sno Sdept Sloc
Sno Sdept, (Sdept Sno),Sdept Sloc
传递
可得:Sno Sloc
在添加学生的记录时,需要添加哪些属性,哪些是冗余 的,应该如何修改?
第17页/共81页
定义6.7
关系模式R<U,F>中若不存在这样的码X,属性组Y及
非主属性Z( Z Y)使得XY,YZ成立,YX,则
第19页/共81页
有
既然每个分行为不同金额的借贷业务编了号,
Loan-number和Brach-name属性存在重复,且Loan-number不是码。 因此对上述关系作如下修改:
Branch-name Customer-name Loan-number
(分行)
(客户)
(借贷编号)
Loan-number Branch-name Amount
传递依赖,属于3NF。 但邮政编码也是一个决定因素,它 没有包含码,所以该关系不属于BCNF。存在冗余(城市 名, 邮政编码) ,可以作如下分解:
(城市名, 邮政编码)
(街道名 ,邮政编码)
第24页/共81页
例 2 授课(学生,教师,课程)
假设该校规定: 一个教师只能教一门课,每门课 可由多个教师讲授。 学生一旦选定某门课,教师就相应 地固定。 根据语义关系的函数依赖集为:
mark
在该关系中下列函数依赖是否成立? 1、Snosname
2、(Sno,cno)sno
两者有什么不同?
X Y ,但Y X则称X Y是非平凡的函数依赖 X Y ,但Y X则称X Y是平凡的函数依赖
第5页/共81页
问题:什么时候存在平凡的函数依赖? 对于任何一个关系模式,平凡函数依赖都必然成立, 因此,若不做特别说明,函数依赖总是指非平凡的 函数依赖。
• 若不是,会得出什么结论?
非主属性起决定作用,与定义矛盾。
第21页/共81页
•R中所有主属性对每一个不包含它的码,都是完全函数依赖——关系有多个候选码的情况;
——反之,会怎样?
非主属性起决定作用,与定义矛盾。
•R中没有任何属性完全函数依赖于非码的任何一组属性。
—反之,会怎样? 非主属性起决定作用,与定义矛盾。
该关系的候选码为(学生,课程)或(学生,教 师), 该关系一定是3NF的。 但由于决定因素教师没包 含码,该关系不属于BCNF。假设有100名学生选课,存 在冗余(教师,课程),可分解为:
教师(教师,课程)
学生(学生,教师)
第25页/共81页
或者说,属性X函数决定属性Y,记作X→Y。 其中X称为这 个函数依赖的决定属性组,也称为决定因素,Y称为被决 定因素。
此定义可简单表述为: 如果属性X的值决定属性Y的值,那么属性Y函数依赖于 属性X。 换一种说法是,如果知道X的值,就可以获得Y的值。
第4页/共81页
术语和记号
Sno
sname sage spno cno cname
因此引出下面的定义:
第10页/共81页
定义6.3 传递函数依赖
在R(U )中,如果 X Y , (Y X ),Y X ,Y Z ,
传递
则称Z对X传递函数依赖,记作: X Z。
为什么要加上条件Y X ?
若不添加,则XY,变成
直接
X Z
第11页/共81页
问题:主码从函数依赖的角度,如何定义?
若X Y,Y X ,记作X Y。 若Y不函数依赖于X ,则记作X Y。
第6页/共81页
在前面关系中,存在哪些函数依赖?
Sno
sname sage spno cno
cname
mark
(Sno,cno)mark Snosname,Snosage,Snospno Cnocname 有没有其他函数依赖关系?
称
R U, F 3NF
即若R是3NF,则在关系中每一个非码属性既不部分函数 依赖于码也不传递依赖于码。因此:
S_L Sno Sdept Sloc
S_D Sno Sdept
D_L Sdept Sloc
分解后的两个关系是否满足3NF,分解的原则是什么?
第18页/共81页
若关系不满足3NF,则分解关系去掉传递函数依赖关系, 使分解后的各个关系满足3NF。
课程C 物理 数学
教员T 李勇 王军
李勇 张平
参考书B
普通物理学 光学原理 物理习题集
数学分析 微分方程 高等代数
什么是函数依赖,该数 据中,各个属性间存在 函数依赖吗?
计算数学 …
张平 周峰
…
数学分析 …
… 第28页/共81页
它们之间的关系应 该是怎样的?
写成规范化形式如下:
课程C
物理 物理 物理 物理 物理 物理 数学 数学 数学 数学 数学 数学
第13页/共81页
6.2范式
• 第1范式的内容是什么? • 主码与其他非码属性的关系应该是怎样的? • 考虑如下关系,(Sno,Cno)为码。
Sno(学号) Sdept(院系) Sloc(宿舍) Cno(课程号) Grade(成绩)
该关系中存在哪些完全函数依赖关系和部分函数依赖
关系?
F
(Sno,Cno) Grade
cname
结论:表之所以存在前面的问题是因为它的 非码属性之间存在函数依赖,即非码属性部 分函数依赖于码,如何解决?
第9页/共81页
考查下面关系:
Sno(学号) Sdept(学生所在院系)
Mname(系负责人)
存在哪些完全函数依赖关系,特点是什么? SnoSdept,SdeptMname SnoMname 问题:SdeptSno是否成立?
小结: •2NF的定义:强调完全函数依赖。 •3NF的定义:强调不存在传递函数依赖。 •BCNF的定义:强调只有码才可以是决定因素。
它们之间的关系如何?
第26页/共81页
关系是 • 2NF,不能保证是3NF和BCNF; • 3NF,能保证是2NF,但不能保证是BCNF; • BCNF,能保证是2NF和3NF。 关系如下:
F
X Y
若XY,但Y不完全函数依赖于X,则称Y对X部分函数 依赖,记作:
P
X Y
问题:
第8页/共81页
下列关系中有哪些完全函数依赖关系,有哪些部分函数 依赖关系?
Sno
sname sage spno cno
cname
mark
Sno
sname sage spno cno
Sno
cno
mark
分解后是否存在部分函数依赖?
从另一个角度讲,一旦确定了学号的值或课程号的值就可以知道 相应的其他信息,如姓名,年龄,课程名称。
我们说姓名或年龄函数依赖于学号,课程名称函数依赖于课程 号。
在前面的关系中还有那些依赖关系?
函数依赖的定义:
第3页/共81页
定义6.1 函数依赖
所谓函数依赖是指在关系R(型)中,X、 Y为R的两个属性或 属性组,如果对于R的所有关系r(记录)都存在: 对于X的每 一个具体值,Y都只有一个具体值与之对应,则称属性Y函数 依赖于属性X。
但是如果R∈3NF,R未必属于BCNF。 3NF比BCNF放宽 了一个限制,即允许决定因素不包含码。 请看下面两个 例子:
第23页/共81页
例 1: 通讯(城市名,街道名 ,邮政编码) 该关系的码是(城市名,街道名),根据语义其函
数依赖集为: F={(城市名,街道名)→邮政编码,邮政编码→城市名} 所以非主属性邮政编码完全函数依赖于码,且无
sname和sage是否函数依赖于(Sno,cno),还函数依赖于哪个属性, 这个属性与(Sno,cno)的关系是什么?
是,sno,包含与被包含的关系。
第7页/共81页
因此
定义6.2 完全函数依赖与部分函数依赖
在R(U)中,如果XY,并且对于X的任何一个真子集X’,
都有
X'Y
则称Y对X完全函数依赖,记作
Customer-name Loan-number
实质是非主属性含有决定因素,如Loan-number。分解后 去掉了非主属性的决定因素。
第20页/共81页
定义6.8
关系模式R<U,F> 1NF。若XY且Y X 时X必含
有码,则称
R U, F BCNF
X必含有码的含义是什么,请举例?
由BCNF的定义可以得到以下推论: 如果R∈BCNF,则 •R中所有非主属性对每一个码都是完全函数依赖;
BCNF与3NF的关系是什么?
第22页/共81页
定理: 如果R∈BCNF,则R∈3NF一定成立。
证明: 用反证法。 如果R∈BCNF,但不是3NF,则R中一定存在传递函数依赖。 即R中必定存在候选码X,
非主属性A,属性组Y,其中A X,A Y, X→Y,使得X→Y→A成立。 Y不是R的码,但Y是R的 决定因素(Y→A),根据BCNF的定义,R不是BCNF,与假设相矛盾。 所以假设不成立。
…
教员T
李勇 李勇 李勇 王军 王军 王军 李勇 李勇 李勇 王平 王平 王平
…
参考书B
普通物理学 光学原理 物理习题集 光学原理 普通物理学
物理习题集 数学分析 微分方程 高等代数 数学分析 微分方程 高等代数
…
在这个关系中码是 什么?
Sno(学号) Sdept(院系) Sloc(宿舍) Cno(课程号) Grade(成绩)
S_L
Sno Sdept Sloc
S_C
Sno
Cno
Grade
分解后的各个关系是否满足2NF,分解的原则是什么?
第16页/共81页
若关系中存在非主属性部分函数依赖于主码(不满足2NF), 则修改关系去掉这些部分函数依赖关系,一般做法就是 分解关系成为多个关系,使它们满足2NF。 考虑一下,分解后的关系S_L的特性?
3、若有一个学生选修个多门课程,现在他要调宿舍, 需要怎样修改表中的记录?
需要修改多个记录——修改复杂
4、假设有一个学生选修了多门课程,需要怎样添加
记录?
Sdept和Sloc多次填写——冗余大
第15页/共81页
如何解决
定义6.6
若关系R1NF,且每个非主属性完全函数依赖 于码,则R 2NF。
前面的关系是否满足2NF,若不满足该如何修改使它满 足2NF?
银行系统现有关系如下:分行,客户,借贷编号,如何构 造一个关系,体现3者的联系。
Branch-name Customer-name Loan-number
(分行)
(客户)
(借贷编号)
该关系哪些属性是码,是否满足2NF,是否满足3NF?
(Branch-name, Customer-name)是码,非主属性完全依赖于 码,其没有传递依赖,故满足2NF和3NF,但是若借 贷编号是为每个分行的不同金额的借贷业务编的号, 则有没有数据冗余?
2NF 3NF
BCNF
一个关系模式如果达到了 BCNF,那么在函数依赖范 围内,它已实现了彻底的分 离,消除了数据冗余、 插入 和删除异常。
第27页/共81页
现有例子如下:
学校中某一门课程由多个教员讲授,他们使用相同的一套参考书。 每个教员可以讲授多门课程,每种参考书可以供多门课程使用, 非规范化数据如下:
1、在表中每添加一个选课记录(元组),需要添加的信息包括哪 些,这些数据有什么特点?
学生的姓名,年龄和课程名称也需要添加,同一个学生或同一 门课程在多次添加选课记录时,重复太大——存在的冗余大。
2、假设“刘洋”同学的姓名改为“刘杨”,应该怎样操作?
需要修改每一个与“刘洋”有关的记录。——更新异常。
3、假设新增一门新课,还没有学生选修,如何在数据库中体现
定义6.4 主码
设K为R U , F 中的属性或属性组合,
F
若K U则K为R的候选码。当候选码多 于一个时,则选择其中一个作为主码。
ቤተ መጻሕፍቲ ባይዱ
第12页/共81页
函数依赖小结
• 函数依赖 • 非平凡的函数依赖 • 完全函数依赖 • 部分函数依赖 • 传递函数依赖
在关系(表)的“合理”化过程中如何使用函数依赖?
P
Sno Sdept, (Sno,Cno) Sdept
P
Sno Sloc, (Sno,Cno) Sloc
第14页/共81页
1、若要添加一个学生,他还没有选课,会出现怎样 的现象? 主码不全,添加出错,——插入异常
2、假设有一门课程C3只有某一个学生(如S6)选了,现 在该学生退学了,需要删除他的信息,在删除时会发 生怎样的现象? 将课程的信息也删除了——删除异常
出?
无法体现出——插入异常
4、假设有一部分同学毕业了,需要删除他们的记录,会发生怎 样的情况?
可能将课程的信息丢失了。——删除异常
若使用合并前的表,是否也会出现上述现象?因此…
第2页/共81页
合并后的表,它的结构不合理,原因分析:
1、学号,姓名,年龄,专业编号4个属性,从常识上讲只要知道 学号,其他3个属性便可得知,同理可知,知道了课程号就可以 知道课程的名称。
S_L
Sno Sdept Sloc
Sno Sdept, (Sdept Sno),Sdept Sloc
传递
可得:Sno Sloc
在添加学生的记录时,需要添加哪些属性,哪些是冗余 的,应该如何修改?
第17页/共81页
定义6.7
关系模式R<U,F>中若不存在这样的码X,属性组Y及
非主属性Z( Z Y)使得XY,YZ成立,YX,则
第19页/共81页
有
既然每个分行为不同金额的借贷业务编了号,
Loan-number和Brach-name属性存在重复,且Loan-number不是码。 因此对上述关系作如下修改:
Branch-name Customer-name Loan-number
(分行)
(客户)
(借贷编号)
Loan-number Branch-name Amount
传递依赖,属于3NF。 但邮政编码也是一个决定因素,它 没有包含码,所以该关系不属于BCNF。存在冗余(城市 名, 邮政编码) ,可以作如下分解:
(城市名, 邮政编码)
(街道名 ,邮政编码)
第24页/共81页
例 2 授课(学生,教师,课程)
假设该校规定: 一个教师只能教一门课,每门课 可由多个教师讲授。 学生一旦选定某门课,教师就相应 地固定。 根据语义关系的函数依赖集为:
mark
在该关系中下列函数依赖是否成立? 1、Snosname
2、(Sno,cno)sno
两者有什么不同?
X Y ,但Y X则称X Y是非平凡的函数依赖 X Y ,但Y X则称X Y是平凡的函数依赖
第5页/共81页
问题:什么时候存在平凡的函数依赖? 对于任何一个关系模式,平凡函数依赖都必然成立, 因此,若不做特别说明,函数依赖总是指非平凡的 函数依赖。
• 若不是,会得出什么结论?
非主属性起决定作用,与定义矛盾。
第21页/共81页
•R中所有主属性对每一个不包含它的码,都是完全函数依赖——关系有多个候选码的情况;
——反之,会怎样?
非主属性起决定作用,与定义矛盾。
•R中没有任何属性完全函数依赖于非码的任何一组属性。
—反之,会怎样? 非主属性起决定作用,与定义矛盾。