1

现在我正在创建一个应用程序来管理库存。我们经常收到产品,通常它们有不同的到期日期或价格。例子:

RECEIPT    PROVIDER     PRODUCT       PRODUCT EXPIRATION DATE    PRICE   QUANTITY
2125       IQT          PLASTIC BAG   10/21/2012                 2.35    30
2126       MDU          PLASTIC BAG   05/03/2012                 2.45    60
2127       PRADO        PLASTIC BAG   10/21/2012                 2.30    10


PRODUCT    NAME          EXPIRATION DATE   PRICE  QUANTITY
1001       PLASTIC BAG   10/21/2012        2.35   30
1001       PLASTIC BAG   05/03/2012        2.45   50
1001       PLASTIC BAG   10/21/2012        2.30   10

我的问题是我是否也应该设置 EXPIRATION DATE 和 PRICE 主键,以便我可以注册具有不同参数的产品。或者我应该创建 PRODUCT ID 和 RECEIPT ID 的双 PK。

4

1 回答 1

2

我认为缓慢变化的维度表中的复合键是可以接受的。我不同意产品的价格是组合键的一部分。(ProductID, ExpirationDate) 会很好。有些人可能会争辩说您实现了一个存档表(例如 Product_Archive),并且只在 Product 表中保留当前记录。

您可以选择使用代理键代替主键中的 SKU、UPC 或 PLU。

我建议将产品价格作为单独表格的候选者,因为产品价格有许多驱动因素。在实体环境中,您的产品价格会因地点而异。

以脐橙为例。您可以根据购买它们的季节或地区等因素从多个供应商处获得它们。

于 2012-11-21T15:52:25.410 回答