• 数据库 三范式 BCFN


    三范式


    范式

     设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
     目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
    注意: 巴斯-科德范式(BCNF)属于第三范式

    我们平时能用到的也就到前三范式,所以我也主要针对前三范式做了了解

    三大范式

    • 1范式(1FN)
      • 设 R 为任一给定关系,若果 R 中每个列与行的交点处的取值都是不可再分的基本 元素,则 R 为第一范式。即:一张表中的属性和属性值都不可再分,这样的表满足于1范式
      • 缺点:
        • 冗余高
        • 插入操作异常
        • 删除操作异常
    • 2范式(2FN)
      • 设 R 为任一给定关系,若 R 为 1NF, 且其所有非主属性都完全函数依赖于候选关键字,则 R 为第二范式。即:2NF是要求记录有惟一标识,即实体的惟一性
    • 3范式(3FN)
      • 设 R 为任一给定关系,若 R 为 2NF, 且其每一个非主属性都不传递函数依赖于候选关键字,则 R 为第三范式。即:首先要满足第二范式,其次非主属性之间不存在函数依赖
    • 4范式的改进形式BCNF
      • 设 R 为任一给定关系,X、Y 为其属性集,F 为其函数依赖集,若 R 为 3NF,且其 F 中所有函数依赖 X→Y(Y 不属于 X)中的 X 必包含候选关键字,则 R 为 BCNF。
      • 一个满足BCNF的关系模式的条件:
        • 所有非主属性对每一个码都是完全函数依赖。
        • 所有的主属性对每一个不包含它的码,也是完全函数依赖。
        • 没有任何属性完全函数依赖于非码的任何一组属性。
    • 范式的转换

      • 1范式转2范式

        • 找到候选关键字,看其余的属性是否完全函数依赖候选关键字, 是的,与候选关键字一同抄下来形成一个表格, 不是的,抄下来,形成第二个表格,并且将候选关键字里能够唯一决定表格 2 的属性组抄在第一列
      • 2范式转3范式
        * 找到表格中的传递函数依赖关系的三个属性组,设为 x,y,z 将这三个属性组拆成两个表格
        第一个表格为 x,y
        第二个表格为 y,z

      • 3NF->BCNF

        • 列出表格中的所有函数依赖关系
          每个关系拆出一个表格
  • 相关阅读:
    Mysql主从复制(基于Log)
    Linux系统开机启动流程
    JS的 验证组织机构的合法性
    Linux以下基于TCP多线程聊天室(client)
    浅谈Java集合框架
    疯狂Java学习笔记(72)-----------大话程序猿面试
    Android自己定义View之组合控件 ---- LED数字时钟
    C/C++学习:函数指针
    springmvc+spring+jpa(hibernate)+redis+maven配置
    数组进行多少次OP操作,才干有序
  • 原文地址:https://www.cnblogs.com/SunArmy/p/11342897.html
Copyright © 2020-2023  润新知