【发布时间】:2011-07-12 00:45:59
【问题描述】:
我正在建立一个在线商店,但我遇到了问题。 我将有直接价格的产品(例如 HTC Touch 2 智能手机:299.00 美元),但同时我将有基于品种组合价格的产品: 例如:
product: Nike Exclusive T-Shirt 2011
varieties:
Sizes: L, XL
Colors: red, blue
combinations will be:
L white - $10
XL white - $15
L blue - $11
XL blue - $16
我需要数据库结构的最佳方式(或唯一一种工作方式:)),我可以在其中存储两种类型的产品,如果我想在网页上列出包含两种类型产品的类别中的产品(单价,多价)我可以构建一个 mysql 查询来获取同一查询中的所有产品。
谢谢
更新
我肯定会有以下表格:[products]、[varieties](颜色、尺寸)、[varietyValues](其中存储了产品的颜色和尺寸 - 每个都是一行在表 {productId + variantId + value (red, S, M, green, XL, etc...)} 中。在这个之后,我将有另一个表[combinations],在[combinations] 和[varietyValues] 之间具有多对多[n-to-m] 关系,这将产生一个新表[combPrices]。这个新的 n 到 m 表的每一行都有一个价格。
现在的问题是我不知道如何在这个数据结构中存储单价产品。
更新 2
在这张图片中,您可以看到数据库图,我认为这对于多价产品来说是可以的:
主要问题:
由于这是一个网上商店,人们会将商品放入购物车。我认为插入购物车的商品应该来自同一张表(在我们的例子中是[combinations] 表,因为存储了价格)。
这里是这些表格的一些数据,只是为了更清楚:
[products]
productid | productName
1 | Nike T-Shirt
2 | HTC Touch 2 Smartphone
[specifications]
specId | productId | specName
1 | 1 | Size
2 | 1 | Color
[specvalues]
specValueId | specId | svValue
1 | 1 | L
2 | 1 | XL
3 | 2 | white
4 | 2 | blue
5 | 2 | red
[combinations](商品放入购物车)
combinationId | price | description
1 | 10 | White L Nike T-Shirt
2 | 15 | White XL Nike T-Shirt
3 | 11 | Blue L Nike T-Shirt
4 | 16 | Blue XL Nike T-Shirt
5 | 18 | Red XL Nike T-Shirt
[combinationParts]
nmid | combinationId | specValueId
1 | 1 | 1
2 | 1 | 3
3 | 2 | 2
4 | 2 | 3
5 | 3 | 1
1 | 3 | 4
2 | 4 | 2
3 | 4 | 4
4 | 5 | 2
5 | 5 | 5
我希望我的图表和数据库数量确实有意义:)。
所以最后一个问题是如何存储单价产品(HTC Touch 2 智能手机),以便可以像多价产品一样将其添加到购物车。
【问题讨论】:
标签: mysql database database-design