一、关系规范化理论背景

关系规范化理论是以关系模型为背景。一个关系模式应当是一个五元组:R(U,D,DOM,F);其中,关系名R是符号化的元组语义,U为一组属性元组,D为属性组U中的属性所来自的域,DOM为属性到域的映射,F为属性组U上的一组数据依赖。由于D、DOM与模式设计关系不大,因此在可以把关系模式看作一个三元组:R < U,F >,当且仅当U上的一个关系r满足F时,r称为关系模式R < U,F>的一个关系。

作为一个二维表,关系要符合一个最基本的条件,即第一范式:每一个分量必须是不可分的数据项。

数据依赖:一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性间值与否体现出来的数据间相关联系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。


一个好的模式应当不会发生插入异常、删除异常和更新异常,并且数据冗余应尽可能少。


二、规范化


根据属性间依赖情况来区分关系规范化程度为第一范式、第二范式、第三范式和第四范式等。
数据依赖的类型有函数依赖(FD)和多值依赖(MVD)。


1. 函数依赖

函数依赖和别的数据依赖一样是语义范畴的概念,只能根据语义确定一个函数依赖。函数依赖不是指关系模式R的某个或某些关系满足的约束条件,而是指R的一切关系均要满足的约束条件。

2. 码

码是关系模式中的一个重要概念。其中,候选码是最小的超码,若候选码多于一个,则选定其中的一个为主码。包含在任何一个候选码中的属性为主属性;不包含在任何候选码中的属性称为非主属性或非码属性。最简单的情况属为单个属性是码;最极端的情况是整个属性组是码,称为全码。

3. 范式

关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。满足第一要求的叫第一范式(1NF);在第一范式中满足进一步要求的为第二范式,其余以此类推。

所谓“第几范式”原本是表示关系的某一种级别,所以常称某一关系模式R为第几范式。

一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程叫规范化。


  1. 2NF
    如果R∈ 1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R∈ 2NF。一个关系模式R不属于2NF,就会导致插入异常、删除异常、修改复杂。
  2. 3NF
    设关系模式R<U,F>∈ 1NF,若R中不存在这样的码X,属性组Y及非主属性Z使得X→ Y,Y→ Z成立,Y不→ X,则称R < U,F > ∈ 3NF。如果R∈ 3NF,则每一个非主属性既不传递依赖码,也不部分依赖于码,也就是说R属于3NF,必有R属于2NF。
  3. BCNF
    BCNF被称为修正的第三范式,或者扩充的第三范式。R < U,F > 中,若每一个决定因素都包含码,则R < U ,F > ∈ BCNF。一个满足BCNF的关系模式有:所有非主属性对每一个码都是完全函数依赖;所有主属性对每一个不包含它的码也是完全函数依赖;没有任何属性完全函数依赖于非码的任何一组属性。
    其中,3NF和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的测度。一个模式中的关系模式如果都属于BCNF,那么在函数依赖范畴内它已实现了彻底的分离,已消除了插入和删除的异常。3NF的“不彻底”性表现在可能存在主属性对码的部分依赖和传递依赖。

4. 多值依赖

多值依赖的性质:


  1. 对称性
  2. 传递性
  3. 函数依赖可以看作是多值依赖的特殊情况
    多值依赖于函数依赖的区别:多值依赖的有效性与属性集的范围有关。
    4NF就是限制关系模式的属性之间不允许有非平凡非函数依赖的多值依赖,它所允许的非平凡的多值依赖实际上是函数依赖。如果一个关系模式是4NF,则必为BCNF。

三、Armstrong公理系统


数据依赖的公理系统是模式分解算法的理论基础。


设U为属性集总体,F是U上的一组函数依赖,于是有关系模式R< U ,F >,对R < U ,F >来说有以下的推理规则:

A1 自反律:若Y⊆ X⊆ U,则X->Y为F所蕴涵。

A2 增广律:若X -> Y为所蕴涵,且Z⊆ U,则XZ -> YZ为F所蕴涵。

A3 传递律:若X -> Y及Y -> Z为F所蕴涵,则X -> Z为F所蕴涵。

注意:由自反律所得到的函数依赖均是平凡的函数依赖,自反律的使用并不依赖于F。

由A1、A2、A3可得到:


  1. 合并规则:由X -> Y,X -> Z,有X->YZ。
  2. 伪传递规则:由X -> Y,WY -> Z,有XW -> Z。
  3. 分解规则:由X -> Y及Z⊆Y,有X -> Z。
    人们把自反律、传递律和增广律为Armstrong公理系统。Armstrong公理系统是有效的、完备的。

四、模式的分解

1. 模式分解的三个定义

对于一个模式的分解是多种多样的,但是分解后产生的模式应与原模式等价。“等价”的概念有三种不同的定义:


  1. 分解具有无损连接性。
  2. 分解要保持函数依赖。
  3. 分解既要保持函数依赖,又要具有无损连接性。
    这三个定义是实行分解的三条不同的准则。按照不同的分解准则,模式所能达到的分离程度各不相同,各种范式就是对分离程度的测度。

2. 分解的无损连接性和保持函数依赖性

对于R< U, F >的一个分解ρ={R1<U1,F1>,R2< U2 ,F2>},如果U1∩U2->U1-U2∈F+或U1∩U2->U2-U1∈F+,则ρ具有无损连接性。其中F+叫作F的闭包。

3.模式分级的算法

若要求分解保持函数依赖,那么模式分离总可以达到3NF,但不一定能的达到BCNF。若要求分解既要保持函数依赖,又具有无损链接性,可以达到3NF,但不一定能达到BCNF。若要求分解具有无损连接性,那一定可达到4NF。

规范化小结

在关系数据库中,对关系模式的基本要求就是满足第一范式,这样的关系模式就是合法的、允许的。规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的“分离”,即“一事一地”的设计模式原则。让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它“分离”出去。规范化的实质就是概念的单一化。

规范化过程图示:

关系数据理论_函数依赖


规范化理论为数据库设计提供了理论的指南和工具,但仅仅是指南和工具,并不是规范化程度越高模式就越高,必须结合应用环境和现实世界的具体情况合理地选择数据库模式。


规范化小结图示:

关系数据理论_关系模式_02

关系模式的规范化过程是通过对关系模式的分解来实现的。把低一级的关系模式分解为若干个高一级的关系模式。这种分解不是唯一的。