thinkphp商城系统之商品模块表设计

5.后台商品模块

商品模块是商城项目最核心的模块,也是最复杂的。如果说你能掌握这个模块,那对你来说绝对是获益匪浅,这模块会涉及到以下知识点:

  1. 聊聊电商领域中的SPUSKU
  2. 表的设计,告诉你为什么要这么设计
  3. 复杂的查询,例如属性筛选

篇幅限制,可以访问:实力进阶,教你使用thinkphp6开发一款商城系统,如果对你有帮助,记得点赞哈~

5.1SPU和SKU

在电商领域,SPU(Standard Product Unit)和SKU(Stock Keeping Unit)是两个常用的概念,用于对商品进行分类和管理。

SPU的定义:指标准化的产品单元,通常指一组具有相似属性、功能和用途的商品。SPU可以看作是一类商品的集合,具有相同的基本特征。

如图,这是京东商城商品列表

在这里插入图片描述

相信买东西的时候大家都打开过这样的一个列表页,可能很多时候你把列表中的商品理解为一个具体的产品。实际上它是一个spu,它包含了一些通用的属性,例如cpu型号、内存、屏幕尺寸、颜色等,并且还有一组通用的图片和描述。

SKU定义:它就是具有独特属性的单个具体产品

如图

在这里插入图片描述

点击某个spu,进入具体的spu详情,里面展示的是每个具体的sku,比如图片中的每种颜色和版本的组合就是一个具体sku,每个sku都有自己的属性及库存。

5.2表设计

商品模块相关表的设计很复杂,涉及到的表非常多,下面我会一个个的讲,以后大家项目中遇到可以适当的参考一下。

5.2.1品牌表

字段类型备注
idint(10) unsigned主键(PRIMARY)
brand_namevarchar(30)品牌名称
brand_imagevarchar(255)品牌图片
sortint(11)排序
remarkvarchar(255)品牌介绍
is_showtinyint(1)是否显示:1-是.0-否
creatorint(11)创建者
updatorint(11)更新者
create_timedatetime创建时间
update_timedatetime更新时间
delete_timedatetime删除时间

如果说商品涉及到品牌,那么就需要有相应的品牌管理功能,一般来说涉及到名字、图片、排序等字段,至于展示端展示的是名称还是图片,这就看具体需求。

5.2.2分类表

字段类型备注
idint(10) unsigned主键(PRIMARY)
pidint(11)父级id
category_namevarchar(30)分类名称
imagevarchar(255)分类图片
remarkvarchar(255)分类描述
leveltinyint(1)等级
sortint(11)排序
is_showtinyint(1)是否显示:1-是;0-否
is_recommendtinyint(1)是否首页推荐:1-是;0-否
creatorint(11)创建者
updatorint(11)更新者
create_timedatetime创建时间
update_timedatetime更新时间
delete_timedatetime删除时间

商品分类表是非常重要的,我们买东西的时候一般会选择分类,例如手机、衣服、笔记本、食品等分类。这里的pidlevel字段是跟分类层级有观的,因为分类有一级分类、二级分类、三级分类,甚至更多,另外还有个”是否首页推荐“字段,适用于首页展示某些商品,也是常用需求之一。

5.2.3规格表

字段类型备注
idint(10) unsigned主键(PRIMARY)
cate_idint(11)最后一级商品分类ID
spec_namevarchar(30)规格名称
sorttinyint(4)排序
is_advancedtinyint(1)高级选项:0-否, 1-是
is_showtinyint(1)显示:0-否,1-是
creatorint(11)创建者
updatorint(11)更新者
create_timedatetime创建时间
update_timedatetime更新时间
delete_timedatetime删除时间

商品规格或者说属性,这里的属性是跟分类绑定的,因为不同的分类有不同的属性,例如手机、衣服属性是不一样的,另外鉴于页面的展示的原因,一般需要把属性划分为高级选项和普通选项,这个可参考京东。如果说你属性没有那么多,其实没必要设置高级选项。

5.2.4规格属性值表

字段类型备注
idint(10) unsigned主键(PRIMARY)
spec_idint(11)规格ID
spec_valuevarchar(30)规格属性值
sorttinyint(4)排序
is_showtinyint(1)是否显示:1-是,0-否
creatorint(11)创建者
updatorint(11)更新者
create_timedatetime创建时间
update_timedatetime更新时间
delete_timedatetime删除时间

这个也很好理解,每个属性都有多个值,例如手机的属性-机身内容它有1TB、512GB、256GB等值

5.2.5商品表

