[电商]个人商品规格设计思路

这部分的设计必然少不了会有商品、货品、规格、规格值表。html

先说下我对四个表之间关系设计:html5

  商品与货品是一对多的关系。算法

  规格与规格值是一对多的关系。数据库

就这两种关系,关系很清晰,其实我刚开始的设计是这样的:json

  商品与货品是一对多的关系。jsp

  规格与规格值是一对多的关系。编辑器

  商品与规格是多对多的关系。post

  商品与规格之间的中间表与规格值是多对多的关系。编码

  货品与规格值是多对多的关系。spa

五种关系,看着都让人头疼,而这仍是简单的状况下,好比客户要求商品发布时规格值名字是可手动修改的,那这时咱们的"商品与规格之间的中间表与规格值是多对多的关系"就要修改它们的中间表了(中间表新增名称字段)。

真是剪不断,理不乱,我想了想因而决定使用字符串来保持它们之间的关系("保持它们之间的关系"可能说成"保存我方须要的对方的数据"更合理)。

让本来的规格与规格值表与商品表不直接关联(想象下规格就是规格,只是供商品发布时作为选项而存在的,而商品只是须要规格来完善本身,商品完善后规格的生和灭(从数据库中删除)与我无关了,这感受很合理很正常),而是使用json字符串保存用户所想要的规格数据,货品表也同样,再也不与规格值关联,而是选择使用json字符串。

这么一来就获得刚开始说的那种只有两种关系了,下面说下商品与货品:

  假设咱们的商品规格是这样一个字段为productSpecs的json:[{id:0,name:颜色,solr:0,specValues:[{id:0,name:蓝色,pic:blue.jpg},{id:1,name:红色,pic:red.jpg}]},{id:1,name:尺码,solr:1,specValues:[{id:2,name:10},{id:3,name:20}]}]

  假设咱们的货品1规格值是这样一个goodsKeys的json:[{id:0},{id:2}],货品2规格值是这样一个json:[{id:0},{id:3}]

  当用户浏览商城主页点击一个商品查看商品详情时,后台会查询对应的商品数据展现到详情页,别的数据就不说了,就说规格选项那块,好比选项以下表:

颜色    
   蓝色  红色
尺码    
  10 20

  说下面以前,咱们能够先想象一下每个货品都有一把锁(goodsKeys),等待着用户去解锁,而解锁的钥匙都在商品那里(productSpecs)。

  关于上面那个表是如何出现的呢?假设我用JavaScript代码写个案例给大家看下:

//var productSpecs= [{id:0,name:颜色,solr:0,specValues:[{id:0,name:蓝色,pic:blue.jpg},{id:1,name:红色,pic:red.jpg}]},{id:1,name:尺码,solr:1,specValues:[{id:2,name:10},{id:3,name:20}]}]
/*for(var i=0;i<productSpecs.length;i++){
     productSpecs[i].id;
     productSpecs[i].name;
     for(var j=0;j<productSpecs[i].specValues.length;j++){
            productSpecs[i].specValues[j].id;
            productSpecs[i].specValues[j].name;
            productSpecs[i].specValues[j].pic;
     }          
}*/

上面的代码我只写了取数据的部分,是由于这个编辑器不方便编码,其实只要取到了 数据,生成表格就很简单了,实际开发中这块应该是在动态页面中处理完成的,动态页面通常都有遍历列表的方式,好比jsp中的jstl等。

表格选项生成了,也梳理通了逻辑,那么剩下的其实很简单了,好比用户选择颜色:蓝色,尺码:10的一个货品,颜色蓝色id是0,尺码10id是2,那么咱们后台就去货品表里查找goodsKeys相匹配的货品,经过比较咱们发现货品1是匹配的,由于它的goodsKeys是[{id:0},{id:2}],那么咱们把货品1的数据展现到页面便可。

怎么样,思路是否是清晰了,也许个人思路是错的,可是功能可以实现是最重要的。

若是你有更好的方式,请推荐给我,谢谢。

商品发布规格组合算法部分可参考这个:商品发布规格组合算法

相关文章
相关标签/搜索