范式概述与三大范式详解

范式概述

   数据库设计的范式

     概念:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求

      

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
关系型数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
    分类:
      1.第一范式(1NF):每一列都是不可分割的原子数据项
      2.第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于码(在1NF基础上消除非主属性对主码的部分函数依赖) 
      3.第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
 
 

三大范式详解

  第一范式(1NF)

    

 

    存在的问题:

      1.:存在非常严重的数据冗余(重复):姓名 系名 系主任

      2.:数据添加存在问题:添加新开设的系和系主任时,数据不合法

      3:数据删除存在问题:张无忌同学毕业,删除数据,会将系数据一起删除。

  第二范式(2NF)

      

       已经解决的问题:

          1.:存在非常严重的数据冗余(重复):姓名 系名 系主任

      未解决的的问题:

          2.:数据添加存在问题:添加新开设的系和系主任时,数据不合法

          3:数据删除存在问题:张无忌同学毕业,删除数据,会将系数据一起删除。

    概念:

     1.函数依赖:

       A-->B,如果通过A属性(属性组)的值,可以确定唯一属性B的值,则称属性B依赖与A

       例如:学号-->姓名。(学号,课程名称)-->分数(学号唯一确定姓名)            10010-->张三

       (学号,课程名称)-->分数(学号和课程名称唯一确定分数)                            (1001,Java)-->89; 

    2.完全函数依赖

       A-->B,如果A是一个属性组,则B属性确定需要依赖A属性组中的所有属性值

      如:(学号,课程名称)->分数(分数需要完全依赖与学号和课程才能得出)

    3.部分函数依赖

      A->B,如果A是一个属性组,那么B属性只需要依赖A属性组中的一些值即可

      如:(学号,课程名称)-->姓名

    4.传递函数依赖:A-->B,B-->C,则A-->C.通过A属性(属性组)的值,可以确定唯一B属性的值,通过B属性的值,可以确定唯一的C属性的值,则称C传递依赖于A

      如:学号 --> 系名,系名 --> 系主任,则学号 --> 系主任(通过学号,可以确定唯一的系主任)

    5.码:在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码

      如:该表的码为:(学号,课程名称)

      主属性:码属性组中的所有属性

      非主属性:除过码属性组的属性
      其中,姓名,系名,系主任,都完全依赖于学号,而分数则完全依赖于(学号,课程名称)。(学号,课程名称)被其他所有属性所

      完全依赖,即为该表的码

 第三范式:

    

 

     已经解决存在的问题

      1.:存在非常严重的数据冗余(重复):姓名 系名 系主任

      2.:数据添加存在问题:添加新开设的系和系主任时,数据不合法

      3:数据删除存在问题:张无忌同学毕业,删除数据,会将系数据一起删除。

    

      

        

 

 

  

 
 
 
posted @ 2022-10-20 10:12  zj勇敢飞,xx永相随  阅读(107)  评论(0编辑  收藏  举报