1 第一范式(1NF)
数据库表的每一列都是不可分割的原子数据项,即列不可拆分。不满足第一范式的数据库不是关系型数据库。
2 第二范式(2NF)
定义:不存在仅依赖于主键一部分的属性(不能存在部分依赖于主键)
或:建立在第一范式的基础上,要求数据库表中的每个实例或记录必须是可以唯一被区分的, 即唯一标识。
例子:选课关系(学号,课程名称,成绩,学分),学号与课程名称是主键,其不满足2NF,因为课程名称和学分是一对一,学分与另一个主键学号没有关联,即存在了部分依赖于主键
3 第三范式(3NF)
定义:建立在第二范式的基础上,非主键属性必须直接依赖于主键属性而不能传递依赖。
例子:一个表,主键是a列,还有b列和c列,其中b列与a列直接相关,而c列与b列直接相关,进而与主键a列相关,存在了传递,多以不符合3DF
4 巴斯-科德范式(BCNF)
可以看做第三范式的子集
BC范式(BCNF):符合3NF,并且主属性不依赖于主属性。
还可以这么说:若一个关系达到了第三范式,并且它只有一个候选码,或者它的每个候选码都是单属性,则该关系自然达到BC范式。
满足BCNF条件:
1、所有非主属性对每一个候选键都是完全函数依赖;
2、所有的主属性对每一个不包含它的候选键,也是完全函数依赖;
3、没有任何属性完全函数依赖于非候选键的任何一组属性;
5 第四范式 (4NF)
第四范式:要求把同一表内的多对多关系删除。
6 第五范式(5NF)
第五范式:从最终结构重新建立原始结构。
7 反范式
没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,减少了查询时的关联,提高查询效率。