MySql三大范式

一、引入三大范式

  • 必须保证数据库设计的合理性
       -数据库设计关系整个系统的架构,关系到后续的开发效率和运行效率
       -数据库的设计主要包含了设计表结构和表之间的联系
  • 如何是合理数据库
       -结构合理
       -冗余较小
       -尽量避免插入删除修改异常
		更新异常(Update Anomalies)
			数据冗余 ,更新数据时,维护数据完整性代价大
			例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组
		插入异常(Insertion Anomalies)
			该插的数据插不进去
			如果一个系刚成立,尚无学生,就无法把这个系及其系主任的信息存入数据库
		删除异常(Deletion Anomalies)
			不该删除的数据不得不删
			如果某个系的学生全部毕业了,在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了

  • 如何才能保证数据库设计水平
       -遵循一定的规则
       -在关系型数据库中这种规则就称为范式
  • 什么是范式(NF= NormalForm)
       -范式是符合某一种设计要求的总结。
       -要想设计一个结构合理的关系型数据库,必须满足一定的范式。
    在这里插入图片描述
    第一范式
    确保每列保持原子性(不可再分割)
    在这里插入图片描述
    在上面的表中,“家庭信息”和“学校信息”列均不满足原子性的要求,故不满足第一范式,调整如下:在这里插入图片描述
    第二范式
  • 在1NF的基础上,第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。
  • 即在一个数据库表中只描述一件事情。

示例

  • 学号和课程编号作为联合主键
  • 课程名称只依赖于课程编号,而和学号没有关系
    在这里插入图片描述
    解决:
    在这里插入图片描述在这里插入图片描述
    第三范式
  • 在2NF基础上,确保数据表中的每一列数据都和主键直接相关,而不能间接相关
  • 属性不依赖于其他非主属性。

示例
在这里插入图片描述在这里插入图片描述

二、反范式

往往我们在实际项目中,考虑性能和效率问题,会违反三大范式的约束。
规范性和性能问题
 关联查询的表不能超过三张

   - 考虑商业的需求和目标,(成本、用户体验!)数据库的性能更加重要
   - 在规范性能的问题时,需要适当考虑一下规范性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贝西奇谈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值