当前位置:操作系统 > Unix/Linux >>

数据库的范式介绍


数据库的范式介绍
 
无规矩不成方圆,在数据库设计的时候遵守的规矩就是范式.即设计数据库必须满足不同的规则也就是满足不同的范式.关系数据库有六种范式,而常用的则是第一第二和第三范式。而其余的范式我们基本还用不到. 
 范式介绍
      如果没有范式不仅会产生大量无用的表字段,而且会使得表结构非常难以维护。因为范式是递进的关系,所以引出了第一范式.
 
    第一范式
        第一范式就是在没有范式的基础上进行的改进,所谓第一范式就是指表中的所有字段都是原子的、不可再分的,第一范式是将没有范式中重复的字段抽取出来,作为表的数据,从而形成一个稳定的、冗余数据少得表结构。  www.zzzyk.com  
        此时,表的结构变得稳定了,而且表中的冗余信息相对没有范式也少了很多。可是,第一范式只是关系数据库设计的最低满足的范式,第一范式中仍然有很多的冗余信息,由此,需要第二范式 。
 
   第二范式
        第二范式是满足属性对主键是完全函数依赖的,因此,满足第二范式的表当然也是满足第一范式的,第二范式的目的就是消除表中的部分依赖。
       几个概念要解释下, 
      1: 完全函数依赖
      设有属性集A和S,若K中的所有属性共同能够推出S中的任意属性,且对于A的任何真子集,都不能推出P中的任意属性,则成A完全函数依赖S。
 
      2: 部分函数依赖
       与上相似,只是,A中存在真子集使得,该子集能推出S中任意属性.
           不满足第二范式的表至少有以下几个缺点:
             1:数据重复,浪费空间
             2: 插入异常
             3:  更新异常,删除异常等
           d: 第三范式  www.zzzyk.com  
 
      第三范式是指在满足第二范式的情况下,消除表中的传递依赖。
      所谓传递依赖,就是指x-->y,y-->z,那么可以得到y-->z.
      传递依赖常发生在主键、外键、外键相关的属性上,例如,假设有这样的表
              学生表(学生id,学生姓名,院系id,院系名) ,此处主键为(学生id),外键为(院系id)
              院系表(院系id,院长名称),主键为 (院系id)
      很明显,此处存在传递依赖,因为 学生id  可以唯一确定  院系id,而 院系id 可以唯一确定 院系名。
      
从上面的表数据易知,不满足第三范式的表至少有以下几个缺点:
           1 :  数据重复,浪费空间
           2:  插入异常
           3:  更新异常,删除异常等   
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,