关系数据库理论

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

(1)数据冗余。当一个学生选修多门课程,或不同学生选修同一门 课,就会出现相同的属性值多次重复存储,造成数据冗余。
6
关系模式S存在问题:
学生选课关系表S
NO S0102 S0102 S0102 S0108 S0121 NAME 王华 王华 王华 李丽 王红 SEX 女 女 女 女 女 CNO C101 C108 C206 C206 C206 CNAME 软件工程 C语言 数据库原理 数据库原理 数据库原理 与应用 DEGR 90 84 92 86 70
C101 C108 C206 C206 C206
CNAME
软件工程 C语言 数据库原理 与应用 数据库原理 与应用 数据库原理 与应用
DEGR
90 84 92 86 70
(3)插入异常。如果某个学生未选修课程,则其NO、NAME、 SEX属性值无法插入。因为CNO为空,关系模型规定主码不能为 空或部分为空。 如(S0110,陈强,男,null,null,null)。
在学生选课关系S(NO,NAME,SEX,CNO,CNAME,DEGR)中,各属性之间都存在依赖关系。 由于一个NO只对应一个学生,所以当NO的值确定之后,NAME、SEX的值也随 之被唯一的确定了,有NO→NAME,NO→SEX,即不存在一个学生有不同的姓名, 或有不同的性别。
一个NO有多个DEGR值与其对应,因此DEGR不能被NO唯一地确定,即DEGR不能 函数依赖于NO。但是DEGR可以被(NO,CNO)唯一地确定,一个学生选修了某 门课程,则有唯一的成绩,当NO和CNO的值确定之后,DEGR的值也随之被唯一 的确定了,有(NO,CNO)→DEGR,即不存在一个学生选修某门课程,有一个 以上的成绩DEGR。同理,CNO→CNAME。
S(NO,NAME,SEX,CNO,CNAME,DEGR)函数依赖集F F={NO→NAME,NO→SEX, CNO→CNAME,(NO,CNO)→DEGR}
13
NAME
NO
CNO
DEGR
SEX
CNAME 函数依赖
14
定义2:设X→Y是一个函数依赖,若Y⊆X,则称X→Y是 一个平凡函数依赖。如果Y不是X的子集(Y⊈X) ,则称 X→Y为非平凡的函数依赖。 若不特别声明,我们讨论的都是非平凡的函数依赖。 例如:在4.1节中介绍的学生选课关系中,有 (NO,CNO)→NO,(NO,CNO)→CNO,这些都是平凡函数 依赖。而NO→NAME,NO→SEX,CNO→CNAME,
(NO,CNO)→DEGR,这些都是非平凡函数依赖。
15
定义3:设X→Y是一个函数依赖,并且对于任何X’⊂X, X’→Y都不成立(记为X’↛Y),则称X→Y是一个完全函数 f 依赖。即Y函数依赖于整个X,记作X→Y。 例如: 在前面的学生选课关系中,有(NO,CNO)→DEGR,但是 NO→DEGR和CNO→DEGR均不成立,即学生学号NO或课程 号CNO都不能唯一确定一个学生的成绩DEGR。所以 (NO,CNO)→DEGR是完全函数依赖关系,记为: f (NO,CNO)→DEGR
19
由于函数依赖与属性之间的关系有关,所以在确定 属性间的函数依赖关系时,可以从分析属性间的关系入 手,便可确定属性间的函数依赖。
18
4.2.2 函数依赖与属性关系
属性之间有3种关系,但并不是每一种属性关系中都存在函数依 赖。设R(U)是属性集U上的关系模式,X,Y是U的子集: (1)如果X和Y之间是1:1关系(一对一关系),则存在函数依赖 X→Y,Y→X。 例如,当学生无重名时,NO和NAME之间是1:1关 系,所以有NO→NAME,NAME→NO。 (2)如果X和Y之间是1:n关系(一对多关系),则存在函数依赖 Y→X。其中Y是“多”方,X是“一”方。 例如,NO与NAME, NO与SEX之间均为1:n关系,所以有NO→NAME,NO→SEX。 (3)如果X和Y之间是m:n关系(多对多关系),则X和Y之间不存 在函数依赖。例如,一个学生可以选修多门课程,一门课程又可以 为多个学生选修,所以NO与CNO之间不存在函数依赖关系。
定义4:设X→Y是一个函数依赖,但不是完全函数依赖, 则称X→Y是一个部分函数依赖,或称Y函数依赖于X p 的某个真子集,记作X→Y。 例如:在4.1节学生选课关系中,有(NO,CNO)→NAME, 而对于每个学生都有唯一的NO值,所以有NO→NAME。 因此(NO,CNO)→NAME是部分函数依赖。记为: p (NO,CNO)→NAME 。 (NO,CNO)→CNO是平凡函数依赖,也是部分函数依赖, p 记作(NO,CNO)→CNO 。
第4章
关系数据库理论
1
主 要 内 容
问题的提出
函数依赖
范式和规范化
关系模式的分解
2
学习要求
(1)理解各种函数依赖的概念。掌握Armstrong公理的 推理规则和有关推论,并会应用其进行函数依赖的证明。 (2)理解F的闭包、属性集X关于F的属性闭包的概念, 重点掌握属性集X关于F的属性闭包的计算方法。 (3)理解第一范式、第二范式、第三范式、BC范式的 定义。 (4)重点掌握关系模式无损分解的测试算法,能运用无 损分解的测试方法判断一个关系模式的分解是否具有无 损分解。 (5)了解保持函数依赖性的分解的定义。
17
定义5:设R(U)是一个关系模式,X、Y、Z⊆U,如 果X→Y(Y⊈X,Y↛X),Y→Z成立,则称Z传递函 t 数依赖于X,记为X→Z。
例如:有以下班级关系: 班级(班号,专业名,系名,人数,入学年份) 语义描述:每个班都属于某一专业,一个专业有多个班;每个班 的人数是确定的;每个班的入学时间是固定的。每个专业都属于 某个系,每个系有多个专业。其中:每个班的班号是唯一的,因 此班号是主码。 经分析:班号→专业名,班号→人数,班号→入学年份, 专业名→系名。 因为:班号→专业名,专业名↛班号,专业名→系名, t 所以:班号→系名。
NO
S0102 S0102 S0102
S0102
S0108
S0121
李丽
王红


