第一范式第二范式第三范式怎么区分_MySQL数据库设计三范式

03d65dad01e2da68f76119eae6cb7149.png 点击上面“蓝字”关注我们  cfe26c68d46159f6cf92654f903ac642.png

1 第一范式

第一范式是为了排除 重复组 的出现,因此要求数据库的每个列的值域都由原子值组成;每个字段的值都只能是单一值。1971年埃德加·科德提出了第一范式。即表中所有字段都是不可再分的。

重复组通常会出现在会计账上,每一笔记录可能有不定个数的值。举例来说:f92f2c04ad28b35d4f966ea3ed36442b.png
“数量”就是所谓的重复组了,而在这种情况下这份资料就不符合第一范式。想要消除重复组的话,只要把每笔记录都转化为单一记录即可:0679c73f42dc4e5f1d0caa88c7411a4a.png

  • 如下联系方式是一个复合属性,就违反了该范式,在数据库中是无法分离出来的。1b70a7d9633657a4d2f4271a76af0255.png

  • 简单改动即可6c7731912a62f8fd10f59ccf3c194a53.png

即标准的二维表结构。

第二范式

前提

标准的二维表,即第一范式成立

表中必须存在业务主键,并且非主键依赖于全部业务主键

例如如下博客表实例afd4e6437fd03380c14eb7b167ff82e4.png

  • 使用用户字段作为PK是否可行呢?
    显然一个用户会对应多个博客记录,且章节标题也能为多个用户编辑,所以单列字段PK失效

  • 使用的复合PK
    然而用户积分字段也只和用户字段依赖,并不依赖于整体的PK,所以依旧不符合第二范式

  • 拆分将依赖的字段单独成表0b2548a290e6d7a66a9827537e441359.png2107d976dd5eb800b0e616b2b86411ff.png

从上面,我们也可以发现:

  • 若表的PK只有一个字段组成,那么它本就符合第二范式
  • 若是多个字段组成,则需考量是否符合第二范式

3 第三范式

表中的非主键列之间不能相互依赖

依旧看看课程表e8323dade01a075c0614a33a54d1a226.png

首先,一个字段的PK显然符合第二范式,大部分字段也只依赖于PK,然而对于讲师职称字段其实是依赖于讲师名的,所以不符合第三范式.

  • 将不与PK形成依赖关系的字段直接提出单独成表即可959e44b95bc47b5934560c076ae6b621.pngcab68385d0fd14e879d401bc51f695c4.png
  • 好文!点个好看!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值