【问题标题】:Product ID with different expiration date具有不同有效期的产品 ID
【发布时间】:2012-11-22 00:02:39
【问题描述】:

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

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。

【问题讨论】:

  • 主键就像高地人——只能有一个。
  • 那我该怎么做才能注册不同数据的产品?因为他们不仅希望我保留收据和信息,而且他们希望在库存中看到它。

标签: sql database-design data-modeling


【解决方案1】:

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

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

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

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

【讨论】:

  • 好的,我将使用产品 ID、到期日期键并创建存档表。
  • 如果您不打算将缓慢变化的维度保留在同一个表中,则只需要存档表。我想你稍微误解了我的回答。
  • ...我想我很抱歉 Rob 我刚刚开始从事这方面的工作...而且我什至还没有完成学业...这是一个很大的机会,但对我来说很难.谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多