- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
规范化过程中通过一组投影运算消除传递依赖, 建议作如下分解(No2):
已知关系R(A,B,C), A为主码(A->B, A->C),且B->C, 则将R分解成为两个投影: R1(B,C), B为主码 R2(A,B), A为主码,B为外码
对3NF的进一步说明
在不考虑主属性对码的部分依赖和传递依赖时, 可以认为已实现了彻底的分解,已消除了插入 异常,删除异常,修改异常,冗余等问题。
的部分,使模式达到一定程度的分离,但又不丢失 原模式中的信息。 模式分解的数学实质:投影。
说明
模式分解可以在很大程度上消除冗余,解决更新异 常等问题,但也要付出做连接运算等效率上的代价。
函数依赖可以保证关系分解的无损连接性
设R(X,Y,Z),X,Y,Z为不相交的属性集合,如果 X Y 或 X Z ,则 有R(X,Y,Z)=R[X,Y] R[X,Z], 即R等于R的两组投影在X上的自然连 接,保证了关系R分解后不会丢失原有的信息。
进一步说明:函数依赖与属性之间联系类型的关系
分解说明
一个1NF,但非2NF的关系总是可以被分 解成为一组2NF的关系。
规范化过程中通过一组投影运算消除部 分依赖,建议作如下分解(No1):
已知关系R(A,B,C,D), (A,B)为主码,即(A,B)->C, (A,B)->D,且A->D(部分依赖), 则将R分解成 为两个投影: R1(A,D), A为主码 R2(A,B,C), (A,B)为主码,A为外码
删除异常
某学生所有的选课信息都删除后,其系、住处等信 息也被删除。
修改复杂(更新异常)
学生转系时,除了修改其系名外,还需修改其住处 信息;另外,若该学生选修了多门课程,则其对应 的重复存储的系、住处等信息需一一修改。
冗余
同系的所有学生的住处信息重复存储,同一学生选 多门课程时,其系、住处信息重复存储。
对定义的说明
函数依赖是语义范畴的概念
只能根据语义来确定一个函数依赖,而不能按照其形式化定义来 证明一个函数依赖是否成立;(如在无重名前提下Sname Age 成 立,否则就不存在此函数依赖)
函数依赖关系的存在与时间无关
它是关系中的所有元组均满足的约束条件,当关系中的元组增加、 删除或更新均不能破坏它;
一个BCNF范式必是3NF,但一个3NF范式不一定是BCNF (3NF中可 能存在主属性对码的部分和传递依赖)。
无重名条件下 SNC(SNO,SN,CNO,SCORE)
两个候选码:(SNO,CNO); (SN,CNO)
函数依赖 : SNO SN
(SNO,CNO) SCORE
(SN, CNO) SCORE
关系数据理论的研究背景 关系模型建立在严格的数学基础上,并可向 别的数据模型转换,因此常以关系模型为背 景来讨论这个问题
背景知识
数据模式(schema)
数据库中全体数据的逻辑结构和特征描述,如数据 记录的构成,数据间的联系,安全性、完整性要求 等。常以某一种数据模型为基础。
关系模型的形式化定义
BCNF是在函数依赖范畴内对关系模式的彻底分解, 已消除了插入和删除异常。
通常认为BCNF是扩充的第三范式,一般数据库设计 达到BCNF已足够。
实例
例1: 无并列名次时的SJP(学生S, 课程J, 名次P) (S,J)和(J,P) 均为候选码 函数依赖为(S,J)P, (J,P) S 其中,两个决定因素均包含(是)候选码 可见SJP BCNF
6.2.1 函数依赖
定义1
设R(U)是属性集U上的关系模式。X,Y是U的子
集。若对于R(U)的任意一个可能的关系r,r
中不可能存在两个元组在X上的属性值相等,
而在Y上的属性值不等,则称X函数确定Y或Y
函数依赖于X,记作
。 X Y
若 X Y ,则X叫做决定因素。
若Y不函数依赖于X,则记作 X Y。
t
X Z
6.2.3 范式
范式:符合某种级别(对关系中数据依赖 的要求)的关系模式。
范式种类
1NF, 2NF, 3NF, BCNF, 4NF,5NF 按级别(条件、要求)由低到高:
1NF 2NF 3NF BCNF 4NF 5NF 通常称某一关系模式R为第几范式,记作
R xNF。
R(U,D,dom,F),本章简化为R(U, F)。
候选码、主码、外码、全码。
主码和外码提供了一个表示关系间联系的手段
不包含在任何码中的属性,叫做非主属性。
一个例子:学生-课程-成绩管理
客观事实: 一个系有若干学生,但一个学生只属于一个系;一个 系只有一名负责人;一个学生可以选修多门课程,每 门课程有若干学生选修;每个学生学习每一门课程有 一个成绩。
例2: 每教师只教一门课时的STJ(学生S, 教师T, 课程J) (S,T)和(S,J) 均为候选码 函数依赖为(S,J) T, (S,T) J, T J 可见STJ 3NF(此例中无非主属性), 但STJ BCNF, 因T为决定因素,但不包含码
例子
前例是3NF, 也是BCNF SC(SNO, CNO, G); (SNO, CNO) G
2020/1/21
关系数据理论
要点
关系规范化理论研究背景 数据依赖 规范化(Normalization)理论
1NF、2NF、3NF、BCNF等范式 关系模式规范化的必要性及方法
6.1 问题的提出
问题提出: 针对一个具体问题,如何构造合适的(更好 的)数据模式,即如何更好地设计数据库的 逻辑结构?
非主属性SCORE对码不存在部分函数依赖和传递函数依赖,但
决定因素SNO或SN不包含候选码,即主属性对码存在部分函数依赖
(SNO,CNO)P SN
(SN,CNO)P SNO
故SNC 是3NF,非BCNF。其弊端?
主属性对码的部分ห้องสมุดไป่ตู้数依赖,造成SNC较大的数据冗余, 学生姓名的存储次数等于选课数,导致更新异常。当学生改 名时,必须对该学生的每一记录逐一修改。
解决办法
模式分解
依赖关系分析 G
SNO CNO
SDEPT SLOC
上例中的模式分解为下列两个模式,该模式是2NF
SC(SNO, CNO, G) (SNO, CNO)G S-L(SNO, SDEPT, SLOC) SNO SDEPT, SNO SLOC, SDEPT SLOC
SLOC
S-L中存在传递传递依赖,故该模式不是3NF
不是3NF可能存在的问题
插入异常
当新系没有招生时,其住处信息无法插入。
删除异常
当某系所有学生毕业而又没招生时,该系学生住处信 息将丢失。
更新异常
一个系住处信息变动时,需改动较多记录。
冗余
每个系的系名与学生住处信息重复存储的次数等于该 系学生人数
6.2.5 3NF
定义:若R2NF, 且它的任何一个非主属性都不 传递依赖于任何候选码,则R 3NF。
说明:即不存在非主属性部分依赖和传递依赖 于码的关系为3NF。
推论:不存在非主属性的模式为3NF。
上例中得到的关系模式是2NF
SC(SNO, CNO, G);
SNO
SDEPT
S-L(SNO, SDEPT, SLOC);
问题和改进
MN
SDEPT
SNO CNAME
G
该模式的主码为(SNO,CNAME) 存在的问题
插入异常:一个系无学生或未安排课程时,无法存入 系与负责人(实体完整性约束)
删除异常:一个系的学生全部毕业而没有招生时,系 与负责人也随之删除(现实中该系仍存在)
更新异常:当某系负责人更换时,须更新该系所有学 生信息中的数据,系统需付出的维护工作量很大
说明:不存在非主属性部分依赖于码的关系为2NF
举例:关系模式 S-L-C(SNO, SDEPT, SLOC, CNO, G)
函数依赖图
SNO
SDEPT
G CNO
SLOC
关系模式S-L-C是不2NF? 不是,因为SDEPT和SLOC部分依赖于码
不是2NF可能出现的问题
插入异常
某学生没有选课时,无法插入其系、住处等信息。
如属性X与Y有1:1联系时, X Y
当学生无重名时,SNo SName
如果属性X与Y有m:1的联系时,则只存在函 数依赖X Y
如SNo与Sage、SDept之间均为m:1 SNo Sage、 SNo SDept
如果属性X与属性Y有m:n的联系时,则X与Y 之间不存在任何函数依赖关系
如 SNo与CNo之间不存在函数依赖
作 X P Y
NOTE:只有当决定因素为组合属性时,讨论部分函数依赖才有 意义,当决定因素是单属性时,只能是完全函数依赖
定义3
设R(U)是属性集U上的关系模式。X,Y,Z是U的子集,如果 X Y 但 Y X ,而 Y Z( Y X ,Z Y)则称Z对X传递函 数依赖,记作
解决方法
继续模式分解
如上例中的模式可分解为3NF
SC(SNO, CNO, G); (SNO, CNO) G S-D(SNO, SDEPT); SNO SDEPT D-L(SDEPT, SLOC); SDEPT SLOC
SNO
G
CNO
SNO SDEPT
SDEPT SLOC
分解说明
一个2NF,但非3NF的关系总是可以被分解成为 一组3NF的关系。
冗余太大:系名、负责人姓名重复存储 “包罗万象”的关系模式并不好!
原因:数据依赖存在一些不合适的性质,需寻找更好 的模式,一个好的模式应具备以下四个条件: