2014-10-27 68 views
1

我需要存儲具有不同屬性(如長度或顏色)的類似產品,我應該將此產品添加不同的ID還是作爲具有多個屬性的產品?存儲具有不同屬性的類似產品

主要問題,我需要通過屬性(4紅色靴子,3藍色等)看到產品數量的可能性,並需要在產品頁面上實現屬性選擇器。

如果創建一個id如何在購物車表中存儲具有選定屬性的屬性以及如何管理數量?

如果創建許多ID,管理數量很容易,但如何實現屬性選擇?

我想到了一些SKU用於鏈接product id與屬性和屬性值。但如何將所有鏈接在一起?

回答

1

Tables是否有存儲您擁有的任何數據。如果您需要關於這些條目的任何特定信息,您必須使用不同的queries。例如,假設下面product表:

+----+-------------+-------------+ 
| ID | ProductNAme | ProductType | 
+----+-------------+-------------+ 
| 1 | Product A | Type A  | 
+----+-------------+-------------+ 
| 2 | Product B | Type A  | 
+----+-------------+-------------+ 
| 3 | Product C | Type B  | 
+----+-------------+-------------+ 

您可以通過編寫得到Type A產品數量以下query(查看This Link爲了更好地理解):

Select count(*) as CountOfProduct from Product where ProductType="Type A"; 

編輯

您在評論中提到,一種產品可能有不同的類型和不同的數量。你可以在一張桌子上做,但看起來很亂。如果您希望發生這種情況,您需要在兩個表之間構建一個稱爲producttype的1-Many **relationship**

type表可以是這樣的:

| TYPE_ID | TYPE | 
|---------|--------| 
|  1 | Type A | 
|  2 | Type B | 
|  3 | Type C | 

和你product表可以是這樣的:

| PRODUCT_ID | PRODUCTNAME | QUANTITY | TYPE_ID | 
|------------|-------------|----------|---------| 
|   1 | Product A |  3 |  1 | 
|   2 | Product B |  2 |  1 | 
|   3 | Product C |  1 |  2 | 
|   4 | Product C |  5 |  3 | 

**需注意,type_id是構建外鍵這兩個表之間的關係。而且,由於您可以擁有多個相同類型的產品(如本例中的產品C),因此此表格將爲您的many表格,而類型表格將爲您的one表格。因此,將foreign key置於many表中,您將建立one to many關係。

現在,爲了結合(或者換句話說,以join),你需要寫一個join查詢作爲以下兩個表:

select ProductName,quantity,Type from Product p 
inner join type t on t.type_id=p.type_id 

,其結果將是你想要什麼:

| PRODUCTNAME | QUANTITY | TYPE | 
|-------------|----------|--------| 
| Product A |  3 | Type A | 
| Product B |  2 | Type A | 
| Product C |  1 | Type B | 
| Product C |  5 | Type C | 

Check this link out for the fiddle

+0

如果我們有3種不同類型的產品A並且我們需要在頁面上創建選擇並且產品可能具有不同類型的數量(產品A具有類型1和2,類型屬於我的案例屬性)並且它們具有自己的價值?我不明白這個例子如何解決這個問題。 – Sonique 2014-10-29 14:07:20

+0

@Sonique我編輯了答案。我希望這是你要找的。 – Payam 2014-10-29 15:28:21

0

如果你正在構建一個電子商務網站,該域名的概念通常被稱爲「變異」;見here

通常情況下,您有一個「產品」表,其中包含該產品的主要屬性,以及一個「變體」表,通過產品ID鏈接回產品。如果您只處理過類似的產品,您可以讓變體表包含所有屬性(例如大小,價格,顏色)的列;如果您有很多不同類型的變體(例如衣服,鞋子,運動器材),那麼您就在「使用關係數據庫的繼承建模」;請參閱this的答案。

相關問題