首页 新闻 会员 周边

不确定产品属性的产品表如如何设计?

1
悬赏园豆:10 [已解决问题] 解决于 2010-05-14 11:47

今天遇到一个很特别的需求就是当用户发布产品时,商品的属性是不确实的(每类不同的产品都有不同的属性,而且产品分类很多,有点类似淘宝网那个发布产品吧.)

A类产品有:a

B类产品有:a,b

C类产品有:a,b,c

D类产品有:a,b,c,d

依此类推有很多种分类,有部分分类当中的属性而又必填.那些请问该如何设计才合适呢?

让读出来时又方便.

 

顺德人的主页 顺德人 | 初学一级 | 园豆:33
提问于:2010-05-11 15:42
< >
分享
最佳答案
2

我早前也做这种功能,可能和你不尽相同,但是我是仿照淘宝做的:

三个表:
产品分类 ProductDir
产品表    ProductList: productId 、productName 、 productDirId
产品属性表 ProductProperty:
productId 、 PropertyType(属性类型:材质、适应对象等)  、PropertyValue 、PropertyName

还有一些特殊产品的属性,比如鞋子的颜色、尺码、库存、价格,要一一对应起来,我又建了一个表:
ProductShoeColorSize:
ProductId 、ColorValue(颜色)、SizeValue(尺码)、PriceValue(价格)、StockQuantity(库存)

保存这种产品属性的时候,是批量保存的,比如一个鞋子有3种颜色、每种颜色有3个尺码,这里的属性保存个数就是 3 X 3 = 9。

收获园豆:10
yangjun | 初学一级 |园豆:17 | 2010-05-11 17:22
这个方案也不错。
顺德人 | 园豆:33 (初学一级) | 2010-05-11 23:01
@顺德人:如果你觉得不错,记得要给我分哦。我没分了。哈哈。
yangjun | 园豆:17 (初学一级) | 2010-05-13 19:22
其他回答(4)
0

至少有以下两种方法。

  1. 专门建一个表,用于保存产品的属性。这个表一般至少包含以下字段:产品ID,属性名称,属性值。
  2. 在产品表中用一个XML列来保存该产品的所有属性。
周巍 | 园豆:735 (小虾三级) | 2010-05-11 15:52
有否更好的设计方案呢?
支持(0) 反对(0) 顺德人 | 园豆:33 (初学一级) | 2010-05-11 16:50
@顺德人: 我写的是一种思路,具体的扩展要根据您的需求了。 如果你使用的是数据库支持 XML 字段(如 SQL Server 2005 及以上版本),你可以用 XML 字段,因为支持 XML 字段的数据库一般都支持对 XML 字段进行专门的排序等操作,并且有较好的专门操作 XML 字段的函数。 如果你对 XML 字段的性能有要求,如你经常需要根据产品的某个字段进行搜索,可以结合使用两种方法,在另一张表中存放常用字段。 并且,我知道,微软的 SharePoint 在类似情形下,使用的也是 XML 字段。
支持(0) 反对(0) 周巍 | 园豆:735 (小虾三级) | 2010-05-12 11:38
0

一个字段存所有属性,这种方式的缺陷在于修改某一个属性的值时比较麻烦。

Ou lei | 园豆:619 (小虾三级) | 2010-05-11 16:11

修改可以删了,新增

支持(0) 反对(0) 了悟 | 园豆:200 (初学一级) | 2021-08-16 09:41

@了悟: 来自10年后的回复。

支持(0) 反对(0) Ou lei | 园豆:619 (小虾三级) | 2021-08-16 10:54
0

参考,以前做了回答:http://space.cnblogs.com/question/13907/

Astar | 园豆:40805 (高人七级) | 2010-05-11 16:12
0

觉得一楼的设计不错。

asp.net.asp.net | 园豆:10 (初学一级) | 2010-05-11 23:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册