我正在为地毯公司开发mvc应用程序。地毯的价格将取决于颜色组合和尺寸。因此,为了模拟这种情况,我使用了2个表格。 1.地毯。 2.CarpetVarients。(适用于各种颜色和尺寸组合)。这个数据库设计好吗?
在CarpetVarients表中,我正在考虑创建“颜色”,“尺寸”和“价格”栏(沿其他栏)。颜色列将存储逗号分隔的颜色(如奶油色,红色)。
该设计是否可以工作?或者我应该让每个组合成为不同的地毯。
我正在为地毯公司开发mvc应用程序。地毯的价格将取决于颜色组合和尺寸。因此,为了模拟这种情况,我使用了2个表格。 1.地毯。 2.CarpetVarients。(适用于各种颜色和尺寸组合)。这个数据库设计好吗?
在CarpetVarients表中,我正在考虑创建“颜色”,“尺寸”和“价格”栏(沿其他栏)。颜色列将存储逗号分隔的颜色(如奶油色,红色)。
该设计是否可以工作?或者我应该让每个组合成为不同的地毯。
通常,将东西存储为分隔字符串并不是一个好主意(除非您正在讨论的地毯有多种颜色,在这种情况下情况可能会有所不同)。最好为每种颜色/尺寸组合排成一行。
也许这将是更好的想你叫什么Carpet
作为Style
,然后的Carpet
表可以有Style
,Colour
和Size
。
例如
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
...
您应该创建表如下:
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
,你也可以这样做
Carpet:
CarpetId Carpet_PartNumber Color Size parentID Price
1 AB12 NULL NULL NULL NULL
2 AB23 Green 12inch 1 100
这样你就可以有充分的地毯作为一个单独的产品。 注意(对于颜色和尺寸,您可以使用LOOKUP表格)
什么样的查询将用于颜色列? – Marichyasana
好点。你会想知道'告诉我所有的颜色都是红色的'地毯吗?如果不是,则说明字段中的颜色很好。如果颜色需要单独查询,你应该把它放在它自己的查找表中 –
我还没有开始编程,但感觉与.Where(c => c.Colors.Contains(“红色”))的实体sql可能与一个加入2张桌子。 – rahul