电商项目-商品表(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技术性能的重要指标.下面整 ...
随机推荐
- mysql 关联
自关联 设计省信息的表结构provinces id ptitle 设计市信息的表结构cityscitys表的proid表示城市所属的省,对应着provinces表的id值 id ctitle proi ...
- Linux充电站
[Ansible中文权威指南] [鸟哥的linux私房菜] AWK使用手册 Centos的epel源下载 Ceph国内社区 chef简明手册 ChinaUnix运维文库 Confluence和Jira ...
- Spring中@Value注解使用——一种新的直接读取配置文件的方式
1.@Value注解作用 该注解的作用是将我们配置文件的属性读出来,有@Value(“${}”)和@Value(“#{}”)两种方式. 2.@Value注解作用的两种方式 场景 假如有以下属性文件de ...
- 关于ComboBox的控件事件CBN_SELCHANGE总是取到旧值的问题
我发现复选框,选择以后,在这个事件函数中,总是取到旧值,读了这个朋友的文章,找到了解决方法. 下面是参考的文章: http://scorpiomiracle.iteye.com/blog/710511 ...
- 深度学习原理与框架- tf.nn.conv2d_transpose(反卷积操作) tf.nn.conv2d_transpose(进行反卷积操作) 对于stride的理解存在问题?
反卷积操作: 首先对需要进行维度扩张的feature_map 进行补零操作,然后使用3*3的卷积核,进行卷积操作,使得其维度进行扩张,图中可以看出,2*2的feature经过卷积变成了4*4. ...
- C++并发编程学习笔记
// // main.cpp // test1 // // Created by sofard on 2018/12/27. // Copyright © 2018年 dapshen. All ...
- jquery遍历----end()方法
定义和用法 end() 方法结束当前链条中的最近的筛选操作,并将匹配元素集还原为之前的状态. 举个栗子: <body> <ul class="first"> ...
- day 09
内存管理 引用计数:垃圾回收机制的依据 当变量的值被引用的时,变量值的引用计数+1,当变量名被解除绑定时该值的引用计数减少一. 当引用计数变成0的时候会被垃圾回收机制回收. 引用计数会出现循环引用问题 ...
- tensorflow安装和初使用
本文的目的是为了复习并帮助刚开始起步使用机器学习的人员 1.安装准备 为了方便就在window上安装,我的是window10 的笔记本,首先准备python 因为tensorflow在仅仅支持wind ...
- pytorch之张量的理解
张量==容器 张量是现代机器学习的基础,他的核心是一个容器,多数情况下,它包含数字,因此可以将它看成一个数字的水桶. 张量有很多中形式,首先让我们来看最基本的形式.从0维到5维的形式 0维张量/标量: ...