数据库设计的三范式

设计范式是数据库设计的基础,包括第一范式、第二范式和第三范式,旨在减少数据冗余和信息异常。第一范式要求每个字段具有原子性,第二范式强调非主键字段完全依赖主键,第三范式避免非主键字段对主键的传递依赖。然而,过度规范化可能影响数据库性能,有时需要在规范化和性能之间做出平衡,例如通过添加冗余字段来优化查询速度。
摘要由CSDN通过智能技术生成

什么是设计范式?

即设计表的依据

设计范式的作用?

都是为了①减少数据的冗余、以及 ②增删改时信息异常

1. 第一范式

  • 任何一张表都应该有主键 primary key
  • 并且每一个字段具有原子性,不可再分

:以下表无主键、字段还可以再分
在这里插入图片描述

在这里插入图片描述

2. 第二范式

第二范式是建立在第一范式基础上的,
要求所有非主键字段完全依赖主键不能产生部分依赖
即只要是联合主键就不满足第二范式 !
如果一个表是单一主键,那么它就复合第二范式


在这里插入图片描述
以上虽然确定了主键,但此表会出现大量的冗余,主要涉及到的冗余字段为“学生姓名”和“教师姓名”,出现冗余的原因在于,学生姓名部分依赖了主键的一个字段学生编号,而没有依赖教师编号,而教师姓名部门依赖了主键的一个字段教师编号,这就是第二范式部分依赖。

:多对多使用3张表! 关系表有两个外键!
在这里插入图片描述

3. 第三范式

建立在第二范式基础上的,非主键字段不能传递依赖于主键字段。(不要产生传递依赖)

在这里插入图片描述
上表不是联合主键,满足第二范式!该表只有一个主键,即非主键只能完全依赖主键!
从上表可以看出,班级名称字段存在冗余,因为班级名称字段没有直接依赖于主键,班级名称字段依赖于班级编号,班级编号依赖于学生编号,这就是传递依赖。

改: 一对多两张表! 多的这张表加外键
在这里插入图片描述

三范式总结:

第一范式:有主键,字段不可分
第二范式:不能部分依赖(如联合主键)
第三范式:不能传递依赖

规范化和性能的关系:

在数据规范化的同时 , 要综合考虑数据库的性能 :

  • 关联查询的表不能超过三张
  • 为满足某种商业化的需求和目标 , (成本,用户体验!!)数据库性能比规范化数据库更重要
  • 通过在给定的表中添加冗余的字段(从多表查询变为单表查询),以大量减少需要从中搜索信息所需的时间

参考:https://blog.csdn.net/weixin_47930667/article/details/117127360

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值