博罗网站开发,做网站前需要做哪些事情,虚拟主机是服务器吗,广东省建设工程交易中心这部分的设计必然少不了会有商品、货品、规格、规格值表。先说下我对四个表之间关系设计#xff1a;商品与货品是一对多的关系。规格与规格值是一对多的关系。就这两种关系#xff0c;关系很清晰#xff0c;其实我刚开始的设计是这样的#xff1a;商品与货品是一对多的关系…这部分的设计必然少不了会有商品、货品、规格、规格值表。先说下我对四个表之间关系设计商品与货品是一对多的关系。规格与规格值是一对多的关系。就这两种关系关系很清晰其实我刚开始的设计是这样的商品与货品是一对多的关系。规格与规格值是一对多的关系。商品与规格是多对多的关系。商品与规格之间的中间表与规格值是多对多的关系。货品与规格值是多对多的关系。五种关系看着都让人头疼而这还是简单的情况下比如客户要求商品发布时规格值名字是可手动修改的那这时我们的商品与规格之间的中间表与规格值是多对多的关系就要修改它们的中间表了(中间表新增名称字段)。真是剪不断理不乱我想了想于是决定使用字符串来保持它们之间的关系(保持它们之间的关系可能说成保存我方需要的对方的数据更合理)。让原本的规格与规格值表与商品表不直接关联(想象下规格就是规格只是供商品发布时做为选项而存在的而商品只是需要规格来完善自己商品完善后规格的生和灭(从数据库中删除)与我无关了这感觉很合理很正常)而是使用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}]当用户浏览商城主页点击一个商品查看商品详情时后台会查询对应的商品数据展示到详情页别的数据就不说了就说规格选项那块比如选项如下表:颜色蓝色红色尺码1020说下面之前我们可以先想象一下每一个货品都有一把锁(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 i0;iproductSpecs[i].id;productSpecs[i].name;for(var j0;jproductSpecs[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的数据展示到页面即可。怎么样思路是不是清晰了也许我的思路是错的但是功能能够实现是最重要的。如果你有更好的方式请推荐给我谢谢。商品发布规格组合算法部分可参考这个商品发布规格组合算法