第一范式(1NF)
确保每列保持原子性,所有字段值都是不可分解的原子值。
第二范式(2NF)
确保每列都和主键相关,要求表中每一列都和主键相关,不能只与主键的某一部分相关。即在一个表中,只能保存一种数据,不能把多种数据保存在同一张表中
比如要设计一个订单信息表,因为订单中可能有多种商品,所有要将订单编号和商品编号作为数据库表的联合主键
这样有一个问题:表中以订单编号和商品编号作为联合主键。这样在该表中商品名称、单位、价格等信息不与该表主键相关,而是仅仅与商品编号相关。所以在这里违反第二范式原子。
修改后如下:
这样设计,在很大程度上减小了数据库的冗余。
第三范式(3NF)
确保每列都和主键直接相关,而不是间接相关。