CNO
C101 C108 C206 C206
DEGR
90 84 92 86
课程关系S3
CNO C101 C108 C206 CNAME 软件工程 C语言 数据库原理与应用
S0108
S0121
C206
70
分解后的关系模式是好的关系模式,它具有以下四个特点:尽可能少的数据冗 10 余;没有插入异常;没有删除异常;没有更新异常。
为什么将关系S分解为关系S1 、S2 和S3 后,所有异常问题 就解决了呢? 这是因为S关系中的某些属性之间存在数据依赖。数据 依赖是现实世界事物之间的相互关联性的一种表达,是
属性的固有语义的体现。数据库模式的好坏和关系中各 属性间的依赖关系有关。现在人们已经提出了许多类型 的数据依赖,其中最重要的是函数依赖(FD)。
什么是好的关系模式?某些不好的关系模式可能导致 哪些问题?
4
例1 假定有学生选课关系模式S: S(NO,NAME,SEX,CNO,CNAME,DEGR) 学生表(学号,姓名,性别,课程号,课程名,成绩),主码为学号,课程号。 根据实际情况,这些数据有如下语义规定: (1)一个学生可以选修多门功课,每门课程可有若干学生选修; (2)每个学生学习每门课程有一个成绩。 在此关系模式中填入一部分具体的数据,则可得到S关系模式的实例

