浅谈关系数据库理论
1.规范化问题提出
1.规范化理论的主要内容
在关系数据库中,关系模型包括一组关系模式,并且关系之间并不是完全孤立的。设计一个适合的关系型数据库的关键是设计关系型数据库的模式,具体包括,数据库中应该包含多少个关系模式,每个关系模式应该包含哪些属性,以及如何将这些相互关联的关系模式组建成一个完整的关系型数据库。
关系数据库规范化理论主要包含三个方面的内容
(1)函数依赖
(2)范式
(3)模式设计
其中,函数依赖起着核心的作用,是模式分解和模式设计的基础,范式是模式分解的标准。
2.不合理的关系模式存在的异常问题
1.数据冗余
2.插入异常
3.更新异常
4.删除异常
……
经过分解后的关系模式是一个鬼烦的关系数据库模式,于是得出结论一个规范的关系模式应该具有以下几个条件
(1)尽可能少的数据冗余
(2)没有插入异常
(3)没有删除异常
(4)没有更新异常
按照一定的规范设计关系模式,将结构复杂的关西分解成简单的关系,从而把不规范的关系数据库模式转变为规范的关系数据库模式,这就是关系的规范化。
2.函数依赖
1.函数依赖的定义
关系模式之间属性之间想互依赖、相互制约的联系称为数据依赖。数据依赖一般分为函数依赖和多值依赖。其中,函数依赖是重要的数据依赖。
函数依赖。关系模式属性之间的一种逻辑依赖关系。
即,设关系模式R(U,F),U是属性全集,F是U上的函数依赖所构成的集合,X,Y是U的子集,如果对于R中任意可能的一个关系r,对于每一个具体的X的值,Y都有唯一的具体值与之对应,则称X决定函数Y,或者函数Y依赖于X,记为X→Y。X为决定因素,Y为依赖因素。
说明
(1)平凡函数依赖与非平凡函数依赖
当属性集Y是属性集X的子集的时候,则必然存在着函数依赖X→Y,这类型的韩数依赖称为平凡函数依赖。
如果Y不是X的子集的时候,这类型的函数函数依赖称之为非平凡函数依赖。
(2)函数依赖不是关系模式R的某些关系实例的约束条件,而是关系模式R之下的一切可能的关系实例都要满足的约束条件。
(3)函数依赖是语义范畴的概念。我们只能通过语义来确定一个函数依赖,无法通过其形式化定义来证明一个函数依赖是否成立,实际上。函数依赖是对现实世界中事物性质之间的相关性的一种断言。
(4)函数依赖于属性之间的联系类型有关。
2.函数依赖的逻辑蕴含的定义
F是在关系模式R(U)上成立的函数依赖集合,X,Y时属性集U的子集,X→Y是一个函数依赖。如果从F中能够推导出X→Y,即,如果对于R的每个满足F的关系r也满足X→Y,则称X→Y为F的逻辑蕴含,或者F逻辑蕴含X→Y,记作F|=X→Y。
设F是函数依赖集,被F逻辑蕴含的全部函数依赖集合称为函数依赖F的闭包.记作F+
3.函数依赖的推理规则及其正确性
1.Armstrong公理
(1)自反律
(2)增广律
(3)传递律
2.推论
(1)合并律
(2)伪传递律
(3)分解律
(4)复合律
4.完全函数依赖与部分函数依赖
设有关系模式R(U),U是属性全集,X,Y是U的子集,如果X→Y,并且对于X的任何一个真子集X’,都有X’不决定Y,则称Y对X完全函数依赖。如果存在X的某个真子集X’决定Y,则称,Y对X部分函数依赖。
5.传递函数依赖
设有关系模式R(U),U是属性全集,X,Y,Z是U的子集,若X决定Y,但是Y不决定X而Y决定Z,则称Z对X传递函数依赖。如果,X决定Y,Y决定X,Y决定Z,则称,Z对X直接函数依赖。
即,函数依赖分为完全函数依赖和,部分函数依赖,传递函数依赖三类,它们是规范化理论的依据和规范化程度的准则。
6.属性集的闭包及其算法
在实际的工作中,人们往往想要知道某个函数依赖是否成立,如果已经求出F+,则只要检查该函数依赖是否在F+即可得到准确的结果。
为了能尽快的找到F+,人们将计算F+,简化为计算属性集的闭包X+,即,若要判断某个函数是否在F+中,只要找到那些由X决定的属性集,即X的属性集的闭包X+就能得到答案。
1.设有关系模式R(U),属性集是U,F是R上的函数依赖集,X是U的子集,用函数依赖得推理规则可从F推出的函数依赖X→A中所有A得集合,称为属性即X关于F的闭包。记作X+。
即X+={属性A|X→A在F+中}
2.属性集闭包算法
设属性集X的闭包是result
输入:属性集U,U上的函数依赖集F,X,X包含于U。
输出:X相对于F的闭包X+。
方法:result=X
do
{
if F 中有某个函数依赖Y→Z满足Y包含于result //Y为已经找到的属性集闭包的子集
then result=result和Z的交集
}
while (result 有所改变)
3.属性值闭包算法的用途
(1)判断属性集X是否为关系的码,通过计算X+,查看X+是否包含了R中的全部属性,如果是,则X是R的一个码,否则,不是码。
(2)通过检验Y是否包含于X+,我们可以去验证X→Y是否成立。
(3)该算法还给我们另一只种设计函数依赖集F的闭包F+的方法,对于任意的子集X,可以计算其闭包X+,对于任意的Y包含于X+,输出一个函数依赖X→Y。
7.候选码的求解理论及其算法
1.候选码
设关系模式R的属性集是U,X是U的一个子集,F是在R上成立的一个函数依赖集。如果X→U在R上成立(即X→U在F+中),那么称X是R的一个超码。
如果X→U在R上成立,但是,对于X的任一真子集X’都有X’→U不成立(即X→U不在F+中),那么称X是R上的一个候选码。
超码虽然能决定所有的属性,但是,其中也可以包含除候选码以外的其他属性。
2.快速求解候选码的一个充分条件
对于给定的关系模式R(A1,A2……)和函数依赖集F,可以将其属性分为·11以下四类</