数据库的范式介绍

来源:未知 责任编辑:责任编辑 发表时间:2015-09-17 09:42 点击:

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

    推荐热点

    • Request.ServerVariables 参数大全
    • 查看sql修改痕迹(SQL Change Tracking on Table)
    • 写给MongoDB开发者的50条建议Tip1
    • Percolator与分布式事务思考(二)
    • App数据层设计及云存储使用指南
    • PostgreSQL启动过程中的那些事三:加载GUC参数
    • SQL Server、Oracle、db2所提供的简装版(Express)比较
    • PostgreSQL 安装问题
    • 【自主研发-贡献给SQL Server人员】索引诊断与优化软件使用说明
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1