178.关系数据库理论基础 (9)

Ø  范式一共分为六个等级,从低到高依次是第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)和第五范式(5NF)。

Ø  高等级范式是在低等级范式的基础上增加一些约束条件而形成的,等级越高,范式的约束条件就越多,要求就越严格。各种范式之间的包含关系可以描述如下:

                               5NF ⊆ 4NF ⊆ BCNF ⊆ 3NF ⊆ 2NF ⊆ 1NF

Ø  通过模式分解,可以将一个低级别的范式转化为若干个高一级的范式,而这种转化过程称为规范化。

 

•         2.5.1 第一范式(1NF)

    定义2.8  设R(U)是一个关系模式,U是关系R的属性集,若U中的每一个属性a的值域只包含原子项,即不可分割的数据项,则称R(U)属于第一范式,记为R(U)∈1NF。

  【例子】表2.17所示。该数据表所对应的关系模式不属于第一范式,因为其中每个元组在“学生人数”属性上的属性值都不是原子项,它们都可以再分,实际上它们都是由两个原子项复合而成。为将其转化为第一范式,需要将复合项(非原子项)分解为原子项即可,结果如表2.18所示。

 

178.关系数据库理论基础

 

 

  【例2.6】假设有一个研究生信息管理系统,该系统涉及的信息主要包括导师信息、研究生信息以及所选课程信息(supervisor, student, course)等。设计了如下的一个关系模式:  SSC(学号, 姓名, 系别, 导师工号, 导师姓名, 导师职称, 课程名称, 课程成绩) 。

     根据常识可以知道:

•             一位研究生只有一位导师(不含副导师),但一位导师可以指导多位研究生;

•             一位研究生可以选修多门课程,一门课程也可以被多位研究生选修;

•             一位研究生选修一门课程后有且仅有一个成绩;

•             不同的课程,课程名是不相同的,即课程名是唯一。

  

基于以上语义信息可以知道:

•   学号→{姓名, 系别}

•   学号→导师工号

•   导师工号→{导师姓名, 导师职称}

•   {学号, 课程名称}→课程成绩

Ø根据Armstrong公理及定理2.2可以推知:

  {学号, 课程名称}→{学号, 姓名, 系别, 导师工号, 导师姓名, 导师职称, 课程名称, 课程成绩}

Ø且可以进一步推知:

  {学号, 课程名称}     {学号, 姓名, 系别, 导师工号, 导师姓名, 导师职称, 课程名称, 课程成绩}

Ø根据定义2.7,{学号, 课程名称}是关系模式SSC的候选码,实际上是唯一的候选码,所以故只能选择它为模式的主码。

 

 

 

关系模式SSC存在的缺点:

•      数据冗余

    关系中每个元组既包含研究生信息,也包含导师信息以及所选课程的信息。一位导师可指导多名研究生,每个研究生对应的元组都包含同一个导师的相同信息。一位导师带有多少名研究生就有多少条重复的导师信息。造成了数据冗余,如果数据量很大,就会浪费大量的存储空间,为这些数据的维护付出巨大的代价。

•      插入异常

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfxwz.html