数据库设计 – 电子商务应用程序的数据库设计问题

我正在设计一个电子商务数据库……
我想建议设计以下案例:

>产品可能有多种尺寸和多种颜色
>产品尺寸/颜色的每种组合必须具有特定价格

所以,我可以有一个尺寸为的产品X:
A,B,C
和颜色:
绿色,黑色和白色

每个组合都有它的价格……

它在亚马逊实现,这里有一个例子:
http://www.amazon.com/Champion-Mens-Jersey-Black-Large/dp/B0010EEYCU/ref=sr_1_4?ie=UTF8&s=sporting-goods&qid=1287767784&sr=1-4

我想帮助设计一下!

编辑:产品可以没有尺寸和颜色的价格

谢谢

最佳答案
在解决这个问题的众多方法中,我要强调一下:

>为每个项目的每种颜色/尺寸组合分别提供产品记录.每个都有自己的价格.
>如果许多物品将具有相似的尺寸和颜色(例如,如果您销售衬衫,并且每件衬衫都有五种尺寸和三种颜色可供选择),那么将尺寸和颜色标准化为自己的表格可能是有意义的,并且有一个PricePoint表将它们拼接在一起 – 项目,颜色和尺寸的每个组合在PricePoint中都有一个具有适当价格的条目.

请注意,第二种方法虽然更加规范化,但可能会导致产品/库存跟踪问题.由于如果每个价位上的每个项目都有自己的SKU(或其他常用标识符),则更容易跟踪单个项目,您可能更喜欢混合方法:

>产品表,其中包含项目,大小和颜色的每个组合的记录,每个组合具有唯一的SKU和价格.
>尺寸表,用于规范化产品可能具有的常用尺寸.产品有此表的外键.
>一个颜色表,如上所述.
> ProductType或ProductGrouping表,用于定义产品的超集以便于组织/搜索.每个产品都有一个这个“父产品”表的外键.例如,您可能有一个ProductType =’T-Shirt’,它有几十个与之相关的产品 – 每种衬衫样式,尺寸和颜色组合都有一个产品.

更新:要详细说明“超集”表,根据OP的请求,我会以这种方式扩展@Phil Sandler的示例:

添加产品组表:

Product Group (defines a superset of similar products that will be grouped or filtered together)
product_group_id
product_group_name

并编辑Product表以将外键添加到Product Group:

Product Table (defines the product):
product_id
product_group_id
product_name

现在,要突出显示特定价格点的示例组合,一些补充数据:

商品名:product_id = 100,product_group_id = 1,product_name =’男士圆领T恤’

产品组:product_group_id = 1,product_group_name =’T-Shirts’

颜色:product_color_id = 10,product_id = 100,color_id = 6假设’6’为’蓝色’.此记录表示Crew-neck T有蓝色可供选择

大小:product_size_id = 11,product_id = 100,size_id = 2假设’2’是’中’.此记录表示Crew-neck T可在Medium中使用

价格:product_price_id = 555,product_id = 100,product_size_id = 11,product_color_id = 10,价格= 24.99
*此记录意味着中蓝色圆领T价格为24.99美元(请注意price_id,菲尔的例子中缺少该价格)*

使用此示例,产品组表将允许您跨产品线进行查询,例如“选择我们销售的最昂贵的大型T恤”.

转载注明原文:数据库设计 – 电子商务应用程序的数据库设计问题 - 代码日志