现在我正在创建一个管理库存的应用程序。我们经常收到产品,通常会有不同的到期日或价格。例如:
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。
答案 0 :(得分:1)
我认为在缓慢变化的维度表中的复合键是可以接受的。我不同意产品的价格是复合键的一部分。 (ProductID,ExpirationDate)没问题。有些人可能会争辩说你实现了一个存档表(例如Product_Archive),只保留当前记录在Product表中。
您可以选择使用代理键代替主键中的SKU,UPC或PLU。
我建议产品价格是单独表格的候选者,因为产品价格有很多驱动因素。在实体环境中,您的产品价格会因地点而异。
以脐橙为例。您可以根据您购买它们的季节或地区等内容从多个供应商处获取它们。