第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。
第二范式(2NF):满足第二范式必须先满足第一范式。一个表只能说明一个事务。非主键属性必须完全依赖于主键属性。即所有非关键字段都完全依赖于任意一组候选关键字。
第三范式(3NF):在第二范式的基础上,每列都与主键有直接关系,不存在传递依赖。任何非主属性不依赖与其他非主属性。
所谓传递函数依赖,指的是如果存在”A → B → C”的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系: 关键字段 → 非关键字段 x → 非关键字段y
不符合1NF的例子:
表:字段1,字段2(字段2.1,字段2.2),字段3…….(关系数据库中create不出这样的表)
不符合2NF的例子:
表:学号,姓名,年龄,课程名称,成绩,学分;
这个表明显说明了两个事物:学生信息,课程信息。
不符合3NF的例子:
表:学号,姓名,年龄,所在学院,学院地点,学院联系电话,主键为“学号”;
存在依赖传递:(学号)->(所在学院)->(学院地点,学院电话)