谈谈你对数据库三大范式及反范式的理解

范式

第一范式(1NF) 列不可分

一个列表的值不能再分割。
例如,假设表中有一个列表示用户的爱好

这个列的值可是:足球 篮球 乒乓球
但是这个值是可以再分割的,分成三个值,分为:足球、篮球、乒乓球

第二范式(2NF) 要有主键

表中非主键列都必须依赖于主键列

例如,订单表中有订单编号,并且该列是主键列在这里插入图片描述
注意,这几个非主键列中,产品生产地是不依赖于订单编号的,所以这个列不应该出现在订单表中

第三范式(3NF) 不可传递依赖

直接依赖于主键列,不能间接依赖于,不能依赖传递

例如,订单表中有订单编号,并且该列是主键
在这里插入图片描述
注意,顾客编号依赖于订单编号,顾客姓名依赖于顾客编号,从而顾客姓名间接的依赖于订单编号,那么这里产生了依赖传递

反范式设计(第三范式)

本质上:就是用磁盘(空间)来换取效率(时间),把数据冗余在多个表中,当查询时可以减少或者避免表之间的关联。

比如

IDNAMEAGELEVELXUEYUAN
1一只小小狗21大三软件学院

这样的一个表明明 学院信息和你的等级 就应该采用范式分隔开,但是反范式的写法会有更多的可读性,增加了一点冗余以空间换取时间,对磁盘的消耗可以接受。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小小狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值