数据库设计的三范式

三范式:

  • 1.第一范式(1NF):确保每一列的原子性(做到每列不可拆分)
  • 2.第二范式(2NF):在第一范式的基础上,非主字段必须依赖于主字段(一个表只做一件事)
  • 3.第三范式(3NF):在第二范式的基础上,消除传递依赖
    解释说明:

第一范式:

比如用户表中有字段地址,我们在设计数据表的时候就不能直接给address 存入中国-北京。而是应该设计成国籍,城市两个字段,做到每列不可拆分就是这个意思

第二范式:

比如用户表中不能存入学生成绩信息,成绩信息应该用一张成绩表来保存,用id学生id关联两张表之间的关系

第三范式:

在第二范式的基础上,比如成绩表中有字段单价,数量与合计金额,我们在获取合计金额的时候就不能使用单价*数量的方式来得到,为什么呢,因为如果我们的订单表中有10000条数据,如果我们想得到合计金额就要服务器计算10000次,这时就太浪费我们的服务器了。

反三范式:(现代数据库设计新思想)

反三范式是基于第三范式所调整的,没有冗余的数据库未必是好的数据库,有时为了提高运行效率,就必须降低 范式标准,适当保留冗余数据。

  • 例如:有用户表和公司表,用户表中有用户id,用户名称,公司id,如果想要查询用户,就需要先通过用户表与公司表的关联查询公司名称,在查出需要的用户信息,这样不就浪费我们的服务器资源了吗?
    于是现在人们就想到对于一些查询量比较大的字段,同样放到一张表中,这样就可以提高我们的查询效率了,

总结

使用反三范式不代表着我们不需要遵守三范式,而是通过保留冗余字段来方便我们的查询

那么三范式与反三范式是怎么出现的呢?

因为计算机早期发展的时候硬盘存储比较昂贵,要尽可能的减少冗余字段的出现(以时间换空间),但是现在硬盘已经不再是稀缺资源了,于是便有了反三范式的出现(以空间换时间)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值