学生选课关系表S
NO S0102 S0102 S0102 S0108 S0121 NAME 王华 王华 王华 李丽 王红 SEX 男 男 男 女 女 CNO C101 C108 C206 C206 C206 CNAME 软件工程 C语言 数据库原理 与应用 数据库原理 与应用 数据库原理 与应用 DEGR 90 84 92 86 70
例如:在职工关系中,职工号是唯一的,不存在职工号相同,而 姓名不同的职工元组,因此,在职工关系中有:职工号→姓名。
12
学生选课关系表S
NO S0102 S0102 S0102 S0108 S0121 NAME 王华 王华 王华 李丽 王红 SEX 男 男 男 女 女 CNO C101 C108 C206 C206 C206 CNAME 软件工程 C语言 数据库原理 与应用 数据库原理 与应用 数据库原理 与应用 DEGR 90 84 92 86 70
(4)删除异常。当要删除某个学生所选的课程及成绩时,由于课程 号不能为空,因此,该学生所有NO、NAME、SEX属性值也都被 删除了,若该学生选课信息只有一条,则会出现该学生信息丢失。
9
学生选课关系表S
NO S0102 S0102 S0102 S0108 S0121 NAME 王华 王华 王华 李丽 王红 SEX 男 男 男 女 女 CNO C101 C108 C206 C206 C206 CNAME 软件工程 C语言 数据库原理 与应用 数据库原理 与应用 数据库原理 与应用 DEGR 90 84 92 86 70
5
关系模式S存在问题:
学生选课关系表S
NO S0102 S0102 S0102 S0108 S0121 NAME 王华 王华 王华 李丽 王红 SEX 男 男 男 女 女 CNO C101 C108 C206 C206 C206 CNAME 软件工程 C语言 数据库原理 与应用 数据库原理 与应用 数据库原理 与应用 DEGR 90 84 92 86 70
3
4.1 问题的提出
关系数据库设计的问题可以简单地描述为:如果要把 一组数据存储在数据库中,如何为这些数据设计一个合 适的逻辑结构,即关系数据库模式的设计。 一个好的关系数据库模式应该由多个关系模式组成, 而每一个关系模式又包括多个属性。如何设计这些关系 模式以及关系模式中的属性,这属于关系数据库的设计 问题,这些工作决定了整个系统运行的效率,必须在关 系数据库的规范化理论的指导下完成。
8
关系模式S存在问题:
学生选课关系表S
NO S0102 S0102 S0102 S0108 S0121 NAME 王华 王华 王华 李丽 王红 SEX 男 男 男 女 女 CNO C101 C108 C206 C206 C206 CNAME 软件工程 C语言 数据库原理 与应用 数据库原理 与应用 数据库原理 与应用 DEGR 90 84 92 86 70
NO S0102 S0102 S0102 S0108 S0121 NAME 王华 王华 王华 李丽 王红 SEX 男 男 男 女 女 CNO C101 C108 C206 C206 C206 CNAME 软件工程 C语言 数据库原理 与应用 数据库原理 与应用 数据库原理 与应用 DEGR 90 84 92 86 70
11
4.2
4.2.1 函数依赖的定义
函数依赖
定义1:设R(U)是属性集U上的关系模式。X、Y是U的 子集。若对于R(U)的任意一个可能的关系r,r中不可 能存在两个元组在X上的属性值相等,而在Y上的属性 值不等,则称X函数确定Y或Y函数依赖于X,记作 X→Y。其中,X为决定因素,Y为依赖因素。当Y不函 数依赖于X时,记作:X↛Y。
学生关系表S
NO S0102 S0102 S0102 S0108 S0121 NAME 王华 王华 王华 李丽 王红 SEX 男 男 男 女 女 CNO C101 C108 C206 C206 C206 CNAME 软件工程 C语言 数据库原理 与应用 数据库原理 与应用 数据库原理 与应用 DEGR 90 84 92 86 70
(2)更新的不一致性。由于数据存储冗余,当更新某些数据项时, 就有可能一部分字段修改了,而另一部分字段未修改,造成存储 数据的不一致性。
7
关系模式S存在问题:
学生选课关系表S
NO
S0102 S0102 S0102 S0108 S0121
NAME
王华 王华 王华 李丽 王红
SEX
男 男 男 女 女
CNO
S(NO,NAME,SEX,CNO,CNAME,DEGR)
学生关系S1
NO NAME 王华 SEX 男
将S关系模式分解为3个 结构简单的关系模式: S1(NO,NAME,SEX) S2(NO,CNO,DEGR) S3(CNO,CNAME)后就 可以消除数据冗余、插 入异常和删除异常等问 题。
选课关系S2
相关文档
最新文档