产品电子商务结构(MySQL)

时间:2010-08-31 10:31:23

标签: mysql database database-design e-commerce

我正在考虑如何在电子商务解决方案中构建我的MySQL数据库。更具体地说,我正在研究产品结构。

这些是我到目前为止提出的表格。你觉得怎么样?

结构说明

该应用程序是多语言的。因此,产品表分为2个表。

如果产品有例如2个变体(小,中)总共将插入3行。这是因为每个变体可以为每个变体提供不同的信息。当产品显示在网页上时,产品1将显示一个带有Small&的下拉框。介质。没有变体的产品自然只会插入1行。

products
id  master  product_number
1   0       123
2   1       456
3   1       678

products_descriptions id product_id country_code image name description vat price 1 1 en-us image.jpg t-shirt Nice t-shirt 25 19.99 2 2 en-us image.jpg t-shirt Nice t-shirt 25 19.99 3 3 en-us image.jpg t-shirt Nice t-shirt 25 19.99

products_to_options product_id option_id 2 1 3 2

options id name 1 Small 2 Medium

1 个答案:

答案 0 :(得分:1)

您的产品表是精神分裂症,其实体有时是产品,有时是变体。这导致非常麻烦的行为。例如,你想问“我们有多少种不同的产品?”由select count(*) from products回答,但这里给出了错误的答案,要获得正确答案,您必须知道Magic Number 0和查询select count (*) from products where master=0。 “列出所有产品以及我们为每个产品提供的变体数量”是另一个应该直截了当的查询,但现在却不是。还有其他异常现象,例如products_descriptions中的第一行是具有价格和图片但没有尺寸的衬衫(尺寸存储在变体中,但它们有自己的价格和图片)。

您的问题听起来像是在两种情况下都有产品:(1)可以在商店中显示为商品的商品,(2)可以由客户订购的商品。 (1)可能有一个像“万圣节T恤”这样的名字,它可能有一个顾客看到的图像。 (2)是客户订购的,因此它有(1),但也有变量规格,如“小”或可能是“红色”。它可能也有价格和order_id,因此您的商店可以知道要运送的具体商品。

您应该为每个上下文提供一个实体。这是我怎么做的

displayable_product
id   name
1    "Baseball Cap"
2    "T-Shirt"

orderable_product
id   d_product_id order_id  size    color   price
1    1            123               red      9.99
2    2            456       small           19.99
3    2            789       medium          21.99

displayable_content
id   d_product_id  locale  name                 image
1    1             en_US   "Baseball Cap"       baseballcap.jpg
2    1             es_US   "Gorra de Beisbol"   baseballcap.jpg
3    2             en_US   "Nice T-Shirt"       nicetshirt.jpg
4    2             es_US   "Camiseta"           nicetshirt.jpg

您应该在显示表中使用locale代替country来说明拥有多种语言的国家/地区(美国,瑞士和其他国家/地区),并且您可以将{{1}分开}和size进入自己的color表。如果您需要有关orderables的国家相关数据(如运送到不同国家/地区的不同价格/货币),您还必须提取依赖于国家/地区的orderable_content表。