2016-11-19 79 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表格)