规范化理解

时间:2015-11-26 11:45:34

标签: normalization database-normalization

您好我一直在尝试学习一些数据库的基础知识,我的问题是理解规范化。

2nf和3nf在这样的事情上会是什么

CustNo(pk),CustBal,CustDiscount

OrdNo(pk),CustNo,ShipAddr,OrderDate

ItemNo(pk)ItemDesc

ItemNo(pk),PlantNo(pk),ReorderPoint,QtyOnHand

OrderNo(pk),ItemNo(pk),LineNo,QtyOrdered,QtyOutstanding

OrderNo(pk),LineNo(pk),ItemNo,QtyOrdered,QtyOutstanding

1 个答案:

答案 0 :(得分:0)

规范化本身并不是目的。规范化是一项设计活动,取决于您所设计的要求。您正在对现实世界中存在的东西进行建模 - 在这种情况下是制造订单 - 并且您希望设计表示。

例如,考虑一下您定义的这两个关系:

  • ItemNo(pk)ItemDesc
  • ItemNo(pk),PlantNo(pk),ReorderPoint,QtyOnHand

是否为每个工厂的每个项目设置了ReorderPoint,或者是否存在库存规划人员为导致计算ReorderPoint的项目设置的策略?有可能:

  • ReorderPoint挂起(ItemNo,PlantNo)就像你一样;
  • ReorderPoint挂起ItemNo(在Item Master级别);
  • 项目的其他一些属性,用于定义重新排序策略(EOQ,依赖项目等),并且根本没有永久的ReorderPoint。

需求定义了您想要建模的内容,并且可以从中进行规范化。也可能过度标准化,这会对性能产生负面影响。