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

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

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

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

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

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

首先满足第一范式,并且表中非主键列不存在主键部分依赖。
第二范式要求每个表只描述一件事情
在这里插入图片描述
理解:
二范式就是要有主键,要求其他字段都依赖于主键。

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

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

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

除了主键订单编号外,顾客姓名依赖于非主键顾客编号。
在这里插入图片描述
理解:
三范式就是要消除传递依赖,方便理解,可以看做是“消除冗余”
消除冗余应该比较好理解一些,就是各种信息只在一个地方存储,不出现在多张表中。

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

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

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

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值