2016-08-01 100 views
0

我的标题可能并没有真正传达我想要实现的目标,我有一些相关的表,但我无法弄清楚如何创建这种关系来进行存储和检索数据很容易。以下是我能够想出的。现在如何在mysql数据库中创建多个相关的表

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) 

我的问题是我的产品有不同的品种,例如 Men's blue addidas glide running shoes与productId参数1,本产品具有不同尺寸和不同的颜色和价格上的大小和颜色有所不同。例如,如果这双鞋子的颜色BLUE 11尺码售价为50美元,同一双尺码较大且颜色不同的鞋子所说的尺码为12的颜色红色可能售价为55美元,同样这双鞋子颜色蓝色可能只有尺码11在这对货品和颜色蓝色尺码12可能不可用,我如何创建我的表来保存颜色和尺寸以及价格之间的所有差异。对此有任何帮助,谢谢

回答

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。 然后您将在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 | 

这同样的想法可以用于大小等,所以你不要有数百个独特的属性变异,使您的信息不可能报告的结束。

+0

好主意谢谢,这帮助我,所以我会接受你的答案 – sam

相关问题