zoukankan      html  css  js  c++  java
  • 数据库 三范式 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

        • 列出表格中的所有函数依赖关系
          每个关系拆出一个表格
  • 相关阅读:
    建立表空间和用户
    数据库设计的基本步骤
    ubuntu21.04(linux):安装python3+dlib+face_recognition
    ubuntu21.04(linux):为chrome安装vue-devtools(6.0.0 beta 14)调试插件
    ubuntu21.04(linux):安装node(14.17.1)和vue.js3.1环境
    ubuntu21.04(linux):用apt安装nginx/php/mysql/phpmyadmin(开发环境)
    ubuntu21.04(linux):安装webstorm2021.1
    linux:在fedora 32/ubuntu 21.04安装chrome 90浏览器
    spring boot单元测试之十六:junit5:用@Timeout注解判断测试运行是否超时(spring boot 2.4.4)
    spring boot单元测试之十五:用mockmvc测试返回异步结果的controller(spring boot 2.4.4)
  • 原文地址:https://www.cnblogs.com/SunArmy/p/11342897.html
Copyright © 2011-2022 走看看