字段类型备注
idint(10) unsigned主键(PRIMARY)
goods_namevarchar(150)商品名称
goods_spubigint(20)商品SPU
one_cate_idint(11)一级分类
two_cate_idint(11)二级分类
three_cate_idint(11)三级分类
four_cate_idint(11)四级分类
brand_idint(11)品牌
supplier_idint(11)供应商
imagevarchar(255)商品主图
remarkvarchar(255)商品简介
contenttext商品详细描述
statustinyint(1)商品状态:-1-回收站;0-下架;1-上架
sortint(11)排序
sales_sumint(11)商品销量
comment_sumint(11)评论数量
click_sumint(11)点击数量
pricedecimal(10,2)商品价格
discount_factordecimal(10,2)折扣系数
freight_typetinyint(1)运费类型:1-包邮;2-统一运费;3-运费模板
freight_pricedecimal(10,2)统一运费金额
freight_template_idint(11)运费模板
is_newtinyint(1)新品推荐:1-是;0-否
is_hottinyint(1)热点产品:1-是;0-否
is_teamtinyint(1)开启拼团:1-是;0-否
creatorint(11)创建者
updatorint(11)更新者
create_timedatetime创建时间
update_timedatetime更新时间
delete_timedatetime删除时间

商品表存储什么字段,都是根据实际业务来设计的,下面我分下面几点来解释

  1. 像商品名、图片、价格这些用于展示的,都是必须的。
  2. 商品SPU,这个字段是商品的唯一标识,像京东商品之间的关联就是使用SPU,而不是自增ID,不过我们使用自增ID关联即可,一般来说使用php开发都是一些小商城了,没有那么规范,这里提出来主要是让大家知道有这么一个设计原则。
  3. 四级分类,这里限定了四级分类,如果说还不够,那么加字段,弄到五级即可。
  4. 商品详细描述,正常来说不应该存储到这里的,这里应该拆分多一个表专门存储商品的详细描述,但也要看实际情况,如果说你开发的商城,商品数量就一两万,拆不拆分都可以,因为几乎不影响性能。就算以后数据量突然暴增,到时拆分开也可以。
  5. 排序,一般用户会看销量、评论数量,因此记录这两个数就很有必要了。
  6. 销售手段,比如说新品推荐、热点产品、拼图等等
  7. 跟运费有关的些字段,比如免运费、统一运费等

5.2.6评论表

字段类型备注
idint(11)主键(PRIMARY)
goods_idint(11)商品ID
goods_item_idint(11)某种规格商品ID
order_goods_idint(11)订单商品表id
user_idint(11)用户ID
goods_startinyint(1)商品评论星级:1-5星
service_startinyint(1)服务评论星级:1-5星
express_startinyint(1)物流评论星级:1-5星
commentvarchar(255)商品评论
replyvarchar(255)商家回复
statustinyint(1)显示状态 0-隐藏 1-显示
create_timedatetime创建时间
update_timedatetime更新时间
delete_timedatetime删除时间

商品评论需要记录商品ID,具体的某款产品(SKU)ID,评论的用户ID,评论内容,另外还设置了商品的评价、售后服务的评价、无论的评价。

5.2.7评论的图片/视频表

字段类型备注
idint(10) unsigned主键(PRIMARY)
typetinyint(1)文件类型:1-图片,2-视频
goods_comment_idint(11)商品评价id
urlvarchar(255)文件链接l
create_timedatetime创建时间
update_timedatetime更新时间
delete_timedatetime删除时间

用户上传商品的图片和视频

5.2.8商品拥有的规格属性表

字段类型备注
idint(10) unsigned主键(PRIMARY)
goods_idint(11)商品ID
spec_idint(11)规格ID
spec_value_idint(11)规格属性ID
create_timedatetime创建时间
update_timedatetime更新时间
delete_timedatetime删除时间

这里存储了商品ID、规格ID、规格属性ID,这个表主要用于属性筛选

5.2.9商品SKU表

字段类型备注
idint(10) unsigned主键(PRIMARY)
goods_idint(11)商品ID
titlevarchar(100)标题
skubigint(20)商品SKU
spec_idsvarchar(200)多个规格id,隔开
spec_value_idsvarchar(200)多个规格属性值ID,隔开
market_pricedecimal(10,2)市场价
pricedecimal(10,2)价格
cost_pricedecimal(10,2)成本价
stockint(10)库存
bar_codevarchar(200)条码
creatorint(11)创建者
updatorint(11)更新者
create_timedatetime创建时间
update_timedatetime更新时间
delete_timedatetime删除时间

这个表主要是存储了用于商品详情展示的信息,比如说规格、价格、库存等,注意这里存储规格和规格属性值,后面我们可以看看如何进行筛选。

另外这里我们也新增了商品SKU字段,其意义跟SPU类似。

5.2.10 商品SKU主图

字段类型备注
idint(10) unsigned主键(PRIMARY)
typetinyint(1)文件类型:1-图片,2-视频
skubigint(20)商品评价id
urlvarchar(255)文件链接
create_timedatetime创建时间
update_timedatetime更新时间
delete_timedatetime删除时间

详情里面的轮播图

5.2.11商品点击表

字段类型备注
idint(10) unsigned主键(PRIMARY)
user_idint(11)用户ID
goods_idint(11)商品ID
creatorint(11)创建者
updatorint(11)更新者
create_timedatetime创建时间
update_timedatetime更新时间
delete_timedatetime删除时间

