数据库设计三范式

什么是三范式

设计关系数据库时,遵从不同的规范要求。这些规范要求被称为范式。各种范式呈递次规范,越高的范式数据冗余越小。

范式的划分

数据冗余是指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。

根据数据库冗余的大小,目前关系型数据库有六种范式。范式越高,冗余度越小。

一般遵循前三种范式。

一范式

强调字段的原子性,即一个字段不能够分成其他几个字段。

二范式

满足一范式的基础上,包含两部分内容:

以上的数据表有OrderID和ProductID共同组成的主键,但UniPrice、ProductName只依赖于ProductID,所以不符合二范式的要求。

做如下修改,让其符合二范式要求。

三范式

满足2NF,另外非主键字段必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键字段A依赖于非主键字段B,非主键字段B依赖于主键的情况。

上表非主键字段都完全依赖于主键,符合2NF。不过问题是CustomerName, CustomerAddr, CustomerCity直接依赖的是CustomerID(非主键列),而不直接依赖于主键。它是通过传递依赖。

可通过如下修改,符合三范式。