关系数据库中的关系是需要一定的要求的,满足不同程度要求的为不同范式。
范式是向下包含的,即满足第二范式必须满足第一范式。
第一范式(1NF):满足最要求的叫第一范式。第一范式要求所有的字段都有意义,具有原子性,不可再分。例如姓和名,都不能再分。
第二范式(2NF):要求数据库表的中,每个元组(即每行记录)必须可以被唯一的区分,即表必须有主关键字或主键。
第三范式(3NF):要求数据库表中,不包含已在其它表中的已包含的非主关键字信息。例如学生表中,只应该有班级的ID,不能包含班级的名称,因为班级表已经有非主关键字班级名称。
在数据库设计中还有BCNF即第三范式的补充范式、第四范式和第五范式。
在数据库设计中,尽量满足第三范式。一般设计数据库的做法是,先按照概念模型,抽取出相应的表和字段,根据范式要求,去掉冗余的字段和依赖,至少满足第三范式的要求,但根据性能和开发的便利,局部调整数据库表结构,做一些冗余字段。