【自考】——数据库范式

 一:【引言】

     数据库之范式是数据库关系模式中的重点,对于我们创建更优的关系模式有着至关重要的作用,所以理解三范式的概要,并且能够正确的加以区分是很关键的。 

 二:【内容】

     1.第一范式即1NF,它是关系模式R中关系r的属性值是不可分的原子值,也就是说属性是不能有多个值的,不能有重复的序列。

   比如说下面的关系模式:  

学号

姓名

性别

地址

12

常某某

廊坊市

12

常某某

安阳县


    从上面的表可知,地址的属性可分,有多值的现象,所以是不符合第一范式的。

    2. 第二范式即2NF,是在第一范式的基础之上,非主属性之间不存在局部依赖,实体属性完全依赖于主关键字。也就是在一个关系模式中FD中的主属性决定了非主属性的时候,不存在非主属性之间相互依赖的现象。

    比如下面的关系模式R:

学号

姓名

性别

系名

地址

课程

学科成绩

12

常某某

数信学院

西南角

数学

80

13

郭某某

数信学院

西南角

数学

70

14

周某某

数信学院

西南角

数学

69

      在这个关系中可以明显的看到,存在着数据冗余的情况,如果一个不同的学生选择了同一个课程,那么课程和学分就会出现无数次,就是因为存在局部的依赖性,在这个关系中学分依赖于课程,而不是学号。

     而正确的第二范式的关系应该是这样的:

  关系模式R1:

学号

姓名

性别

系名

地址

12

常某某

数信学院

西南角

13

郭某某

数信学院

西南角

14

周某某

数信学院

西南角

 关系模式R2:

课程

学分

数学

2.0

历史

1.0

  关系模式R3: 

学号

课程

学科成绩

12

数学

80

13

数学

70

14

数学

69

  3. 第三范式即3NF,首先应该满足第二范式,然后再满足第二范式的基础之上,属性之间不存在传递依赖。

    正如上面的关系模式R优化成第二范式后中的关系模式R1中,系名决定了自己系的地址,所以关系模式优化之后应该分解为四个关系模式:

  关系模式R1: 

学号

姓名

性别

12

常某某

13

郭某某

14

周某某

  关系模式R2:

系名

地址

数信学院

西南角

数信学院

西南角

数信学院

西南角

  关系模式R3:

课程

学分

数学

2.0

历史

1.0

  关系模式R4:

学号

课程

学科成绩

12

数学

80

13

数学

70

14

数学

69

  三:【总结】

     其实第一范式很好理解,但是第二范式和第三范式我们的总是会混淆他们之间的关系,其实第二范式中强调局部依赖优化只是对于属性与属性之间是n:m类型的,比如说学生和课程之间的关系是一个学生可以选择多个课程,一个课程有多个学生选择。主要是分解了他们,而第三范式是在第二范式的基础之上对于关系是1:m的关系进行了分解,比如一个学生之可以在一个系别里,但是一个系别可以选择很多的学生。

   


   

你可能感兴趣的:(【自考】——数据库范式)