数据库-三范式

第一范式

1 数据库所有字段都只有单一属性。
2 单一属性由基本数据类型构成。
3 数据库的表都是二维的行与列。
在这里插入图片描述
例如上面的例子就不满足第一范式,因为是可以继续拆分的,拆分为更多的属性。

第二范式

1 符合第一范式
2 表必须有个主建
3 其它字段可以由主键确定
4 二范式目的是通过拆表减少数据冗余
在这里插入图片描述
上面的表存在三个异常:

  • 插入异常,如果要新建一个系,目前这个系还没有学生则插入不了。
  • 删除异常,如果这个系的学生都被删除了,那么这个系耶就不存在了。
  • 更新异常,如果我们需要改学生的系名,则需要修改多个地方,系主任都要修改。

上面的表比如课程是由系来决定的,每个系不一样,分数则是由学号和课程共同决定的所以上面这张表可以拆分为两张表,这样主键就可以唯一确定一个属性:
在这里插入图片描述
这样拆分以后删除异常还是存在,比如学生高芳芳不存在了,那么这个时候法律系也不存在了,同时系主任依赖于系名,只有知道了系名才有系主任,所以需要进一步拆分。

第三范式

1 要求符合第二范式
2 字段要求依赖于主键,不允许间接依赖
3 第三范式的目的在于拆分实体(完善主从表)
在这里插入图片描述
三范式不是强制要求,需要根据场景进行选择,否则会出现主从表关系过多,影响SQL效率。

参考资料:https://www.itlaoqi.com/chapter.html?sid=106&cid=1610

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值