之前在工作中,需要实现商品规格功能,做了很长一段时间,现在回过头来整理下设计思路。

sku,spu概念:

SPU = Standard Product Unit (标准化产品单元),SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。

SKU=stock keeping unit(库存量单位) SKU即库存进出计量的单位(买家购买、商家进货、供应商备货、工厂生产都是依据SKU进行的),在服装、鞋类商品中使用最多最普遍。 例如纺织品中一个SKU通常表示:规格、颜色、款式。

设计思路:

原表模型如下:

表简化模型
catl:id,parent_id
spu:id,cat_id,attrs,desc (- attr:id,spu_id,attrs; )
sku:id,spu_id,specs,barcode (- specs:id,sku_id,specs;)

尺码(rule):s m 颜色(color):黑 白 (款式:吊带,丝袜)
对应4组sku :[spu_id:666,{id:1,specs:{尺码:S,颜色:黑}},{id:2,specs:{尺码:S,颜色:白}},{id:3,specs:{尺码:M,颜色:黑}},{id:4,specs:{尺码:M,颜色:白}}]

spu新增,id:666,attrs[尺码,颜色] ->{id:666,attrs[尺码,颜色]}
sku新增,选择spu id 666,读取attrs[尺码,颜色],填入对应值,拼接成json:{尺码:S,颜色:黑},存入数据库
重复sku新增,只加3条(非必须),对应4组的后面三条。

spu展示,attrs[尺码,颜色]}
查询skus[sku_id:666,{id:1,specs:{尺码:S,颜色:黑}},{id:2,specs:{尺码:S,颜色:白}},{id:3,specs:{尺码:M,颜色:黑}},{id:4,specs:{尺码:M,颜色:白}}]
遍历skus 的specs.attrs[0],specs.attrs[1],展示规格及规格值(需要进行去重(比如:S,S,M,M),实现很简单。)。

剩余其他细节,用js实现,实现逻辑会比较繁琐。
比如当选择s, 则颜色就只展示白色,反之,选择黑色,尺码就只有M了
也就是说,每次选中/取消选中任何一个规格值(比如M),通过当前所有已经选中的规格值对应的规格名(如尺码),去重复遍历所有sku的specks.尺码 ==M。就能确定剩余的SKU,及可选项
除此外,还有很多情况考虑,比如选完属性,左上角展示商品图缩略图等等问题,就不一一深入了,慢慢搞就行了。

总结:要点,使用json存储,并使拥冗余字段,提高查询效率,而非多表映射,关联查询。

电商项目-商品表(spu)、规格表(sku)设计的更多相关文章

  1. Java生鲜电商平台-商品的spu和sku数据结构设计与架构

    Java生鲜电商平台-商品的spu和sku数据结构设计与架构 1. 先说明几个概念. 电商网站采用在商品模块,常采用spu+sku的数据结构算法,这种算法可以将商品的属性和商品的基本信息分离,分开维护 ...

  2. 42、生鲜电商平台-商品的spu和sku数据结构设计与架构

    说明:Java开源生鲜电商平台中商品的spu和sku数据结构设计与架构,包括数据库图标与架构分析. 1. 先说明几个概念. 电商网站采用在商品模块,常采用spu+sku的数据结构算法,这种算法可以将商 ...

  3. python-django框架-电商项目-商品模块开发_20191124

    用户浏览记录的添加 什么时候添加历史浏览记录? 在商品详情的视图里面添加浏览记录, 之前使用的list来存储浏览记录, 注意:如果good_id之前已经浏览过了,那就要移除,conn.lrem(his ...

  4. SpringBoot电商项目实战 — 商品的SPU/SKU实现

    最近事情有点多,所以系列文章已停止好多天了.今天我们继续Springboot电商项目实战系列文章.到目前为止,整个项目的架构和基础服务已经全部实现,分布式锁也已经讲过了.那么,现在应该到数据库设计及代 ...

  5. Java开源生鲜电商平台-商品表的设计(源码可下载)

    Java开源生鲜电商平台-商品表的设计(源码可下载) 任何一个电商,无论是B2C还是B2B的电商,商品表的设计关系到整个系统架构的核心. 1. 商品基本信息表:用单词:goods做为商品表 2. 商品 ...

  6. 常见电商项目的数据库表设计(MySQL版)

    转自:https://cloud.tencent.com/developer/article/1164332 简介: 目的: 电商常用功能模块的数据库设计 常见问题的数据库解决方案 环境: MySQL ...

  7. python-django电商项目-需求分析架构设计数据库设计_20191115

    python-django电商项目需求分析 1.用户模块 1)注册页 注册时校验用户名是否已被注册. 完成用户信息的注册. 给用户的注册邮箱发送邮件,用户点击邮件中的激活链接完成用户账户的激活. 2) ...

  8. 点菜网---Java开源生鲜电商平台-商品基础业务架构设计-商品分类(源码可下载)

    点菜网---Java开源生鲜电商平台-商品基础业务架构设计-商品分类 (源码可下载) 说明:我们搞过电商的人都可以体会到,搞生鲜电商是最复杂的,为什么复杂呢?我总结了有以下几个业务特性决定的: 1. ...

  9. .NET Core/.NET5/.NET6 开源项目汇总7:电商项目

    系列目录     [已更新最新开发文章,点击查看详细] 谈起.NET/.NET Core的企业级实战案例,电商项目是典型代表.其中高负载.高并发.高可用性等问题是考核.NET技术性能的重要指标.下面整 ...

随机推荐

  1. 【HDFS API编程】副本系数深度剖析

    上一节我们使用Java API操作HDFS文件系统创建了文件a.txt并写入了hello hadoop(回顾:https://www.cnblogs.com/Liuyt-61/p/10739018.h ...

  2. ATS6.2安装部署笔记

    原文:http://www.safecdn.cn/ats/2018/12/ats6-2-install/1046.html 系统版本:CentOS 6.7 1.安装依赖包 yum -y install ...

  3. hadoop的环境变量

    # hadoop && yarn export HADOOP_PREFIX=/home/ochadoop/apps/hadoop export HADOOP_HOME=${HADOOP ...

  4. Swift用户通知授权

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIAppli ...

  5. 与大家分享学习微信小程序开发的一些心得

    因为我也才开始学习微信小程序不久,下文也是现在的一时之言,大家有不同的想法也可以在评论里共同交流讨论,希望文章能给大家提供一点点帮助. 最近接触到了一些前端框架,像Vue.js,React,发现小程序 ...

  6. django原生sql查询如何返回字典格式

    django原生sql查询,默认返回的是元祖.如果想返回字典格式,需要自行封装: http://www.360doc.com/content/17/0802/11/9200790_676042880. ...

  7. jquery中的 jquery.contains(a,b)

    jquery.contains(a,b) 判断元素 a中是否包含 b 元素: 源码: contains = isNative(docElem.contains) || docElem.compareD ...

  8. 模型压缩,模型减枝,tf.nn.zero_fraction,统计0的比例,等。

    我们刚接到一个项目时,一开始并不是如何设计模型,而是去先跑一个现有的模型,看在项目需求在现有模型下面效果怎么样.当现有模型效果不错需要深入挖掘时,仅仅时跑现有模型是不够的,比如,如果你要在嵌入式里面去 ...

  9. IntelliJ IDEA mybatis-generator的使用

    STEP 1. 在maven项目的pom.xml 添加mybatis-generator-maven-plugin 插件 pop.xml <dependency> <groupId& ...

  10. jQuery判断鼠标滚动方向

    var scrolltop = new Array(); var index = 0; scrolltop[0] = 0; $(document).scroll(function(){ index + ...