为了创建冗余较小、结构合理的数据库,设计数据库时必须遵循必定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须知足必定的范式。数据库
在实际开发中最为常见的设计范式有三个:spa
一范式1NF(确保每列保持原子性)
一、 数据库表的每一行都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或不能有重复的属性。若是出现重复的属性,就可能须要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。
二、 表的每一行包含一个实例的信息。
第二范式2NF
一、 要求数据库表中的每一个实例或行必须是惟一的。为实现区分,一般须要为表加一个列,以存储各个实例的惟一标识(即主键)。
二、 实体的属性彻底依赖于主关键字。所谓彻底依赖指不能存在仅依赖主关键字一部分的属性。若是存在,那么这个属性和主关键字的这一部分应该分离出来造成一个 新的实体,新实体与原实体之间是一对多的关系。为实现区分一般须要为表加上一个列,以存储各个实例的惟一标识。总之第二范式就是非主属性非部分依赖于主关 键字。
第三范式3NF
一个数据库表中不包含已在其余表中已包含的非主关键字信息。例如存在一个部门信息表,其中每一个部门有部门编号DEPT_ID、部门名称、部门简介等信息。那么在员工信息表中列出的部门编号DEPT_ID后,就不能再有关于部门的其余信息,不然就会形成数据冗余设计