三大范式:
简单归纳:
第一范式(1NF):字段不可分;原子性。 字段不可再分,否则就不是关系数据库;
第二范式(2NF):有主键,非主键字段依赖主键;唯一性 。一个表只能有一种数据;
第三范式(3NF):非主键字段不能相互依赖;每列都与主键有直接关系,不存在传递依赖。
第一范式(1NF):字段不可分
不可分割的意思就按字面理解就是最小单位,不能再分成更小单位了。
这个字段只能是一个值,不能被拆分成多个字段,否则的话,它就是可分割的,就不符合一范式。
不过能不能分割并没有绝对的答案,看需求,也就是看你的设计目标而定。
第二范式(2NF):有主键,主键唯一性
为什么要有主键?没有主键就没有唯一性,没有唯一性在集合中就定位不到这行记录,所以要主键。
其他字段为什么要依赖于主键?因为不依赖于主键,就找不到他们。更重要的是,其他字段组成的这行记录和主键表示的是同一个东西,而主键是唯一的,它们只需要依赖于主键,也就成了唯一的。
第三范式(3NF):非主键字段不能相互依赖
就是要消除传递依赖,方便理解,可以看做是“消除冗余”。
消除冗余应该比较好理解一些,就是各种信息只在一个地方存储,不出现在多张表中。