关系数据库规范化理论

关系数据库规范化理论
一个关系数据库由一组关系模式组成,一个关系由一组属性名组成,关系数据库设计就是如何把已给定的相互关联的一组属性名分组,并把每一组属性名组织成关系的问题。
1 、关系规范化的作用
所谓规范化,就是用形式更为简洁、结构更加规范的关系模式取代原有关系的过程。
2 、函数依赖
2.1 、属性间的联系
实体间的联系有两类:一类是实体与实体之间的联系;另一类是实体内部各属性间的联系。
属性间的联系可分为以下三类:
(1 )一对一联系(1 ∶1
以职工模式为例:职工(职工号,姓名,职称,部门)。如果该企业(或单位)中职工无重名,则属性职工号与姓名之间是1∶1联系。一个职工号唯一地决定一个姓名,一个姓名也可决定唯一的职工号。
设X、Y是关系R的两个属性(集)。如果对于X中的任一具体值,Y中至多有一个值与之对应,且反之亦然,则称X、Y两属性间是一对一联系。
(2 )一对多联系(1 ∶ m
在职工模式中,职工号和职称间是一对多联系。一个职工号只对应一种职称(如胡一民只能对应工程师),但一种职称却可对应多个职工号(如工程师可对应多名职工)。
设X、Y是关系R的两个属性(集)。如果对于X中的任一具体值,Y中至多有一个值与之对应,而Y中的一个值却可以和X中的n个值相对应,则称Y对X是一对多联系。
(3 )多对多联系(m ∶ m
在职工模式中,职称和部门之间是多对多联系。一种职称可分布在多个部门中(如每一个部门中均可有工程师),而一个部门中也可有多个职称。
设X、Y是关系R的两个属性(集)。如果对于X中的任一具体值,Y中有m个值与之对应,而Y中的一个值也可以和X中的n个值相对应,则称Y对X是多对多联系。
上述属性间的三种联系实际上是属性值之间相互依赖又相互制约的反映,称为属性间的数据依赖。
数据依赖共有三种:函数依赖( FunctionalDependency ,简称 FD )、多值依赖( Multiva-luedDependency ,简称 MVD )和连接依赖( JoinDependency ,简称 JD ),其中最重要的是函数依赖和多值依赖。
2.2 、函数依赖
函数依赖是属性之间的一种联系。假设给定一个属性的值,就可以唯一确定(查到)另一个属性的值。
定义:所谓函数依赖是指在关系 R 中, X Y R 的两个属性或属性组,如果对于 R 的任一关系 r 都存在:对于 X 的每一个具体值, 都只有一个具体值与之对应,则称属性 Y 函数依赖于属性 X 。或者说,属性 X 函数决定属性 Y ,记作 X à Y 其中X叫决定因素,Y叫被决定因素。当Y是X的子集时,称为平凡函数依赖。由于平凡函数依赖总是成立的,因此,若不作特殊声明,本书后面提到的函数依赖,都不包含平凡函数依赖。
此定义可简单表述为:如果属性X的值决定属性Y的值,那么属性Y函数依赖于属性X。
前面讨论的属性间的三种联系,并不是每一种联系中都存在函数依赖。
(1)如果两属性集X、Y 间是1∶ 1联系,则存在函数依赖:X ß>Y。
(2)如果两属性集X、Y间是m∶ 1联系,则存在函数依赖:X àY。
(3)如果两属性集X、Y间是m∶ n联系,则不存在函数依赖。
2.3 、码的定义
定义  K  是关系模式  R U F )中的属性或属性组, K ′是  K  的任一真子集。若 K à U ,而不存在 K à U ,则 K R 的候选码( CandidateKey ),简称为码。
· 若候选码多于一个,则选定其中的一个为主码(PrimaryKey);
· 包含在任一候选码中的属性,叫做主属性(PrimeAttribute);
· 不包含在任何候选码中的属性称为非主属性(NonprimeAttribute)或非码属性(Non KeyAttribute);
· 关系模式中,最简单的情况,单个属性是码,称为单码(SingleKey);最极端的情况,整个属性组是码,称为全码(All Key)。
定义 设有两个关系模式R和S,X是R的属性或属性组,并且X不是R的码,但X是S的码(或与S的码意义相同),则称X是R的外部码(ForeignKey),简称外码。
2.4 、函数依赖和码的唯一性
码是由一个或多个属性组成的可唯一标识元组的最小属性组。码在关系中总是唯一的,即码函数决定关系中的其他属性。因此,一个关系中,码值总是唯一的(如果码的值重复,则整个元组都会重复)。否则,违反实体完整性规则。
与码的唯一性不同,在关系中,一个函数依赖的决定因素可能是唯一的,也可能不是唯一的。如果我们知道A决定B,且A和B在同一关系中,但我们仍无法知道A是否能决定除B以外的其他所有属性,所以无法知道A在关系中是否是唯一的。
3 、关系模式的规范化
3.1 、关系模式的规范化
当一个关系中的所有分量都是不可分的数据项时,该关系是规范化的
关系按其规范化程度从低到高可分为5级范式,分别称为1NF、2NF、3NF(BCNF)、4NF、5NF。规范化程度较高者必是较低者的子集
3.2 、第一范式(1NF
定义 如果关系模式 R 中不包含多值属性,则 R 满足第一范式,简称 1NF FirstNor-malForm ),记作 R 属于 1NF
1NF是规范化的最低要求,不满足1NF的关系是非规范化关系
3.3 、第二范式(2NF
定义 X Y 是关系 R 的两个不同的属性或属性组,且 X 属于 Y 。如果存在 X 的某一个真子集 X ′,使 X ′属于成立,则称 Y 部分函数依赖于 X ,反之,则称 Y 完全函数依赖于 X
定义 如果一个关系 R 属于 1NF ,且它的所有非主属性都完全函数依赖于 R 的任一候选码,则 R 属于第二范式,记作 R 属于 2NF
推论:如果关系模式R‑1NF,且它的每一个候选码都是单码,则R属于2NF。
3.4 、第三范式(3NF
定义 在关系 R 中, X Y Z R 的三个不同的属性或属性组,如果 X à Y Y à Z ,但 Y/-->X Y 不是 X 的子集,则称 Z 传递依赖于 X
定义 如果关系模式 R 属于 2NF ,且它的每一个非主属性都不传递依赖于任何候选码,则称 R 是第三范式,记作 R 属于 3NF
推论1 如果关系模式R属于1NF,且它的每一个非主属性既不部分依赖,也不传递依赖于任何候选码,则R属于3NF。
推论2 不存在非主属性的关系模式一定为3NF。
3.5 、改进的3NF ——BCNF
定义 设关系模式R(U,F)属于NF,若F的任一函数依赖X àY(Y不是X的子集)中X都包含了R的一个码,则称R属于BCNF。
换言之,在关系模式R中,如果每一个决定因素都包含码,则R属于BCNF。
由BCNF的定义可以得到以下推论:如果R属于BCNF,则
· R中所有非主属性对每一个码都是完全函数依赖;
· R中所有主属性对每一个不包含它的码,都是完全函数依赖;
· R中没有任何属性完全函数依赖于非码的任何一组属性。
定理:如果R属于BCNF,则R属于3NF一定成立。
一个关系模式如果达到了BCNF,那么在函数依赖范围内,它已实现了彻底的分离,消除了数据冗余、插入和删除异常。
4 、多值依赖和第四范式
定义 设R(U)是属性集U上的一个关系模式,X、Y、Z是U的子集,且Z=U-X-Y。如果对R(U)的任一关系r,给定一对(x,z)值,都有一组Y值与之对应,这组Y值仅仅决定于x值而与z值无关。称Y多值依赖于X,或X多值决定Y,记作X ààY。
定义中如果Z为空集,则称X ààY为平凡的多值依赖,否则为非平凡多值依赖。
定义 如果关系模式R属于1NF,对于R的每个非平凡的多值依赖X ààY(Y不是X的子集),X含有码,则称R是第四范式,即R属于4NF。
一个关系模式如果属于4NF,则一定属于BCNF,但一个BCNF的关系模式不一定是4NF的,R中所有的非平凡多值依赖实际上是函数依赖。
5 、关系的规范化度
关系规范化的目的是解决关系模式中存在的数据冗余、插入和删除异常、更新繁琐等问题。其基本思想是消除数据依赖中的不合适部分,使各关系模式达到某种程度的分离,使一个关系描述一个概念、一个实体或实体间的一种联系。因此,规范化的实质是概念的单一化。
规范化的基本原则是:由低到高,逐步规范,权衡利弊,适可而止。通常,以满足第三范式为基本要求。
把一个非规范化的数据结构转换成第三范式,一般经过以下几步:
(1)把该结构分解成若干个属于第一范式的关系。
(2)对那些存在组合码,且有非主属性部分函数依赖的关系必须继续分解,使所得关系都属于第二范式。
(3)若关系中有非主属性传递依赖于码,则继续分解之,使得关系都属于第三范式。
关系模式的规范化过程是通过投影分解实现的,即用投影运算把一个模式分解成若干个高一级的关系模式。这种投影分解不是唯一的。
  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值