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

1.第一范式(确保每列保持原子性)也就是列都是不可再分

第一范式的目标是确保每列的原子性:
如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)

理解:
一范式就是属性不可分割。属性是什么?就是表中的字段
不可分割的意思就按字面理解就是最小单位,不能再分成更小单位了。
这个字段只能是一个值,不能被拆分成多个字段,否则的话,它就是可分割的,就不符合一范式。

2.第二范式(2nd NF -每个表只描述一件事情)

首先满足第一范式,并且表中非主键列不存在对主键的部分依赖。
第二范式要求每个表只描述一件事情。

理解:
二范式就是要有主键,要求其他字段都依赖于主键。

为什么要有主键?没有主键就没有唯一性,没有唯一性在集合中就定位不到这行记录,所以要主键。
其他字段为什么要依赖于主键?因为不依赖于主键,就找不到他们。更重要的是,其他字段组成的这行记录和主键表示的是同一个东西,而主键是唯一的,它们只需要依赖于主键,也就成了唯一的。

3.第三范式(确保每列都和主键列直接相关,而不是间接相关)

第三范式定义是,满足第二范式,并且表中的列不存在对非主键列的传递依赖

除了主键订单编号外,顾客姓名依赖于非主键顾客编号。

理解:
三范式就是要消除传递依赖,方便理解,可以看做是“消除冗余”
消除冗余应该比较好理解一些,就是各种信息只在一个地方存储,不出现在多张表中。

综上:回答一下什么是第三范式?

首先,表中列都不可再分;
其次,表中非主键列不存在对主键的部分依赖;
第三,表中的列不存在对非主键列的传递依赖;
满足以上三点的范式是第三范式。

所谓的范式,是用来学习参考的,设计的时候根据情况,未必一定要遵守。

数据库建表规则(三大范式)通俗易懂相关推荐

  1. MySQL数据库建表的三大范式

    第一范式 表的每一列都是最小的不可分割的原子值. 错误表实例: 正确表实例: 第一范式的好处: 1. 减少了数据冗余 2. 更利于数据的维护和更新 第二范式 在第一范式的基础上,要求一个表中的所有字段 ...

  2. 关系型数据库建表规则

    为避免io冗余或者数据冗余 1.某张表不常用的字段单独建一张表存放(避免io冗余) 2表间记录为一对多关系的,在从表中加一个外键字段(避免数据冗余) 3.表间记录为多对多关系的,必须建立第三张链接表( ...

  3. 关于使用java程序从excel或者数据库中取出建表规则数据,自动生成数据库建表语句(适用于批量建数据库表)

    公司开发新系统,需要创建几百个数据库表,建表的规则已经写好放到Excel中,如果手动创建的话需要占用较长的时间去做,而且字段类型的规则又被放到了另一张表,如果手动去一个一个去匹配就很麻烦,所以我先把两 ...

  4. 数据库建表原则,SQL数据库建表前期优化,SQL数据库操作优化,数据库命名规范...

    2019独角兽企业重金招聘Python工程师标准>>> 关键字: 数据库建表原则 ·1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关 ...

  5. 数据库建立遵循的三大范式

    数据库建立遵循的三大范式 数据库设计深刻影响着存储性能和数据的操作效率,为了避免操作异常,在设计数据库的时候需要满足一定的规范要求,这里就引入了范式. 范式有多种级别:第一范式,第二范式,第三范式,b ...

  6. 数据库建表的 15 个最佳实践方式

    前言 对于后端开发同学来说,访问数据库,是代码中必不可少的一个环节. 系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等. 后端开发的日常工作,需要不断的 ...

  7. 数据库逻辑设计之三大范式,一看就懂

    数据库逻辑设计之三大范式 第一范式 第二范式 第三范式 反范式化 范式化设计和反范式化设计的优缺点 范式化 反范式化 第一范式 1NF是对属性的原子性,要求属性具有原子性,不可再分解: 表:字段1. ...

  8. 聊聊数据库建表的15个小技巧

    前言 对于后端开发同学来说,访问数据库,是代码中必不可少的一个环节. 系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等. 后端开发的日常工作,需要不断的 ...

  9. PowerDesigner生成数据库建表sql脚本

    PowerDesigner生成数据库建表sql脚本 一.生成sql server 2000或oracle建表sql脚本 1.新建一个物理模型,通过database菜单下的change current ...

最新文章

  1. IDA动态调试技术及Dump内存
  2. C++中的对象_纪要(二)
  3. Spring框架中的设计模式(一)
  4. 05-WIFI通讯客户端搭建
  5. C语言中的静态函数的作用
  6. 用jQuery监听浏览器窗口的变化
  7. 政策解读:《智能硬件产业创新发展专项行动(2016-2018年)》(下)
  8. 给做技术的换一道菜尝尝:一月冲皇冠?凶残级淘宝店主,无法阻挡的爆款名城!...
  9. [数据模型] 数据表三种关联的概述
  10. 怎么实现角色权限的分配_在 Go 语言中使用 casbin 实现基于角色的 HTTP 权限控制...
  11. bzoj 2962: 序列操作
  12. oracle数据库中的通配符,ORACLE学习笔记系列(9)通配符和特殊字符
  13. Crucible使用说明
  14. php sapi 那些坑,安装PHP出现make: *** [sapi/cli/php] Error 1 解决办法
  15. Python dic 方法汇总
  16. 可以免费打电话的网站
  17. 文件操作,函数练习及答案
  18. 出版社--图书管理系统
  19. awesome-android-tips
  20. 学计算机等级考试电脑版软件,猎证全国计算机等级考试学习系统

热门文章

  1. ClickHouse入门教程
  2. MASM写的盗Q程序
  3. 如何快速把mkv转为mp4格式,并保留字幕!
  4. 微信小程序城市列表构建
  5. 云旅游来了?!八大博物馆淘宝直播间拼家底
  6. 用DirectX实现魔方(一)
  7. cad自定义菜单cui_AutoCAD.NET二次开发:创建自定义菜单
  8. 为什么程序员下班不关电脑呢?
  9. 【Python学习笔记】数据库应用
  10. java 静态工厂方法代替构造器的好处