一、第一范式
数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项(摘自百度百科)
简单来说就是一个列只有一种数据类型,不能再被分割
如上图所示,col2又分成了col3,cole4,违反第一范式
二、第二范式
要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识
经典数据数据库表:教师表 id数据行id,name教师姓名,c_id课程id,c_name课程名称
c_name依赖于c_id,不依赖与id,故c_name应与c_id重新组成一个实体学科表 course
三、第三范式
要求一个关系中不包含已在其它关系已包含的非主关键字信息
在第二范式的基础上,不允许存在冗余字段,依旧参考第二范式的图,course表独立成实体后,teacher表中只存储c_id,不存储c_name