电商项目-商品表(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技术性能的重要指标.下面整 ...
 
随机推荐
- 关于No qualifying bean of type [XXX.XXX] found for dependency 的一次记录
			
异常开始于spring+springmvc+mybatis 注解配置,启动tomcat服务器出现No qualifying bean of type [com.***.service] found f ...
 - go-001[常用命令]
			
go env GOARCH="amd64"//这台机器的cpu 架构 GOBIN="/Applications/MAMP/htdocs/go/bin" //工 ...
 - spring boot tomcat 打本地包成war,通过Tomcat启动时出现问题: ZipException: error in opening zip file
			
一个第三方公司提供spring boot 项目,直接启动是ok的, 但是打包成war,通过Tomcat启动,就出现 ZipException: error in opening zip file: 2 ...
 - sqlPlus基本操作
			
SQL*PLUS连接方法 1. $ sqlplus "user/password[@service] [as sysdba]" 2. $ sqlplus /nolog SQL> ...
 - 深入理解Java虚拟机读书笔记7----晚期(运行期)优化
			
七 晚期(运行期)优化 1 即时编译器(JIT编译器) ---当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”,包括被多次调用的方法和被多次执行的循环体. ...
 - Ubuntu下安装pytorch(GPU版)
			
我这里主要参考了:https://blog.csdn.net/yimingsilence/article/details/79631567 并根据自己在安装中遇到的情况做了一些改动. 先说明一下我的U ...
 - spring加载配置新旧方式对比
			
老方式 1.首先要配置配置文件,如beans.xml,内容如下: <?xml version="1.0" encoding="UTF-8"?> &l ...
 - Redis安全以及备份还原
			
启用密码 配置密码,配置文件中添加节点requirepass,如下root即passwordrequirepass root可以在登陆的时候用-a 指定password登陆,也可以不指定,登陆之后使用 ...
 - logback kafkaAppender输出日志到kafka
			
官网地址https://github.com/danielwegener/logback-kafka-appender 本文以spring boot项目为基础,更多的信息,请参考官网 https:// ...
 - python中list操作方法
			
1,创建一个列表 只要把逗号分隔的不同的数据项使用方括号括起来即可.如下所示:复制代码 代码如下:list1 = ['physics', 'chemistry', 1997, 2000];list2 ...