MySQL - MySQL 三范式理解

一、第一范式

1NF 是要求 每列 具有原子性,不可再分解;即每列的内容不可被分割。

例: 一个表字段, address 字段, 存储内容为 省市区-详细地址


如果项目环境,经常按 省市区 搜索 ,这就不符合第一范式。因为可以拆成 详细地址 四个字段。


二、第二范式

2NF要求在符合 第一范式 的基础上, 实现实体的唯一性;即一张表只描述一件事情。

例:订单信息表中,只保留 订单ID用户ID收件人姓名收件人地址收件人手机号订单备注用户信息收件人信息 的字段, 不可出现 订单商品信息订单状态信息 等。


可以分为 订单信息表订单商品表订单状态表退货表等。


三、第三范式

3NF要求在符合 第二范式 的基础上, 要求 非主键的列只依赖于主键;


第三范式与第二范式有些像,只不过所描述的内容不一样。一个描述的是一个表应该只作用于一种环境需求,一个描述的是 除主键外,每个字段只能通过主键关联。

例: 订单信息表中,只保留 用户ID 的一个用户信息 字段,就不能再出现 用户性别、用户出生年月 等字段。


因为 性别、出生年月 无法与 订单表主键关联并且识别出是哪位用户,所以只能通过 用户ID 来绑定。

但根据实际场景需求,比如订单信息页面, 需要显示 用户的真实姓名, 且 用户的真实姓名是不可改的, 那就可以在 订单信息表 中创建一个 用户真实姓名 的冗余字段。

猜你喜欢

转载自blog.csdn.net/qq_35453862/article/details/126127323