2.5.4.3
规范化和范式
在应用系统中,经常遇到这样一个基本问题:针对 一组数据,如何构造一个适合于它们的模式?这就是数 据库设计问题,确切地讲是的逻辑设计问题。设计任何 一种应用系统,不论是层次的、网状的还是关系的,都 会遇到如何构造合适的模式问题。 由于关系模型有严格的数学理论基础,因此人们就以关系 模型为背景来讨论这个问题,形式了逻辑设计的一个有 力工具——关系的规范化理论。因此,这里的设 计是指关系的设计。
1.关系模式的存储异常
所谓关系设计就是在关系模式的多种组合中选取一 个合适的或者性能好的关系模式集合作为模式。 下面举一个实例,说明采用不同的模式将产生不同 的设计效果,并从中得到对模式设计的评价。
某学校要建立一个来描述学生的一些情况,由现实世界的 已知事实得到如下对应关系: (1)一个系有若干名学生,一个学生只属于一个系; (2)一个系只有一名负责人; (3)一个学生可以选修多门课程,每门课程有若干学生选修; (4)每个学生学习每一门课程都有一个成绩。 根据上述情况,可以找出如下一组属性: U={学号,姓名,系编号,系名称,系负责人,课程号,课程名称,成绩} 最简单的设计是,采用一个总的关系模式,把所有的属性组合成 一个关系模式,即这个描述学生情况的模式是只有一个关系模 式的集合。形式如下: SA(学号,姓名,系编号,系名称,系负责人,课程号,课程名称,成绩) 在这个关系模式中,存在如下函数依赖: (学号,课程号)→姓名 (学号,课程号)→系编号 (学号,课程号)→系名称 (学号,课程号)→系负责人 (学号,课程号)→课程名称 (学号,课程号)→成绩 由主键的定义可知(学号,课程号)是主键,即学号和课程号可 以唯一地确定一个元组。
由于上述几个问题,该学生模式设计不是一个好设计。 一个好的模式应当不会发生插入和删除异常,冗余尽可能 少。 插入异常和删除异常统称为存储异常。为什么会产生这种存 储异常呢?这是因为这个关系模式中的函数依赖对于关系模式而 言,存在一些不好的性质,这一点将在后面介绍。 现在把这个学生模式改造一下,分成如下4个关系模式: SB(学号,姓名,系编号) DT(系编号,系名称,系负责人) SC(学号,课程名,成绩) C(课程号,课程名称) 这4个关系模式都不会发生存储异常,数据的冗余也得到了控制。 一个关系模式的函数依赖会有哪些不好的性质,如何改造一 个不好的关系模式,这就是规范化理论讨论的内容。
2.关系的规范化 在关系模式的设计中,函数依赖起着重要作用,关系模式设 计的好坏依赖于它的函数依赖是否满足特定的要求。满足特定要 求的模式称为范式(Normal Form)。满足不同程度要求的模式 为不同范式。 关系模型的奠基人E.F.Codd在1971年至1972年间系统地提出 了第一范式( 1NF)、第二范式( 2NF)和第三范式( 3NF)的 概念,讨论了规范化问题。1974年,E.F.Codd和 Boyce 又共同提 出了一个新范式,即BCNF。1976年Fagin 提出第四范式(4NF)。 现在已有人提出第五范式(5NF)。 所谓“第几范式”是表示关系模式的某一种级
别,因此,范 式这个概念可以理解成符合某种级别的关系模式的集合。一般地, 如果R属于第x范式,那么就可以写成R∈xNF。 各种范式之间的关系满足5NF ? 4NF ? 3NF ? 2NF ? 1NF, 如下图所示。
∪
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-35948-11.html
你想