第一范式
第一范式(1NF):原子性,字段不可分
1、第一范式的列应该是原子性的,不可在分割的,不可拆解的。简单来说,就是在设计数据库时,数据库得列是不可分割的原子数据项,为不能是集合,数组,记录等,非原子数据项,如果实体中的某一个属性有多个值,必须拆分为有多个属性,通俗理解就是一个字段,只能存储一项信息。
2、列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据
- 错误
联系 |
老王、1381234**、北京 |
- 正确
名字 | 电话 | 地点 |
老王 | 1381234** | 北京 |
第二范式
第二范式(2NF):唯一性,一个表只能说明一个事务,有主键,非主键字段依赖主键
1、第二范式就是在第一范式的基础上建立出来的,第二范式(2NF)要求数据库得表中每个实例或者行必须可以唯一的被区分,为实现区分,通常会设计一个主键来帮助实现。如果存在多个主键,就不可以存在这样的属性,它只能依赖于一个主键,这样就是不符合第二范式。通俗讲就是任意一个字段都只依赖表中的同一个字段。
2、每一行的数据只能与其中的一列相关,即一行的数据只做一件事,如果表中出现重复的数据就要把它拆分出来。
- 错误
- 正确
第三范式
第三范式(NF):创建第三范式的前提就是必须先要建立第二范式
1、简单说就是非主键字段不能相互依赖,属性需要直接依赖于主键。
2、第三范式就是要求表中不能有其他表中存在的、存储相同信息的字段,通常实现是在通过外键去建立关联,因此第三范式只要记住外键约束就好了。
- 错误
订单编号 | 订单日期 | 用户编号 | 用户名 | 用户年龄 | 用户性别 |
1001 | 2020-03-01 12:39:54 | 2001 | 老王 | 38 | 男 |
- 正确
订单表
订单编号 | 订单日期 | 用户编号 |
1001 | 2020-03-01 12:39:54 | 2001 |
用户表
用户编号 | 用户名 | 用户年龄 | 用户性别 |
2001 | 老王 | 38 | 男 |