数据库三大范式入门讲解

数据库三大范式讲解

一、为什么需要数据规范化(使用三大范式)?

  • 信息重复
  • 更新异常
  • 插入异常
    • 无法正常显示信息
  • 删除异常
    • 丢失有效的信息

二、什么是三大范式?

第一范式(1NF)

描述: 要求数据库表的每一列都是不可分割原子数据项,保证每一列都不可再分!

举例说明:

  • 错误示范(家庭信息和学校信息应该不可再分才行)

    image-20211227212625711

  • 正确示范

    image-20211227212734358

第二范式(2NF)

前提:满足第一范式

描述: 每张表只描述一件事情(职责分配),非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖),

​ 要确保数据库表中的每一列都和主键有关,而不能只与主键的某一部分相关(主要针对联合主键而言)

image-20211227213547310

第三范式(3NF)

前提:满足第一范式和第二范式

描述: 任何非主属性不依赖于其他非主属性(在2NF基础上消除传递依赖)

​ 第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

image-20211227214132115

三、任何情况下都适合用三大范式吗(面试的时候一定要往这个方向靠,加分项)?

规范性 和 性能的问题

关联查询的表不得超过三张(在阿里巴巴,因为多表联合查询的速度慢),所以鱼和熊掌不可兼得

  • 考虑商业化的需求和目标(成本,用户体验),开发时数据库的性能更加重要
  • 在规范性能的问题的时候,需要适当的考虑一下 规范性(三大范式)!
  • 故意给某些表增加一些冗余的字段。(从多表查询中变为单表查询)
  • 故意增加一些计算列(大数据量降低为小数据量的查询:索引)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

可爱发

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

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

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

打赏作者

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

抵扣说明:

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

余额充值