产品ID具有不同的到期日期

时间:2012-11-21 15:38:54

标签: sql database-design data-modeling

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

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。

1 个答案:

答案 0 :(得分:1)

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

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

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

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