产品和零售商的数据库,适应不同的产品属性

时间:2012-02-24 05:44:56

标签: database database-design

我遇到了数据库设计问题。我的项目是关于产品和零售商。

  • Product表:product_id, product_name, product_description, category_id, quantity_per_unit

  • Retailer表:retailer_id, retailer_name, City

  • Retailer's Stock表:retailer_id, product_id, unit_price, availability

Retailer's Stock表格将每个产品与其卖家

相关联

还有Categorycategory_id,category_name,category_description

现在我希望在产品中有不同的尺寸,颜色和品牌。我该如何在这个数据库中容纳它们?我已将价格包含在另一个表格中,然后是产品表格,因为不同的零售商可以以不同的价格出售相同的商品。

2 个答案:

答案 0 :(得分:1)

您现有的数据库设计已满足您的规定要求。产品中尺寸,颜色和品牌组合的每个实例都是Product表格中的一行。这通常被称为库存单位(SKU)。

如果您想要更高级别的产品,请考虑将当前的Product表分成两部分,如下所示:

ProductType ( product_type_id, product_type_name, product_type_description, 
              category_id )

SKU ( sku_id, quantity_per_unit, product_type_id )

然后修改您的RetailersStock表格以引用SKU而不是Product

答案 1 :(得分:0)

这是库存系统的常见问题;不同的颜色,大小等通常称为“variants”。还有其他questions on StackOverflow。

这里经常有两个问题交织在一起。

一个是“我正在销售肥皂,毛巾和推土机;我如何设计一个架构,允许我存储和推理这些产品的属性,当它们完全不同并且我事先不知道属性是什么?“我现在假设这不是你的问题。

第二个问题是“如何跟踪变种的库存,价格等?”。

这方面的经典答案是拥有一个“产品”表,其中包含所有属性共有的属性,以及具有特定于变体的属性的产品变体表,以及库存数量和价格(如果变种可以有不同的价格,例如大包装的肥皂比小包装更贵。

Product table: product_id, product_name, product_description, category_id, quantity_per_unit
Product_Variant table:  product_variant_id, product_id(FK), size_code, colour_code
Retailer's Stock table: retailer_id, product_variant_id, unit_price, availability

然后,您需要为所有产品保留变体,即使该产品只有一个版本,但通常最好从更短暂的数据中分析出产品数据的“核心”像可用性和价格。