我遇到了数据库设计问题。我的项目是关于产品和零售商。
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
表格将每个产品与其卖家
还有Category
表category_id,category_name,category_description
现在我希望在产品中有不同的尺寸,颜色和品牌。我该如何在这个数据库中容纳它们?我已将价格包含在另一个表格中,然后是产品表格,因为不同的零售商可以以不同的价格出售相同的商品。
答案 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
然后,您需要为所有产品保留变体,即使该产品只有一个版本,但通常最好从更短暂的数据中分析出产品数据的“核心”像可用性和价格。