第一范式
1、每一列属性都是不可再分的属性值,确保每一列的原子性
2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。
第二范式
每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。
第三范式
数据不能存在传递关系,即没个属性都跟主键有直接关系而不是间接关系。像:a–>b–>c 属性之间含有这样的关系,是不符合第三范式的。
在实际工作中,数据表的设计很少按照3大范式取设计数据库,而是跟实际业务需要,产生一些冗余数据,确保提高查询效率,增加点冗余数据最多增加一些存储空间的开销,但是提高了查询效率。如果严格按照3大范式设计,查询效率很难提升,因为单表查询比联表查询效率高很多。