簡體   English   中英

如何在mysql數據庫中創建多個相關表

[英]How to create multiple related tables in mysql database

我的標題可能沒有真正傳達我想要達到的目的,我有一些相關的表,但是我不知道如何創建這種關系以使存儲和檢索數據變得更加容易。 以下是我能想到的。

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 ,該產品具有不同的尺寸和顏色,價格隨尺寸和顏色而變化。 例如,如果這雙顏色為BLUE 11的鞋子的售價為50美元,那么同一雙尺寸更大且顏色不同的鞋子的尺寸為12,紅色的鞋子可能售價為55,那么這雙顏色為藍色的鞋可能只有11的尺寸庫存和顏色藍色這雙12號的大小可能無法使用,我如何創建表以保存顏色和尺寸之間的所有差異以及價格。 任何幫助,謝謝

您可能不應該在自己的表中擁有每個屬性,一種可能更好的方法是擁有一個product表和一個variant表。 這樣,您可以在同一張桌子上獲得價格,尺寸,顏色,數量等信息,然后加入產品,即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 |

可以將相同的想法用於大小等,因此最終不會出現數百個獨特的屬性變體,這些變體使您的信息無法報告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM