1.第一范式1NF:指列不可以再分割。

举个例子:一张student表,有三个列id,name,age,如下。

id,name,age不可以再分,这就是符合第一范式,下面这样,就是不符合第一范式。

列不能再拆分这就是满足第一范式,正常的关系型数据库,都是满足第一范式的。

2.第二范式2NF:在第一范式的基础上,还要满足其他字段必须依赖于主键。

在上边的表中,就不满足第二范式。

这里学号是唯一的,张三的信息是完全依赖于学号,但是分数不是完全依赖于学号。

如果有十几个科目,就会有十几行数据,前边的字段都是冗余数据。

这时候我们就要把表拆分一下,如下。

这样就是满足第二范式。

3.第三范式3NF:在第二范式的基础上,消除传递依赖,就是说其他字段依赖主键还不行,还必须的直接依赖。

上图第二张表,老师和老师的年龄是完全依赖于主键(学号+科目),但是老师年龄的直接依赖是老师,老师年龄这个字段是间接依赖于主键(老师年龄->老师->主键)。

这就不满足第三范式,于是再把老师的列单独拆出来。

teacher表

ps:上边应该也有一个老师的编号,student表通过老师编号用来关联老师。

4.BCNF范式:在第三范式的基础上,不允许主键的一部分被另一部分或其它字段决定。

在这张表中,联合主键1(姓名+科目)----》老师     联合主键2(姓名+老师)----》科目。

既满足全部依赖,又满足直接依赖。所以属于第三范式。

(科目是联合主键1的一部分)(老师是联合主键2的一部分)

但是这里的(老师----》科目),老师可以决定科目。

就是说科目被老师所决定=====主键的一部分被其他字段决定。

注意:所谓的范式,是设计数据库的基本理念,用来参考,实际开发中并不会有太多要求,按照实际情况来,不一定要遵守。

【数据库记录】数据库三大范式和BCNF范式相关推荐

  1. 第4章 数据库设计---数据库原理及应用

    目录 一.数据库设计方案 1. 数据库应用架构设计:单用户.集中.CS.分布 2. 数据库结构设计:概念.逻辑.物理 3. 数据库应用访问方式设计:访问方式 数据库结构设计模型 概念数据模型:概念,不 ...

  2. 数据库设计的三大范式、BCNF、4NF

    一.理解数据库的范式需要理解几个基本概念: 码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码.相当于键值的意 ...

  3. 数据库设计规范之三大范式

    文章主要划分为两部分,第一部分官方难懂篇,第二部分白话易懂篇. 数据库范式有6种,第一范式(1NF),第二范式(2NF),第三范式(3NF),巴斯-科德范式(BCNF),第四范式(4NF),第五范式( ...

  4. 数据库设计常用三大范式

    前言 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小. 目前关系数据库有六种范式:第一范式(1NF). ...

  5. Mysql数据库与数据库三大范式

    作者:左新宇 链接:https://zhuanlan.zhihu.com/p/59394493 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. MySQL 常用命令 ...

  6. 数据库三大范式、BC范式、第四范式

    目录 第一范式(1NF):原子性(存储的数据应该具有"不可再分性") 第二范式(2NF):唯一性 (消除非主键部分依赖联合主键中的部分字段)(一定要在第一范式已经满足的情况下) 第 ...

  7. 数据库第一范式、第二范式、第三范式、BCNF范式

    文章目录 什么是"范式(NF)" 1. 第一范式(1NF) 2. 第二范式(2NF) 2.1 函数依赖 2.1.1完全函数依赖 2.1.2 部分函数依赖 2.2 码 2.3 非主属 ...

  8. mysql三大范式和反范式_数据库范式:三大范式、BC范式和反范式化

    一.什么是数据库范式 无规矩不成方圆,同理范式是数据表设计的一些约束和规范.为了让各个属性间的关系更加合理,减少数据冗余. 一般来说,主要满足 3NF 就可以了,因为范式过高,虽然对数据关系有更好的约 ...

  9. 数据库基础 数据库设计三大范式

    转载自: http://www.cnblogs.com/knowledgesea/p/3667395.html 数据库设计范式 什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的 ...

  10. mysql增删改查不区分大小写吗_MySQL的增删改查语句以及数据库设计的三大范式...

    数据库设计的三大范式: 1.列的原子性,即列是不可再分的 2.表里的每一列都应该与主键有关系, 3.表里的每一列都应该与主键有直接关系, 当使用自增长列不满足2.3范式,是特殊例子,只用在解决较为复杂 ...

最新文章

  1. java neo4j rest api_Neo4j REST API使用教程
  2. JPA(一):十分钟入门 JPA
  3. 文件排版,较难的线性dp
  4. 打造自己的装机U盘(二)
  5. 【开发者成长】Vue.js 中有哪些性能陷阱
  6. [Ubuntu] 使用 ibus 输入汉字
  7. 自然语言处理——BERT情感分类实战(一)之预处理
  8. Gentoo学习笔记
  9. Node.js:中间件——express简单的设置用户表单提交数据的接收中间件
  10. C# 获取Datagridview 中ComboBox列的DisplayMember值和ValueMember值
  11. linux查看cpu核数命令,Linux系統下如何查看CPU型號、核心數量、頻率和溫度?
  12. 用python实现单词本功能
  13. 欢度国庆⭐️共享爬虫之美⭐️基于 Python 实现微信公众号爬虫(Python无所不能爬)
  14. 微服务系统架构的演变
  15. 【手机】手机选购指南
  16. 基于身高与体重数据集与Auto数据集分别进行线性回归和Lasso回归(代码逐行讲解,超细节)
  17. python笔记 基础语法·第14课 【三局两胜角斗场小游戏,类与对象】
  18. m文件关联matlab,matlab关联m文件
  19. UNP 学习笔记 5:高级 IO 与 IO 复用
  20. JMeter学习-006-JMeter 断言

热门文章

  1. Linux复制文件到某路径并重命名
  2. 微信公众号 | 封面图及缩略图设置及修改技巧
  3. Python常用模块-20个常用模块总结
  4. vue 动态加载阿里云字体图标库
  5. python单例装饰器_python单例模式和装饰器
  6. 图片放大后失真不清晰,怎么办?
  7. Vue面试中,经常会被问到的面试题/Vue知识点整理
  8. springboot自定义Servlet容器
  9. 基于django的视频点播网站开发-step15-项目部署
  10. 延迟队列DelayQueue原理