现在我正在创建一个应用程序来管理库存。我们经常收到产品,通常它们有不同的有效期或价格。例:
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
我的问题是我是否应该将到期日期和价格也设为主键,以便我可以注册具有不同参数的产品。或者我应该创建一个产品 ID 和收据 ID 的双重 PK。
缓慢变化的维度表中使用复合键是可以接受的。我不同意产品的价格是复合键的一部分。(产品ID,到期日期)会很好。有些人可能会争辩说,你实现了存档表(例如Product_Archive),只在产品表中保留当前记录。
您可以选择使用代理项来代替主键中的 SKU、UPC 或 PLU。
我建议将产品价格作为单独表格的候选者,因为产品价格有许多驱动因素。在实体环境中,您的产品价格会因位置而异。
以脐橙为例。您可以根据购买它们的季节或地区等因素从多个供应商处获取它们。