你可能不应该有它自己的表中的每一个属性,一个可能更好的方法是有一个产品表和一个变种表。通过这种方式,您可以在同一张表中获得价格,尺寸,颜色和数量等信息,然后加入产品,例如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
。 然后您将在purchase
表上有variant_id
,以便您稍后可以加入。另外,我喜欢在自己的桌子上放置尺寸和颜色,以便您可以将分类标准合并到蓝色所说的所有内容,或所有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 |
这同样的想法可以用于大小等,所以你不要有数百个独特的属性变异,使您的信息不可能报告的结束。
好主意谢谢,这帮助我,所以我会接受你的答案 – sam