你了解数据库三大范式吗?用来解决什么问题?

数据库的三大范式偶尔会被问起,面试官想考察的是我们平时开发中建表、字段时的一些经验和见解,并不是希望听到那些理论的东西。所以可以先大概说一下三大范式的概念,然后从实际开发经验出发,结合数据表设计方面说起。

第一范式:强调的是列的原子性,即每一列都是不可再分的最小数据单元。

举例:一张用户表中的有个地址字段,它包括了国家省份城市,这个字段就不符合第一范式,因为它还可以继续拆分为三个字段,国家,省份,城市。

第二范式:
1、满足第一范式
2、表必须有一个主键
3、对于没有包含在主键中的列(非主键的其他列)必须完全依赖于主键,而不能只依赖于主键的一部分(比如联合主键中的某一个键)

第三范式:
1、满足第二范式
2、非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列B 依赖于主键的情况。

举例:比如一张学生表的主键是学生id,它还包括两个字段分别是班级id,班级描述。这个班级描述字段并不直接依赖于主键,而是依赖于班级id。所以不符合第三范式。

三大范式解决的问题:

  • 消除重复数据减少冗余数据,从而让数据库内的数据能划分的更合理,让磁盘空间得到更有效利用的一种标准化标准;
  • 消除潜在的异常(插入异常,更新异常,删除异常)
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值