数据库“范式”,就是数据库设计的指导规范。通常涉及到的有4种,即1NF,2NF,3NF,BCNF,称作“第*范式”。
1NF - 即,无重复的列,且每一列是不可分割的。它是关系数据库的基础。如果违反了第一范式,就表明你的设计不是关系数据库。就当前的数据库产品而言,没有任何产品支持你定义一个还可以细分的列,所以在这些产品上实现的数据库都是满足1NF的。
2NF - 即,数据库表中的每一行必须可以被唯一区分(所有的非关键字要完全依赖关键字,不存在非关键字部分依赖关键字的一部分的情况)。比如(a,b,c)->(d,e,f,g),如果存在a->c这样的部分依赖,那么就是不满足2NF的。
3NF - 即,数据库表中不包含已其他表中已包含的非主关键字(数据表中不存在非关键字对任一候选关键字段的传递函数依赖)。比如关键字a->非关键字b->非关键字c。
BCNF - 即,鲍伊斯科得范式,数据库表中不存在任何字段对任一候选关键字段的传递函数依赖。
数据库设计中我们要尽量满足3NF,这样可以保证数据库操作的一致性。但是并不一定要满足3NF。