范式例子

第二范式

第二范式要求每个非键列完全依赖于整个主键,而不仅仅依赖于主键的一部分。当主键由多个列组成时,就适用此规则。例如,假定有包含以下列的表,其中“订单 ID”和“产品 ID”构成主键:

  • 订单 ID(主键)
  • 产品 ID(主键)
  • 产品名称

此设计违反了第二范式,因为“产品名称”依赖于“产品 ID”,但并不依赖于“订单 ID”,因此并不依赖于整个主键。必须将“产品名称”从表中删除。它属于不同的表,即属于“产品”表。

第三范式

第三范式要求不仅每个非键列依赖于整个主键,且非键列要互相独立。

另一种说法就是,每个非键列必须且只能依赖于主键。例如,假定有包含以下列的表:

  • 产品 ID(主键)
  • 名称
  • SRP
  • 折扣

假定“折扣”依赖于建议零售价 (SRP)。此表就违反了第三范式,因为非键列“折扣”依赖于另一个非键列 SRP。列独立性表示应该可以在不影响任何其他列的情况下更改任何非键列。如果更改了 SRP 字段中的值,“折扣”将相应地发生改变,这样就违反了该规则。在本例中,“折扣”应该移到另一个以 SRP 为主键的表中。

你可能感兴趣的:(例子)