上接 数据库系统概论(第5版)王珊 详细知识清单 期末复习速成 考前冲刺 面试——(第一篇 基础篇
目录
六.关系数据理论
1.问题提出
数据依赖的主要类型:
函数依赖(Functional Dependency,简记为FD)
多值依赖(Multivalued Dependency,简记为MVD)
存在的问题
1. 数据冗余太大(浪费空间)
2. 更新异常
3. 插入异常
4. 删除异常
2.规范化
规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题
2.1函数依赖
平凡函数依赖与非平凡函数依赖
在关系模式R(U)中,对于U的子集X和Y,
如果X→Y,但Y X,则称X→Y是非平凡的函数依赖
若X→Y,但Y X, 则称X→Y是平凡的函数依赖
例:在关系SC(Sno, Cno, Grade)中, 非平凡函数依赖: (Sno, Cno) → Grade 平凡函数依赖: (Sno, Cno) → Sno (Sno, Cno) → Cno
完全函数依赖与部分函数依赖
在R(U)中,
如果X→Y,并且对于X的任何一个真子集X’,都有X’ Y, 则称Y对X完全函数依赖,记作 X Y。
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X P Y。
关系SC(Sno, Cno, Grade)中 (Sno,Cno)→Grade是完全函数依赖, (Sno,Cno)→Sdept是部分函数依赖 因为Sno →Sdept成立,且Sno是(Sno,Cno)的真子集
传递函数依赖
在R(U)中,如果X→Y(Y X) ,Y→X,Y→Z,Z Y,则称Z对X传递函数依赖。 记为:X → Z
注: 如果Y→X, 即X←→Y,则Z直接依赖于X。
例: 在关系Std(Sno, Sdept, Mname)中,有: Sno → Sdept,Sdept → Mname Mname传递函数依赖于Sno
2.2码
设K为R<U,F>中的属性或属性组合。若K U, 则K称为R的一个侯选码(主属性)
若候选码多于一个,则选定其中的一个做为主码
2.3范式
范式的种类:
第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF)
范式的关系:
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化
定义 若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF
若R∈2NF,且它的任何一个非主属性都不传递地依赖于任何候选键,则R∈3NF。
若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。
采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。
定义 关系模式R<U,F>∈1NF,若X→Y且Y X时X必含有码,则R<U,F> ∈BCNF。
推论一:任何二元关系模式的最高范式必定是BCNF。 (因为X必含有候选码)
推论二:如果R只有一个候选码,则R∈3NF,R必属于BCNF。
如果R∈3NF,且R只有一个候选码 R ∈BCNF R ∈3NF
2.4多值依赖
平凡多值依赖和非平凡的多值依赖
若X→→Y,而Z=ϕ(空),则称 X→→Y为平凡的多值依赖
否则称X→→Y为非平凡的多值依赖
规范化小结:
目的:尽量消除插入、删除异常,修改复杂,数据冗余
基本思想:逐步消除数据依赖中不合适的部分
采用“一事一地”的模式设计原则
实质:概念的单一化