规范化理解
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 的项目的一些其他属性。
需求定义了您想要建模的内容,并且可以从那里进行规范化。也可能过度规范化,这对性能有负面影响。
你好,我目前一直在尝试学习一些数据库的基础知识,我的问题是理解规范化。
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 的项目的一些其他属性。
需求定义了您想要建模的内容,并且可以从那里进行规范化。也可能过度规范化,这对性能有负面影响。