我的标题可能并没有真正表达我想要实现的目标,我有一些相关的表格但我无法弄清楚如何创建这种关系以使存储和检索数据变得非常容易。以下是我能想到的。
color table
colorId(PK)
productId(FK)
colorName
size table
sizeId(PK)
productId(FK)
size
product table
productId(PK)
priceId(FK)
Qty
Name
Title
price table
priceId(PK)
productId(FK)
现在我的问题是我有不同品种的产品,例如
使用productId 1的Men's blue addidas glide running shoes
,此产品有不同的尺寸和不同的颜色,价格因尺寸和颜色而异。例如,如果这双鞋蓝色尺码11的售价为50美元,那么相同尺码和不同颜色的鞋子说大小为12红色可能售价55美元,同样这双鞋蓝色可能只有11尺寸库存和颜色蓝色尺码12可能无法使用,我如何创建我的表以保存颜色和尺寸之间的所有差异,以及价格。对此有任何帮助,谢谢
答案 0 :(得分:0)
你可能不应该在它自己的表中拥有每一个属性,一个更好的方法是拥有一个产品表和一个变量表。这样,您可以在同一个表格中获得价格,大小,颜色,数量等,然后加入产品,即Men's blue adidas glide running shoes
。
您的变体表看起来像这样:
| variant_id | product_id | price | colour_id | size_id | quantity_available | in_stock |
| 1 | 1 | 50.00 | 1 | 11 | 20 | 1 |
| 2 | 1 | 55.00 | 2 | 12 | 0 | 1 |
然后您可以单独加载每个变体,并在您进行销售时更新quantity_available
。我还添加了in_stock
布尔值,因此您可以覆盖是否在您的网站上显示库存而无需调整quantity_available
。
然后,您在variant_id
表上拥有purchase
,以便稍后加入。此外,我喜欢在自己的桌子上放置尺寸和颜色,这样你就可以设置分类来聚合他们所说的所有蓝调,或者所有的XS,S,M,L,XL。
类似的东西:
| colour_id | name | base_colour_id |
| 1 | Royal Blue | 3 |
| 2 | Spanish Blue | 3 |
| 3 | Blue | 3 |
| 4 | Ultramarine | 3 |
| 5 | Green | 5 |
| 6 | Mint Green | 5 |
通过这种方式,您可以添加更多独特的颜色变体,并仍然可以报告基色或全色名称。在这里你可以使用:SELECT * FROM variant_colour a JOIN variant_colour b ON b.colour_id = a.base_colour_id
你得到:
| colour_id | name | base_colour_id | colour_id | name | base_colour_id |
| 1 | Royal Blue | 3 | 3 | Blue | 3 |
| 2 | Spanish Blue | 3 | 3 | Blue | 3 |
| 3 | Blue | 3 | 3 | Blue | 3 |
| 4 | Ultramarine | 3 | 3 | Blue | 3 |
| 5 | Green | 5 | 5 | Green | 5 |
| 6 | Mint Green | 5 | 5 | Green | 5 |
同样的想法可用于尺寸等,因此您最终不会有数百种独特的属性变体,使您的信息无法报告。