2016-08-01 102 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

相關問題