Lesson 6 规范化理论
关系模式设计中存在的问题
1.关系数据库逻辑设计:针对具体问题,如何构造一个适合于它的数据模式
工具:关系数据库的规范化理论。规范化理论是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。
2.三元组:R<U,F>
当且仅当U上的一个关系r满足F时,r称为关系模式R<U,F>的一个关系
作为二维表,关系要符合一个最基本的条件:每个分量必须是不可分开的数据项。满足了这个条件的关系模式就属于第一范式(1NF)
3.数据依赖 是一个关系内部属性与属性之间的一种约束关系,通过属性间值的相等与否体现出来的数据间相互联系。
分为函数依赖,多值依赖,其他。
函数依赖
1.函数依赖:
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或“Y函数依赖于X”,记作X→Y。
若X→Y,并且Y→X, 则记为X←→Y。若Y不函数依赖于X, 则记为X→\Y。
函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件
2.平凡函数依赖与非平凡函数依赖
在关系模式R(U)中,对于U的子集X和Y,
如果X→Y,但Y不是X真子集,则称X→Y是非平凡的函数依赖
若X→Y,但Y是X真子集,则称X→Y是平凡的函数依赖
若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素
在任一关系模式上平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明, 我们总是讨论非平凡函数依赖。
3.完全函数依赖与部分函数依赖
在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X′,都有
X′ →\ Y, 则称Y完全函数依赖于X,记作X →F Y
X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作X →P Y。
4.传递函数依赖的概念
在R(U)中,如果X→Y,(Y 不是X真子集),Y→\X, Y→Z, 则称Z对X传递函数依赖。记为:X →传递 Z
注: 如果Y→X, 即X←→Y,则Z直接依赖于X
关系模式的范式
1.范式是符合某一种级别的关系模式的集合。
关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。
范式的种类: 第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)、第五范式(5NF)
某一关系模式R为第n范式,可简记为R∈nNF。
一个低一级范式的关系模式,通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化 (normalization)
2.1NF
如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF
第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。
但是满足第一范式的关系模式并不一定是一个好的关系模式。
3.2NF
若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF
一个关系模式不属于2NF,会产生:插入异常、删除异常、修改复杂
解决方法:
用投影分解把关系模式分解成两个关系模式
3NF——只消除非主属性对主属性的传递依赖;
BCNF——消除所有属性对主属性的传递依赖。
关系模式的分解
合并规则:由X→Y,X→Z,有X→YZ。
伪传递规则:由X→Y,WY→Z,有XW→Z。
分解规则:由X→Y 及 Z属于Y,有X→Z。
求闭包的算法
算法6.1求属性集X(X 属于U)关于U上的函数依赖集F 的闭包XF+
输入:X,F 输出:XF+
步骤:
(1)令X(0)=X,i=0
(2)求B,这里B = { A |( V)( W)(V→WF ∧ V X(i)∧ A W)};
(3)X(i+1)=B∪X(i)
(4)判断X(i+1)= X (i)吗?
(5)若相等或X(i)=U , 则Xÿ