电商项目-商品表(spu)、规格表(sku)设计
之前在工作中,需要实现商品规格功能,做了很长一段时间,现在回过头来整理下设计思路。
sku,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)设计的更多相关文章
- Java生鲜电商平台-商品的spu和sku数据结构设计与架构
Java生鲜电商平台-商品的spu和sku数据结构设计与架构 1. 先说明几个概念. 电商网站采用在商品模块,常采用spu+sku的数据结构算法,这种算法可以将商品的属性和商品的基本信息分离,分开维护 ...
- 42、生鲜电商平台-商品的spu和sku数据结构设计与架构
说明:Java开源生鲜电商平台中商品的spu和sku数据结构设计与架构,包括数据库图标与架构分析. 1. 先说明几个概念. 电商网站采用在商品模块,常采用spu+sku的数据结构算法,这种算法可以将商 ...
- python-django框架-电商项目-商品模块开发_20191124
用户浏览记录的添加 什么时候添加历史浏览记录? 在商品详情的视图里面添加浏览记录, 之前使用的list来存储浏览记录, 注意:如果good_id之前已经浏览过了,那就要移除,conn.lrem(his ...
- SpringBoot电商项目实战 — 商品的SPU/SKU实现
最近事情有点多,所以系列文章已停止好多天了.今天我们继续Springboot电商项目实战系列文章.到目前为止,整个项目的架构和基础服务已经全部实现,分布式锁也已经讲过了.那么,现在应该到数据库设计及代 ...
- Java开源生鲜电商平台-商品表的设计(源码可下载)
Java开源生鲜电商平台-商品表的设计(源码可下载) 任何一个电商,无论是B2C还是B2B的电商,商品表的设计关系到整个系统架构的核心. 1. 商品基本信息表:用单词:goods做为商品表 2. 商品 ...
- 常见电商项目的数据库表设计(MySQL版)
转自:https://cloud.tencent.com/developer/article/1164332 简介: 目的: 电商常用功能模块的数据库设计 常见问题的数据库解决方案 环境: MySQL ...
- python-django电商项目-需求分析架构设计数据库设计_20191115
python-django电商项目需求分析 1.用户模块 1)注册页 注册时校验用户名是否已被注册. 完成用户信息的注册. 给用户的注册邮箱发送邮件,用户点击邮件中的激活链接完成用户账户的激活. 2) ...
- 点菜网---Java开源生鲜电商平台-商品基础业务架构设计-商品分类(源码可下载)
点菜网---Java开源生鲜电商平台-商品基础业务架构设计-商品分类 (源码可下载) 说明:我们搞过电商的人都可以体会到,搞生鲜电商是最复杂的,为什么复杂呢?我总结了有以下几个业务特性决定的: 1. ...
- .NET Core/.NET5/.NET6 开源项目汇总7:电商项目
系列目录 [已更新最新开发文章,点击查看详细] 谈起.NET/.NET Core的企业级实战案例,电商项目是典型代表.其中高负载.高并发.高可用性等问题是考核.NET技术性能的重要指标.下面整 ...
随机推荐
- linux网编 静态链接库
-L 指定动态库路径 -l 指定 以libXXXX.a命名的库文件
- sbt 学习
一.基础 1.工程根目录 包含build.sbt的目录是工程的根目录.注意,就算在一个空目录下面执行sbt about,也会生成project文件夹 2.源文件目录结构 SBT有固定的文件组织结构 s ...
- 1. maven 手动添加jar包
mvn install:install-file -Dfile=isc_sso_agent-1.0.jar -DgroupId=com.sgcc.isc -DartifactId=isc_sso_ag ...
- R语言输出高质量图片
Rstudio画图之后保存的 图片格式如下 上面的几种格式可以直接插入word文档中,但是图片质量很低,锯齿感很明显.若生成PDF,为矢量图(不懂),但是不可以插入word文档中. 最简便的方法就是对 ...
- css样式基础详解
一.字体属性:(font) 1.大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 2.样式 {font-styl ...
- 学习python 检测字符串的方法
检测字符串长度的方法:len() 检测字符串是否含有字母的方法:str.isalpha() 检测字符串是否含有数字的方法:str.isnumeric() 检测字符串是否有大写字母:str.upper( ...
- jdk-8u181-docs.chm -- 制作时间2018年8月12日
为了方便查阅,自己做了一个JDK8的chm文件:jdk-8u181-docs.chm 密码: g675 chm制作工具 :chmwriter 目录:
- Halcon知识点随记(每日更新)
部分积累自重码网视频 1.dev_update_off.dev_update_on 一般dev_update_off放在开始,dev_update_on放在程序结束 dev_update_window ...
- fair scheduler配置
<property> <name>yarn.resourcemanager.scheduler.class</name> <value>or ...
- pandas中的时间序列基础
重要的数据形式时间序列 datetime以毫秒形式存储日期和时间 now = datetime.now() now datetime.datetime(2018, 12, 18, 14, 18, 27 ...