# 三范式

范式

 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
 目前关系数据库有六种范式:第一范式(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
      • 列出表格中的所有函数依赖关系
        每个关系拆出一个表格

数据库 三范式 BCFN的更多相关文章

  1. Java面试题之数据库三范式是什么

    为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 在实际 ...

  2. Java面试题之数据库三范式是什么?

    什么是范式? 简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系.所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式.在关系型数据库中这些规范就可以称 ...

  3. sqlserver数据库三范式的理解

    从来都是听过概念,过一段时间就忘记了,根本就没有深入的理解.这次梳理一遍,用自己的方式记录一下. 1nf 原子性,不可拆分性 例如一张表里包含一个class属性(软件系,外语系,经贸系...)字段,这 ...

  4. MySQL-数据库三范式

    数据库三范式 (1)第一范式(1NF): 定义:每一列都是不可分割的原子数据项(强调的是列的原子性): 例:一个表:[联系人](姓名,性别,电话) 如果在实际场景中,一个联系人有家庭电话和公司电话,那 ...

  5. MySQL-- 数据库的三范式

    目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).巴斯-科德范式(BCNF).第四范式(4NF)和第五范式(5NF,又称完美范式). 而通常我们用的最多的就是第一范 ...

  6. 数据库设计范式1——三范式

    一讲到数据库设计,大家很容易想到的就是三范式,但是第四.第五范式又是什么,不是很清楚,三范式到底怎么区分,也不清楚,作为数据库设计的基础概念,我再讲解下数据库范式.   Normal form Bri ...

  7. SQL数据库设计三范式

    关系型数据库将数据库设计需要遵循的一些规则叫做“范式”,最基本的三个范式(1NF.2NF.3NF)简称三范式.第一范式是满足第二范式的基础,而第一.二范式又是满足第三范式的基础. 第一范式 表中的字段 ...

  8. mysql数据库的三范式的设计与理解

    一般的数据库设计都需要满足三范式,这是最基本的要求的,最高达到6NF,但是一般情况下3NF达到了就可以 一:1NF一范式的理解: 1NF是关系型数据库中的最基本要求,就是要求记录的属性是原子性,不可分 ...

  9. mysql 数据库的设计三范式

    三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 解释: 1NF:原子性 字段不可再分,否则就不是关系数据库; 2NF:唯一性 一个表只说明一个事物 ...

随机推荐

  1. Softmax函数与交叉熵

    在Logistic regression二分类问题中,我们可以使用sigmoid函数将输入Wx+b映射到(0,1)区间中,从而得到属于某个类别的概率.将这个问题进行泛化,推广到多分类问题中,我们可以使 ...

  2. Spring Data JPA基本了解

    前言 自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 JPA 框架如雨后春笋般出现,为开发者提供了丰富的选择.它一改之前 EJB 2.x 中实体 B ...

  3. Mac OS找不到/usr/include文件夹的解决办法

    Mojave最新解决方案:终端执行: xcode-select --install #完成后执行 sudo installer -pkg /Library/Developer/CommandLineT ...

  4. IOS上编译boost库

    环境:xcode9mac os 10.13 1.下载boost库并解压2.cd到解压后的文件包内,执行 sh bootstrap.sh(解压后会得到这个脚本文件).3.执行./b2 编译整个库.4.经 ...

  5. 浅谈Java回收对象的标记和对象的二次标记过程_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 一.对象的标记 1.什么是标记?怎么标记? 第一个问题相信大家都知道,标记就是对一些已死的对象打上记号,方便垃圾收集器的 ...

  6. TF-epoch、 iteration和batchsize区别(转载)

    from http://www.cnblogs.com/qggg/p/6876942.html 转自 http://blog.csdn.net/sinat_30071459/article/detai ...

  7. EXCL单元格公式——组装SQL用

    ="'"&F3&"'"

  8. luogu P1223 排队接水 x

    P1223 排队接水 题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共两行, ...

  9. 修改docker下mysql配置

    1.在/home/smile/docker/mysql/config/目录下增加一个文件 my.cnf # Copyright (c) , Oracle and/or its affiliates. ...

  10. 原型模式故事链(4)--JS执行上下文、变量提升、函数声明

    上一章:JS的数据类型 传送门:https://segmentfault.com/a/11... 好!话不多少,我们就开始吧.对变量提升和函数声明的理解,能让你更清楚容易的理解,为什么你的程序报错了~ ...