针对自定义特性,一般来说有两种设计思路。

一种思路是行模型(Row Modeling)设计,就是将自定义特性,定义到产品表的列上,命名为Attribute1Attribute2Attribute3AttributeN,用于支持最多N个自定义的特性,并且将特性的名称,值的约束在一张配置表中定义,见下表。

特性名

特性名

特性值类型

特性值范围

Attribute1

厚薄指数

List

薄,偏薄,适中,稍厚,加厚

Attribute2

修身指数

List

超修身,修身,适中,宽松

Attribute3

弹力指数

List

超弹力,弹力,适中,无弹力

……

 

 

 

AttributeN

1-1 特性配置表

行模型设计,适用于查询性能要求高,特性数据使用率高的情况,能够提供较好的查询性能,但是在各个产品特性类型变化大的,产品特性数据相对于产品数据少很多的情况下,会造成空间的浪费。

       另外一种思路,是EVA模型(EVA Modeling[1]设计,将特性设计到单独的一张数据表中,每一行表示一个产品的一个特性信息。主要的数据结构,用类图描述如下:

其中,ProductAttributeInfo是类似于表1-1的类映射,ProductAttributeValueInfo为产品特性的值存储类。这样的结构,具有良好的扩展性,并且存储空间利用率高,不会给产品表带来太大的负载,缺点是查询语句要比行模型复杂,一般来说,会使用Pivot做一个倒转,或者其他方式优化。