您可能不应该在它自己的表中包含每个属性,一个可能更好的方法是拥有一个产品表和一个变体表。这样您就可以在同一张表中查看价格、尺寸、颜色、可用数量等,然后加入产品,即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 |
同样的想法可用于尺寸等,因此您最终不会得到数百个独特的属性变体,从而使您的信息无法报告。