规范化理解

Normalization understanding

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

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

规范化本身并不是目的。规范化是一种设计 activity,它根据您正在设计的内容的要求提供信息。您正在为现实世界中存在的事物建模——在本例中为制造订单——并且您想要设计表示。

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

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

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

  • ReorderPoint挂掉(ItemNo, PlantNo)如你所做;
  • ReorderPoint 挂断 ItemNo(在 Item Master 级别);
  • 定义再订购策略(EOQ、依赖项等)并且根本没有永久 ReorderPoint 的项目的一些其他属性。

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