关系数据理论
一:关系模式由五部分组成,是一个五元组: R(U, D, DOM, F)
关系名R是符号化的元组语义
U为一组属性
D为属性组U中的属性所来自的域
DOM为属性到域的映射
F为属性组U上的一组数据依赖
二:一对一联系
设X,Y为关系中的属性或属性组,它们的所有可能取值组成两个集合。如果对于X中的任一具体值Y中至多有一个值与之对应,称X,Y这两个属性之间是一对一联系
三:多对多联系
在X,Y两个属性值集中,如果任一个值都可以至多和另一个属性值集中多个值对应,反之亦然,则称属性X和Y是m:n关系。
四:数据依赖
是一个关系内部属性与属性之间的一种约束关系
通过属性间值的相等与否体现出来的数据间相互联系
是现实世界属性间相互联系的抽象
是数据内在的性质
是语义的体现
五:数据依赖的主要类型
函数依赖(Functional Dependency,简记为FD)
多值依赖(Multi-Valued Dependency,简记为MVD)
六:关系模式Student<U, F>中存在的问题:
(1)数据冗余
浪费大量的存储空间
每一个系主任的姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同。
(2)更新异常(Update Anomalies)
数据冗余 ,更新数据时,维护数据完整性代价大。
某系更换系主任后,必须修改与该系学生有关的每一个元组。
(3)插入异常(Insertion Anomalies)
如果一个系刚成立,尚无学生,则无法把这个系及其系主任的信息存入数据库。
(4)删除异常(Deletion Anomalies)
如果某个系的学生全部毕业了, 则在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。
七:规范化
规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。
1.函数依赖
函数依赖
平凡函数依赖与非平凡函数依赖
完全函数依赖与部分函数依赖
传递函数依赖
2:码
定义6.4 设K为R<U,F>中的属性或属性组合。若K → U,则K称为R的一个候选码(Candidate Key)。
如果U部分函数依赖于K,即K → U,则K称为超码 (Surpkey)。候选码是最小的超码,即K的任意一个真子集都不是候选码。
若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)。
定义6.5 关系模式 R中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码。
SC(Sno,Cno,Grade)中,Sno不是码
Sno是 S(Sno,Sdept,Sage)的码,则Sno是SC的外码
主码与外部码一起提供了表示关系间联系的手段
3:范式
范式是符合某一种级别的关系模式的集合。
关系数据库中的关系必须满足一定的要求。满足 不同程度要求的为不同范式。
范式的种类:第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF)
第四范式(4NF) 第五范式(5NF)
4:2NF
若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF
一个关系模式不属于2NF,会产生以下问题:
插入异常
如果插入一个新学生,但该生未选课,即该生无Cno,由于插入元组时,必须给定码值,因此插入失败。
删除异常
如果S4只选了一门课C3,现在他不再选这门课,则删除C3后,整个元组的其他信息也被删除了。
修改复杂
如果一个学生选了多门课,则Sdept,Sloc被存储了多次。如果该生转系,则需要修改所有相关的Sdept和Sloc,造成修改的复杂化。
出现这种问题的原因
例子中有两类非主属性:
一类如Grade,它对码完全函数依赖
另一类如Sdept、Sloc,它们对码不是完全函数依赖
解决方法:
用投影分解把关系模式S-L-C分解成两个关系模式
SC(Sno,Cno,Grade)
S-L(Sno,Sdept,Sloc)
5:设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z ⊇ Y), 使得X→Y,Y→Z成立,Y ↛ X不成立,则称R<U,F> ∈ 3NF。
SC没有传递依赖,因此SC ∈ 3NF
不良特性
插入异常:如果系中没有学生,则有关系的信息就无法插入。
删除异常:如果学生全部毕业了,则在删除学生信息的同时有关系的信息也随之删除了。
更新异常:如果学生转系,不但要修改SDept,还要修改Sloc,如果换Sloc,则该系每个学生元组都要做相应修改。
数据冗余:每个学生都存储了所在系的Sloc的信息。
解决方法
采用投影分解法,把S-L分解为两个关系模式,以消除传递函数依赖:
S-D(Sno, Sdept)
D-L(Sdept,Sloc)
S-D的码为Sno, D-L的码为Sdept。
分解后的关系模式S-D与D-L中不再存在传递依赖
6:BCNF
BCNF(Boyce Codd Normal Form)由Boyce和Codd提出,比3NF更进了一步。通常认为BCNF是修正的第三范式,有时也称为扩充的第三范式。
定义6.8 设关系模式R<U,F>∈1NF,若X →Y且Y ⊆ X时X必含有码,则R<U,F>∈BCNF。
换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。
7:多值依赖
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
8:4NF
关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R<U,F>∈4NF。
不允许有非平凡且非函数依赖的多值依赖。
允许的非平凡多值依赖实际上是函数依赖。
八:在关系数据库中,对关系模式的基本要求是满足第一范式。
规范化程度过低的关系不一定能够很好地描述现实世界
可能存在插入异常、删除异常、修改复杂、数据冗余等问题
解决方法就是对其进行规范化,转换成高级范式。
九:数据依赖的公理系统
对于满足一组函数依赖F的关系模式 R <U,F>,其任何一个关系r,若函数依赖X→Y都成立(即r中任意两元组t、s,若t[X]=s[X],则 t[Y]=s[Y]),则称F逻辑蕴涵X →Y。
十:算法:
令ai =|X(i)|,{ai }形成一个步长大于1的严格递增的序列,序列的上界是 | U |,因此该算法最多 |U| - |X| 次循环就
会终止。
由引理二,判定X®Y是否能由F根据Armstrong公理导出,可转化为求 ,判定YÍ 是否成立。
输入:X,F
输出:
1) := X;
2)考察每个F中的函数依赖 A®B,
若 A Í ,则 := ÈB
3)继续考察,直到 不再增大为止。