SQL三大范式

前言

sql的语句很简单,但是一些数据处理的逻辑却有点绕,并且sql还有8种范式,对数据库的建表也有很大的要求,今天就简单说一说三大范式,这三大范式已经够用了。其余范式自行了解就可。

三大范式

1.第一范式(1NF)
强调的是列的原子性,即表中每一列的字段属性都是唯一的,不可再分的

学生ID姓名性别手机号
101大狗蛋13825074109

2.第二范式(2NF)
在满足1NF的基础上再满足依赖性的两个约束:一张表必须有一个主键;非主键类必须完全依赖于主键,而不能只依赖主键的一部分。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

学生ID学生姓名学生性别学生手机号老师ID老师姓名老师手机号
101大狗蛋13825074109011张大宝16489466283
102大猫猫13814956231011张大宝16489466283
103小笨笨15614954531012王麻子15589466280

主键:学生ID
从上表可以看出,内容只要分为学生和老师,一个老师对应多个学生,老师的内容与学生ID这个主键不相关,完全违背了第二范式,所以直接拆分为学生表,老师表就可以。

3.第三范式(3NF)
在满足2NF的基础上再满足一个条件:非主键列必须直接依赖于主键,不能存在传递依赖。也就是说,确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

课程ID老师姓名课程名字上课时间老师姓名老师手机号老师职位
101大狗蛋马克思理论8:00王麻子16489466283讲师
102大猫猫军事理论12:00张大宝16489466283教授

主键:课程ID
从上表可以看出,所有内容都与依赖于主键ID,符合第二范式。但是老师电话,老师职位直接依赖的是任课老师,不直接依赖于主键ID,违背了第三范式。所以直接拆分为课程表和教师表就可。

三大范式的作用

三大范式只是一般设计数据库的基本理念,是为了在设计中更好的解决数据冗余,数据有效性检查,提高存储效率。
注意:所谓的范式,是用来学习参考的,设计的时候根据情况来设计数据库,不用完全按照范式设计

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

倪行

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

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

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

打赏作者

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

抵扣说明:

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

余额充值