为什么要这个表?对于一些体量比较大的商城来说,收集用户的行为是非常重要的,这个不单单说后台用于页面的统计,更多的是用于推荐系统,他们需要足够大的数据去训练推荐模型。

5.2.12 商品收藏表

字段类型为空额外默认整理备注
idint(10) unsignedPKauto_increment主键(PRIMARY)
user_idint(11)YES0用户ID
goods_idint(11)YES0商品ID
create_timedatetimeYES创建时间
update_timedatetimeYES更新时间
delete_timedatetimeYES删除时间

这个也是收集用户行为相关的表

Niushop商城是全国首创集 【B2B2C多用户商城】 + 【微信微分销】 + 【电商平台招商运营 + iOS 、Android多平台客户端】 PHP开源电商系统。Niushop采用ThinkPHP5.0 + MySQL 开发语言,完全面向对象的技术架构设计开发。完全开源,适合企业及个人,包含 (B2B2C + 微信商城 + WAP + Android + IOS) 二次开发非常方便。 Niushop开源商城系统基础功能 (一)平台支持:PC端、WAP端、微信端 (二)商品列表: 商品列表 、商品发布、商品分类、商品品牌、商品分组、商品规格、商品属性、商品咨询管理、商品评价管理、商品销售排行、相册管理、商品列表 (三)订单列表:订单列表、运费模版管理、 物流公司、商家地址 (四)营销:优惠券、 积分管理、满减送、限时折扣、满额包邮 (五)会员列表: 粉丝列表、 会员列表、会员等级、会员提现、积分管理、余额管理 (六)设置:网站设置、支付配置、验证码设置、 通知系统、第三方登录、地区管理、 购物设置、会员提现设置 (七)文章:文章列表、文章分类、文章专题 (八)用户:用户列表、 用户组列表 (用户权限设置)、个人资料、用户密码修改 (九)资产:销售概况、商品分析、同行热卖、运营报告、销售排行 (十)微信端功能:首页顶部浮动块(一键关注按钮)、推广二维码、个人二维码、首页微信好友分享、商品详情好友分享、店铺二维码好友分享 Niushop开源商城系统功能特点: 1.完善的QQ,微信第三方支付、第三方用户登录机制 2.精细的微信模块处理 3.惰性加载 4.路由、自动加载的缓存机制 5.模型及关联MongoDB支持 6.数据库集群及数据缓冲 更新方法: 1.解压后将niushop_b2c文件夹内的所有内容覆盖对应文件 2.文件覆盖完毕,后台清除缓存 3.执行niushop_2.00_patch.sql 文件。 B2C2.1更新日志: 1. 优化 系统版本管理 2. 完善 赠品管理功能 3. 修正 系统模板消息部分没有发送的问题 4. 优化 商品增加与编辑页面流程 5. 新增 后台商品编辑规格支持批量修改价格库存功能 6. 优化 后台商品编辑验证 7. 解决 没有选择SKU的情况下,不显示规格预览 8. 解决 选择了商品分类后,规格列表没有清空 9. 解决 没有关联商品类型的时候,添加商品规格,规格值。生成不了规格列表的问题 10. 优化 后台商品分类列表,添加子分类时不刷新当前界面 11. 解决 开启手机端自定义模板后,其他节目没有底部菜单问题 12. 解决 后台编辑商品时,SKU没有清除,导致前台无法购买的问题 13. 解决 定位查询接口,省的默认值没有的问题 14. 优化 手机端会员中心界面 15. 解决 手机端商品详情底部版权信息被遮挡 16. 优化 隐藏后台商品列表,属性列表前边的复选框 17. 优化 为了保证商品交易的稳定性,后台编辑商品时,无法编辑实物类型 18. 解决 后台订单列表添加备注问题 19. 优化 后台新界面整体结构 20. 优化 满就送全部商品也支持送赠品功能 21. 优化 商品添加与编辑中商品类型对规格的关系. 22. 优化 商品添加与编辑是规格的显示与编辑 23. 新增 商品单位用于前台页面显示 24. 新增 商品预售功能 25. 优化 积分兑换流程,积分兑换设置4种类型 26. 增加 积分当钱花,积分支付可以兑换一定现金 27. 新增 图片上传添加水印功能 28. 优化 pc端与手机端创建订单界面 29. 新增 发票管理 30. 新增 后台用户操作日志 31. 优化 七牛云图片同步删除 32. 新增 首页增加常用菜单功能 33. 优化 订单流程计算更加稳定合理 34. 优化 营销商品调用弹框 35. 优化 商品视频上传增加外链 36、优化 后台数据列表的宽度比例 37、优化 PC端商品列表,左侧排行榜样式 38、优化 后台商品编辑规格,界面 39、解决 后台商品列表无法操作设置推荐的功能 40、解决 PC端地址定位,没有加载市县的问题 41、优化 后台弹出框对话框、消息提示框样式 42、移除 后台SQL执行与导入功能 43、优化 后台导航管理列表 44、优化 团购商品取消满减送 45、优化 订单支付返回上一个界面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值