数据库系统概论16范式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c110
编译原理
3
是否存在更新异常现象?
练习:设有关系模式如下: T(Sno,Cno,Cname,Tname,room,Grade) 若每门课只由一位教师讲授但一个教师可以讲授多门课程,每 位教师只在一个教室中讲课。
Sno S1 S1 S2 S2 Cno C1 C2 C1 C2 Grade 78 89 86 96 Cname 数据库 C语言 数据库 C语言 Tname 李美丽 李美丽 李美丽 李美丽 room 1234 1234 1234 1234
分解方法:将起传递作用的函数关系中的主属性(决定方)和非主 属性取出单独构成一个关系模式,再将它的决定方和关系式中 余下的属性加上主码,构成另一个关系模式。 所以,将C分解为: C1(Cno,Cname,Tname) F={Cno →Tname,Cno →Cname} L(Tname,room) F={Tname→ROOM} 则关系模式C1和L中都没有非主属性对码的传递函数依赖,因此 都属于3NF。
例:学生表 D(Sno,Sname,Sdept,Sage,Cno,Cname,Credit,Grade)
Sno(5) Sname(10) 0001 0001 0001 0001 0001 0002 张三 张三 张三 张三 张三 李四 Sdept(10) Sage(2) 计算机 计算机 计算机 计算机 计算机 物理 17 17 17 17 17 19 Cno(5) Cname(20) Credit(2) Grade(2) c101 c102 c103 c105 c110 c103 数据结构 网络安全 软件工程 数值分析 编译原理 软件工程 4 3 4 2 3 4 90 88 78 80 86 82
BCNF范式
BCNF (Boyce Codd Normal Form) 是由Boyce 和 Codd 提出的,通常认为是3NF的修正,有时也称为扩充 的第三范式。 定义3 关系模式R1NF,若对于R中的每个函数依赖 XY,且YX时,X必含有候选码,则RBCNF。 也就是说,关系模式R中,若R的每一个决定因素都包 含候选码,则RBCNF。
关系sc Sno(5) 0001 0001 0001 0001 Cname(20) 数据结构 网络安全 软件工程 数值分析 C语言 Credit(2) 4 3 4 2 4 0001 Cno(5) c101 c102 c103 c105 c110 Grade(2) 90 88 78 80 86
Biblioteka Baidu
0001 0002 0003
第三范式(3NF)
定义2 如果关系模式R满足 2NF,并且它的任何一个非 主属性都不传递函数依赖于任何候选码,则称R是第三范式 3NF, 记作R3NF。
在上一例题中,关系模式:
C (Cno,Cname,Tname,room) 其中存在非主属性room对码的传递函数依赖,即:
Cno →Tname,Tname →room,因此C不属于3NF。
S3
S3
C2
C3
46
81
C语言
英语
李美丽
李刚
1234
3422
则T表的函数依赖如下: (Sno,Cno)→Grade Cno→Tname 候选码是(Sno,Cno)
Cno→Cname Tname→room
Sno
Cno
Grade
Cname
Tname
room
在关系模式T中,非主属性Cname,Tname,room对码是部 分函数依赖,并存在传递函数依赖Cno→Tname, Tname→room。T属于1NF,但不属于2NF。
第16讲 授课主题
第6章 关系数据理论—范式
计划学 时
2
教学目的 和要求 教学重点 和难点
满足第一范式并不是一个很好的关系模式,它存在数 据冗余和异常现象,如何将关系模式规范到2NF, 3NF,BCNF 满足2NF,3NF,BCNF 的要求是什么
教学内容
1、1NF 2、2NF 3、3NF 4、BCNF
所以,一个满足BCNF的关系模式,应具有如下性质: •每个非主属性对每个码都是完全函数依赖和非传递函数依赖; •所有主属性对每个不包含它的码也是完全函数依赖;
•没有任何属性完全函数依赖于非码。
•若RBCNF,则R3NF。若R3NF,则R不一定属于BCNF。 由第三范式规范化成BCNF的方法仍然是投影分解: ST(S,T) S4 王建华 TJ(T,J) 王建华 赵颖 陈讯 数据结构(计算机) 数据结构(电子) C语言程序设计
S2 S3 S1 S2
赵颖 赵颖 陈讯 陈讯
前面所说的问题是否得到缓解呢?
模式设计示例
例1:订购的关系模式: 订购(客户名,住址,联系电话,书号,书名,作者,出版社, 社址) 该关系模式的函数依赖集: F={客户名→住址,客户名→联系电话,书号→书名,书号 → 作者,书号→出版社,出版社→社址} 订购关系的候选码是(客户名,书号)。函数依赖图如下:
该关系有没有部分函数依赖和传递函数依赖呢??
结论:STJ模式,因为没有非主属性的部分函数依赖和 传递函数依赖,所以∈3NF
S S4 S2 S3 S1
T 王建华 赵颖 赵颖 陈讯
J 数据结构(计算机) 数据结构(电子) 数据结构(电子) C语言程序设计
S2
陈讯
C语言程序设计
在这个表中,仍然存在着数据冗余、插入异常、删除异常。
第一范式(1NF)
• 第一范式(1NF):规定关系的每一个分量必须是一个 不可分的数据项。
• 关系数据模型要求所有的关系模式必须满足第一范式 的要求。这是对关系模式最起码的规范化要求。
非第一范式的例子 联系电话 姓名 单位
办公电话
住宅电话
手机号码
• 转换为第一范式 姓名 单位
办公电话
住宅电话
手机号码
关系T1 Sno Cno Grade
关系C Cno Cname Tname room
S1
S1 S2 S2
C1
C2 C1 C2
78
89 86 96
C1
C2 C3
数据库
C语言 英语
李美丽 1234
李美丽 1234 李刚 3422
S3
S3
C2
C3
46
81
• 一个关系模式仅仅满足2NF仍是不够的,如在关系模式C (Cno,Cname,Tname,room)中,仍存在着插入、删除和 修改异常问题: --新来的教师,还没有分配授课之前,教师的姓名及教室编 号都不能加到关系中; --如果要修改教室编号,必须修改与教师授课相对应的所有 元组中的教室编号,因为一位教师可能会教多门课。 • 存在上述这些问题的原因是关系模式C中存在非主属性对码的 传递函数依赖,所以要把关系模式C向第三范式转化,除去非 主属性对码的传递函数依赖。
如果关系模式仅仅满足第一范式的条件是不够的,可能会 存在数据冗余和操作异常。为了消除这些数据冗余和操作异 常,需要进行关系模式的规范化。
第二范式(2NF)
定义1: 如果关系模式R满足第一范式,且它的任何一个非主 属性都完全函数依赖于任一个候选码,则R满足第二范式 (简记为R2NF)。
是1NF但不是2NF的关系模式
sname
sdept
sage
Cname
credit
在关系模式D中,非主属性Sname,sdept,sage,Cname, credit对码是部分函数依赖。D属于1NF,但不属于2NF。
根据第二范式的定义,为消除部分函数依赖,将D关系模 式分解为s、c和sc这3个关系模式: sc(Sno,Cno,Grade) 函数依赖是: (Sno,Cno) →Grade S(sno,sname,sdept,sage)
见课件
教学过程
6.2.3-6.2.6 范式
一、规范化和范式
关系模式设计的不好,会引起插入、删除、更新异常。 在70年代,诸多专家和学者,各自研究了发生异常的类型及 防止异常的方法,使得设计关系的准则得到了改进。这些用 以防止异常发生的准则(技术)叫做规范化。规范化的关系模 式被称为范式。范式是更符合某些规则的关系模式。 关系规范化可按属性间不同的依赖程度分为第一范式、 第二范式、第三范式、Boyce-Codd范式以及第四范式。人 们对规范化的认识是有一个过程的,在1970年时已发现属 性间的函数依赖关系,从而定义了与函数依赖关系有关的第 一、第二、第三,及Boyce-Codd范式。在1976~1978年间, Fagin,Delobe以及Zanjolo发现了多值依赖关系,从而定义 了与多值依赖有关的第四范式。
三、范式级别 1NF 2NF 3NF BCNF 4NF 5NF E.F.Codd于1971年-1972年系统地提出了1NF,2NF,3NF 的概念,讨论了规范化的问题。 1974年Codd和Boyce共同提出BCNF。 1976年Fagin提出了4NF,以后又有人提出了5NF。 •其规范化的条件按上述次序越来越强。 •范式概念可以理解为符合某一种级别的关系模式的集合,关系 模式 R 为第几范式可以写成 RxNF。 •把低级范式的关系模式,通过分解转换为高一级范式的关系 模式的集合,这个过程称为关系模式的规范化设计。
二、规范化的方法——分解
研究产生异常的原因发现:如果一个关系模式中包含 两个或多个不同问题的事实,如:学生(sno,sdept、dean、 cno、grade) 。增加一行时,必须增加关于两个或多个主题 的数据,删除一行时,也必须删除关于两个或多个主题的数 据。因此,将关系规范化,就是让每个关系只有一个主题, 如果某个关系模式有多于一个的主题,就把他们分解成多个 关系(二维表),就像我们写文章,一个自然段中只有一个中 心内容。
关系c Cno(5) c101 c102 c103 c105 c107
张三 李四 王五
计算机 物理 计算机
17 19 17
0002
0002 0003
c103
c105 c107
82
80 75
是否存在冗余?
尽管增加了字段,但字节数减少 =(5+10+10+2)*3+(5+5+2)*8+(5+20 +2)*6=339
数据冗余:若选赵颖老师课的有30人,则要重复30次赵颖和数 据结构。
插入异常:有一个新老师开设了一门新的课程,在没有学生选 课的情况下,是不能插入的。
删除异常:删除s4学生时,也删除了王建华老师所教授的计算 机专业的数据结构课程。 修改复杂:课程改名,则所有选修的学生所在元组都要修改。
Boyce的新发现: 已经属于第三范式的关系模式仍会出现数据冗余、插入异 常、删除异常等问题。 原因是: T→J,但T不是码。
0002
0003
李四
王五
物理
计算机
19
17
c105
c107
数值分析
C语言
2
4
80
75
则D表的函数依赖如下: sno →sname,sno→sdept,sno→sage Cno→Cname,cno→credit (Sno,Cno)→Grade
候选码是(Sno,Cno),其函数依赖图为: Sno Cno Grade
函数依赖是:sno→sname,sno→sdept,sno→ sage
C (Cno,Cname,credit) 函数依赖是:(Cno→Cname,Cno→credit) sc、S和C都消除了非主属性对码的部分函数依赖,因此都属于 2NF。
关系s Sno(5) Sname(10) Sdept(10) Sage(2)
根据第二范式的定义,为消除部分函数依赖,将T关系模式 分解为T1和C这2个关系模式: T1(Sno,Cno,Grade) 函数依赖是: (Sno,Cno) →Grade C (Cno,Cname,Tname,room)
函数依赖是:(Cno→Cname,Cno→Tname,Tname →room)
T1和C都消除了非主属性对码的部分函数依赖,因此都属于 2NF。
至此,关系模式T分解为下列3个属于3NF的一组关系模 式: T1(Sno,Cno,Grade) C1(Cno,Cname,Tname) L (Tname,room) 和关系模式T相比,这些关系模式是对现实世界更加精确 的描述。把这3个关系进行连接,总能重构初始的关系。
第三范式还有问题吗??? 例:关系模式STJ(S学生,T教师,J课程),其包含的语义是: 每位教师只教一门课程;每门课程由一位教师讲授,存在课程 名相同而由不同的教师开设的情况;学生选课的同时,可以确 定是由哪位老师来教。 根据语义存在的函数依赖?F={T→J ,ST→J,SJ→T}。 该关系属于第几范式? 此关系的码是:ST或SJ