2016-11-19 101 views
0

我正在爲地毯公司開發mvc應用程序。地毯的價格將取決於顏色組合和尺寸。因此,爲了模擬這種情況,我使用了2個表格。 1.地毯。 2.CarpetVarients。(適用於各種顏色和尺寸組合)。這個數據庫設計好嗎?

在CarpetVarients表中,我正在考慮創建「顏色」,「尺寸」和「價格」欄(沿其他欄)。顏色列將存儲逗號分隔的顏色(如奶油色,紅色)。

該設計是否可以工作?或者我應該讓每個組合成爲不同的地毯。

+1

什麼樣的查詢將用於顏色列? – Marichyasana

+0

好點。你會想知道'告訴我所有的顏色都是紅色的'地毯嗎?如果不是,則說明字段中的顏色很好。如果顏色需要單獨查詢,你應該把它放在它自己的查找表中 –

+0

我還沒有開始編程,但感覺與.Where(c => c.Colors.Contains(「紅色」))的實體sql可能與一個加入2張桌子。 – rahul

回答

1

通常,將東西存儲爲分隔字符串並不是一個好主意(除非您正在討論的地毯有多種顏色,在這種情況下情況可能會有所不同)。最好爲每種顏色/尺寸組合排成一行。

也許這將是更好的想你叫什麼Carpet作爲Style,然後的Carpet表可以有StyleColourSize

例如

Style 
StyleID  StyleName Description 
1   'Modern' 'Striped' 
2   'Rustic' 'Checks' 

Carpet 
CarpetID StyleID Colour   Size Price 
1   1  'Red-Green'  'Small' '£' 
2   1  'Orange-Teal' 'Large' '£££' 
3   2  'Violet-Magenta' 'Large' '£££££' 

例如,設計回答「告訴我所有具有xxx顏色的地毯」。

… 
Carpet 
CarpetID StyleID Size Price 
1   1  'Small' '$' 
2   1  'Large' '$$$' 
3   2  'Large' '$$$$$' 

Colour 
ColourID ColourName RGB 
1  Red  255, 0, 0 
2  Green  0, 255, 0 

CarpetColour 
CarpetID ColourID 
1  1 
1  2 
2  3 
2  4 
...    
+0

你能舉個例子嗎?地毯可以有多種顏色。它就像一件襯衫,但不同的顏色會有不同的價格。假設x尺寸的藍黑色地毯1的價格爲y,x尺寸的綠黑色地毯1的價格爲z。 – rahul

+0

@rahul示例添加,本質不是在同一行上的顏色不同*選項*,只是組合中的所有顏色。 – mendosi

+0

謝謝你,它看起來更可行。但我有點懷疑,諸如「告訴我所有的顏色都是紅色的地毯」這樣的問題?可以準確回答。有更好的設計可能嗎? – rahul

0

您應該創建表如下:

Carpet 
CarpetID (PK), CarpetName, Description 
    1    abc  green-yellow 2*3 

CarpetVarient 
StyleID (FK), Color, Size, Price 
    1   green 2  100 
    1   yellow 3  100 

因此地毯可以是多種風格和地毯的總price將基於StyleId價格的總和。 Ex.The地毯名爲ABC將總共200

+0

公司將決定價格,沒有固定的價格標準。地毯可以有顏色組合,不同的顏色組合會有不同的價格。它的尺寸爲x的藍黑色地毯1的價格爲y,尺寸爲x的綠黑色地毯1的價格爲z。 – rahul

+0

兩種價格都可以基於款式還是整體?如果整體,那麼我們可以將價格歸檔到主表。第二個表適用於風格組合 –

+0

價格取決於2個屬性顏色(或單一顏色)和大小。但我無法理解你的模型。特別是「說明」列。 2 * 3是? – rahul

0

,你也可以這樣做

Carpet: 
CarpetId Carpet_PartNumber Color Size parentID Price 
1    AB12   NULL NULL NULL NULL 
2    AB23   Green 12inch 1  100 

這樣你就可以有充分的地毯作爲一個單獨的產品。 注意(對於顏色和尺寸,您可以使用LOOKUP表格)