数据库设计理论

第一范式标准:

1)无重复的数据

2)每一列中的数据是都是原子数据

如下图的表中就不满足这两个条件,Customer数据重复了,ItemsOrderd 中不是原子数据(一列中有多组数据)。 

优化方法:

1)新建Customer表和order表做主外键关联。

2)分拆ItemOrdered列,将有多组数据的行分成多行,并新建主键列,因为分拆多行后原OrderNo列已不能唯一标识一行数据了。

第二范式标准:

1. 符合第一范式

2.每列必须依赖于整个键

如下表中 CustomerNo、PartNo 只依赖与 OrderNo 而不依赖于LineIitem. 像这种情况就需要将下面的订单表拆成订单主表(表头)与订单明细表。

通常明细表以表头名开头来名字,如这里的主表命名为Order,明细表命名为OrderDetails。

第三范式标准:

1.符合第二范式。

2.任何列都不能依赖与非键列。

3.不可以有派生数据。

以上图中的表为例,其中Description Wt 列就依赖于PartNo列。为解决此问题,应再拆表,新一个Product表(包含PartNo、Wt、Description、UnitPrice)。

注意这里出于业务考虑原表中的UnitPrice列应保留。

上图中Total Price为派生数据,因为此数据是可以通过Unit Price 与 Qty 计算而得到。(需要注意的是:有时候为了性能考虑应违反此规则,

特别是有时候需要以此列建立索引时。)

原文地址:https://www.cnblogs.com/topwill/p/4482728.html