一种灵活的商品属性集实现思路

  在一些商务系统中会对商品的属性进行管理,方法有很多,可参考文章商品SKU分析和设计。在这里,我分享一种更灵活的实现思路。

   商品属性设计为公用,属性由属性集管理,属性集也是公用的,如下:

  1. 先定义属性 Attribute

    这个表只是定义属性的名称。

  2. 定义属性具体的值 Attribute_Value

  

  其中Attribute可直接用Attribute表中的ID,这里用Name只是更好的体现其关系。

  3. 定义属性集 AttributeSet

   属性集一般是根据商品来定义的,如衣服的属性集,手机的属性集等等。

  4. 定义属性集的值(即属性集中包含哪些属性)AttributeSet_Value:

   其中AttributeSet和Attribute栏位可用具体表中的ID。

  以上四个表完成对商品属性和属性集的定义。

  在具体的商品中却不能直接使用AttributeSet_Value,因为AttributeSet是公用的。

  参考class的实例化引用,具体的商品关联其属性集时,可实例化一个属性集,如:

  5. 定义属性集实例化 AttributeSetInstance:

  

  衣服的属性集一般包含颜色和尺寸,但是每种衣服的颜色和尺寸(Value)肯定有所不同,因此实例化一个Coat的属性集,它的具体值用下表来实现:

  6. 定义属性集实例值 AttributeSetInstance_Value:

   

  其中Coat被实例化两次,它的属性及其Value是不同的。

  

  此时,商品就可以关联AttributeSetInstance的ID,进而实现了它的属性(AttributeSetInstance_Value)。

  

  这种实现方式,属性和属性集都是可随时扩展的,而具体的商品在使用属性集时,通过其实例化来关联,也没有与属性集做强依赖,可算一种灵活的实现思路。

posted @ 2012-08-26 22:06  多多晖  阅读(2677)  评论(15编辑  收藏  举报