上一篇:复试数据库(3)
关系数据理论
一、规范化
1、规范化是关系模式优化的理论基础。
基本思想:通过关系模式垂直分解来消除数据项之间的不合适的数据依赖,防止插入异常、删除异常和数据冗余等异常发生。
2、关系模式五元组表达:R(U,D, DOM, F)
R:关系名
U:组成该关系的属性名集合
D:属性组U中属性所来自的域
DOM:属性向域的映象集合
F:属性间数据的依赖关系集合
关系模式可简化为三元组表达:R (U, F)
3、定义
设R(U)是属性集U上的关系模式,X和Y是U的子集。
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。
3.1、[例]:在关系Student(Sno, Sdept,Mname, Cno, Grade)中
一个系有多名学生,一个学生只属于一个系:Sno→Sdept
一个系只有一名(正职)系主任:Sdept→ Mname
一个学生可以选修多门课程,每门课程被多干学生选修每个学生每门课程只有一个成绩。:(Sno, Cno)→Mname
4、定义
在关系模式R(U)中,如果X→Y,并且对
于X的任何一个真子集X’,都有X’今Y,则称Y对X的函数依赖关系为完全函数依赖,记作
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作
4.1、[例]
在关系Student(Sno, Sdept, Mname, Cno,Grade)中
5、定义
5.1、[例]
在关系Student(Sno, Sdept, Mname, Cno,Grade)中
6、范式
关系数据库中的关系必须满足一定的要求,满足不同程度要求就称为不同的范式,用R∈xNF描述。
6.1、规范化
一个低一级范式的关系模式,通过模式垂直分解的方法,转换为若干个高一级范式的关系模式的集合,这种过程称为规范化。
6.2从低一级向高一级范式转换的基本思考点
遵照的原则:一事一地原则。
解决方法:模式垂直分解。
分解时注意:
(1)保持函数依赖的分解
指在模式分解过程中,函数依赖不能丢失的特性,即模式分解不能破坏原来的语义。
(2)保持数据不丢失的分解
分解后的关系通过自然连接可以恢复成原来的关系,即通过自然连接得到的关系与原来的关系相比,既不多出信息、又不丢失信息。
具体的做法:
将导致产生部分函数关系的主码与非主属性分离,各自成为一个关系。
6.3、第一范式(1NF)
如果一个关系模式R的所有属性值(分量)均为原子项,则称R∈1NF。
第一范式是对关系模式最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。
满足第一范式的关系模式,并不一定是一个好的关系模式。
6.4、2NF的要求
若关系模式R∈1NF,且每一个非主属性均完全函数依赖于R的关系码,则R∈2NF。
用垂直分解法将Student分解为两个关系模式
sc (Sno, Cno,Grade)
SL (Sno, Sdept, Mname)
—采用垂直分解法将一个1NF的关系分解为两个满足2NF的关系,比低一级范式的性能要好,减少了数据冗余。
—但并没有消除关系操作中的各种异常。
6.5、3NF的要求
设关系模式R<U,F>∈1NF,若R中不存在所有的非主属性对码的传递函数依赖,则称R<U,F>∈3NF。
Student垂直分后的两个关系模式
sc (Sno, Cno,Grade)
SL (Sno, Sdept,Mname)
对关系模式SL (Sno, Sdept,Mname)进行优化
sD (Sno, Sdept)
DL (Sdept,Mname)
7、总结
关系模式Student (Sno, Sdept, Mname, Cno,Grade)
(1)垂直分解Student后满足2NF的关系模式:
sc (Sno,Cno,Grade)
SL (Sno, Sdept,Mname)
(2)垂直分解SL后满足3NF的关系模式:
sc (Sno, Cno, Grade)
sD (Sno, Sdept)
DL (Sdept, Mname)
二、数据依赖的公理系统(Armstrong公理系统)
数据依赖的公理系统是模式分解的理论基础;
目的:为了求解给定关系模式的码。
1、函数依赖的逻辑蕴含(逻辑蕴含可以理解为推导出)
(1)定义
设F是在关系模式R上成立的函数依赖的集合,x→Y是一个函数依赖。如果对于R的每个满足F的关系r也满足x→Y,那么称F逻辑蕴涵X→Y,记为F→x→Y。
(2)定义
设F是函数依赖集,被F逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集F的闭包( closure),记为F+。即 F+= { x→Y|F→X→Y}
2、Armstrong公理系统
关系模式R<U,F>来说有以下的推理规则:
【例】令r®=r (A,B,C,G,H,I),函数依赖集F={A→B,A→c,CG→H,CG→l,B→H}。可以列出F+中的几个依赖:
(1)由传递律可得A→H,因为A→B且B→>H;
(2)由合并律可得CG→HI,因为CG→>H,CG->l;
(3)由伪传递律可得AG→l,因为A→C且CG→I。
3、属性集的闭包
计算属性集{A,A,…,An}闭包的步骤:
第一步,设最终将成为闭包的属性集是x,把X初始化为{A1,A2,…,An }。
第二步,重复搜索和判断函数依赖A1,A2…Am→c。如果左边所有的属性A1,A2…Am都在属性集x中,但是属性c不在x中,则将c添加到属性集X中。
第三步,重复第二步,直到没有属性可以添加到属性集x中为止。
第四步,最后得到的不能再添加的属性集X就是{A1,A2…,An}的闭包值。
4、最小函数依赖集
如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集或最小覆盖。记作Fm 。
(1)F中任一函数依赖的右部仅含有一个属性。
(2)F中不存在这样的函数依赖x→A,使得F与F-{X→A}等价。
(3) F中不存在这样的函数依赖X→A,x有真子集z使得F-{X→A}U{z→A}与F等价。
5、求解关系模式的候选码的方法
首先对于给定的R(U)和函数依赖集F,可以将它的属性划分为4类:
L类,仅出现在F的函数依赖左部的属性。
R类,仅出现在F的函数依赖右部的属性。
N类,在F的函数依赖左部和右部均未出现的属性。
LR类,在F的函数依赖左部和右部均出现的属性。
5.1、根据以下定理和推论来求解候选码。
定理1:对于给定的关系模式R及其函数依赖集F,若x(x∈R)是L类属性,则x必为R的任一候选码的成员。
推论1:对于给定的关系模式R及其函数依赖集F,若x(x∈R)是L类属性,且x+包含了R的全部属性,则x必为R的唯一候选码。
定理2:对于给定的关系模式R及其函数依赖集F,若x(X∈R)是R类属性,则x不在任何候选码中。
定理3:设有关系模式R及其函数依赖集F,如果x是R的N类属性,则x必包含在R的任一候选码中。
推论2:对于给定的关系模式R及其函数依赖集F,如果x是R的N类和L类组成的属性集,且x+包含了R的所有属性,则x是R的唯一候选码。
三、模式分解
模式分解要满足:
具有无损连接性
保持函数依赖
1、无损连接性
无损连接性是指分解后的关系通过自然连接具有和原关系等价的特性,即通过自然连接得到的关系与原来的关系相比,既不多出信息、又不丢失信息。
2、保持函数依赖
保持函数依赖分解是指在模式的分解过程中,函数依赖不能丢失的特性,即模式分解不能破坏原来的语义。
3、判别方法