这两天公司要做一个商城项目,网上搜了很多没找到完整的、有结构体系的资料,可能这件事本身并不难,但是对新手非常不友好,所以我借机把这些碎片化的资料尝试整理成一个有体系的资料,希望能对你有帮助。资料来源包括:

  • 购物商城数据库设计-商品表设计
  • 购物商城数据库设计-订单系统设计
  • SPU和SKU区别
  • 商品类型与商品分类的区别
  • macrozheng/mall

数据库设计

先亮出我最终的workbench设计稿: workbench资料链接

其实不复杂,也只是完成了最基本的功能——卖商品

下面详细说下我设计过程中的思路和知识点。

商品相关

SKU和SPU

SPU全称Standard Product Unit,最小包装单元;SKU全称Stock Keeping Unit,最小主要单元。比如坚果R1是SPU,而坚果R1 64G 细红线版可以称为一个SKU,SKU也可以看做最小销售单元。我对此的理解是SKU=SPU+规格SKU和SPU是一对多关系,SPU和规格是一对一关系

规格

规格是细化SPU为SKU的标准。比如颜色、内存等。规格可以用于筛选商品,比如下图中京东对手机的筛选条件,这些都是规格,跟规格类似的有个概念叫属性。

属性

商品属性,也可以叫商品详情。主要用于展示和介绍商品。和规格有一定重合性,比如重量,颜色等。但他俩最大的区别,规格用于筛选,属性用于展示。我把规则设计成表,把属性设计成MySQL的text字段,用json存储。一个SKU可以用多个属性和多个规格

规格值

当时这里没搞懂,就多写了点。

规格表中存的是像颜色、内存这些,而规格值表中存的是黑色、32G。更具体的说,规格表中的数据类似于规格名称、规格id、规格顺序、规格录入方式(比如内存通常有规定的选项;而颜色不好穷尽,通常让人手动加)、检索方式(例如不检索、关键字、范围检索等);而规格值表通常就规格表id和规格值。规格表和规格值表是一对多关系,而规格表和SKU是多对多关系

品牌

规格的图中,我没有把品牌划到红框内,因为品牌不存在规格表中,但品牌可以看做一种特殊的规格,它是一个筛选条件,品牌相比普通规格,拥有更多属性同时也更复杂,比如品牌名称、logo、故事等;品牌还可以和SKU关联。所以我把品牌单独设计成表。品牌和SKU是一对多关系

商品分类

商品分类和商品类型也是两个容易混淆的概念。商品分类的目的是为了人们方便挑选;而商品类型≈商品规格,目的精细筛选。两者都是选择条件,区分点在于分类是模糊和精准。下图就是商品分类,商品类型可以参考上面的规格图。我把商品分类设计成一张单独的表,商品分类表和SKU是一对多关系。从数据库层面讲,商品分类是在商品分类表中选SKU,而商品类型是在众多SKU中根据规格筛选

经销商店铺

就像京东上不仅有自营,还有第三方店铺的商品。不管是自营还是经销商店铺,本质都是店铺。店铺只用跟SPU关联即可。所以我建了一张店铺表,店铺和SPU是一对多关系

库存相关

库存表

每个SPU都有对应的库存,所以SPU和库存表是一对一关系

订单相关

订单

就像开头说的,前期的核心是卖商品,所以订单这块不涉及活动。订单表中只包含订单相关的属性,比如订单状态、订单金额等,订单表和SPU是一对多关系

购物车相关

购物车

同理,购物车表和SPU也是一对多关系

数据库设计总结

商城可以设计的很复杂,还可以增加活动、秒杀、推广、物流、运维、发票、支付等等等等,但前期项目刚建立的核心只有一个——卖商品。后面这些东西我会再慢慢增加,即将增加的是很重要的项目架构设计。欢迎收藏,我会及时更新。也欢迎评论,毕竟这些东西只看了一晚上就写下了,可能有些不对的地方,还望赐教。


欢迎关注微信公众号,提供思想和技术类原创文章。微信搜索小兵张健或扫描以下二维码。

怎样设计一个商城项目?相关推荐

  1. django3数据库设计之商城项目

    django3数据库设计之商城项目图 数据关系图

  2. php写商城,小白学习使用Thinkphp5写一个商城项目

    上篇博客我们顺利的使用phpStudy把基于Thinkphp5的helloWorld这个项目启动起来了,这个项目架构采用的是MVC(模型-视图-控制器)的模式.这个商城项目采用的是基础+扩展的设计模式 ...

  3. Vue3教程:Vue3 开源商城项目重构计划正式启动!

    我打算用 Vue3 写一个商城项目,目前已经开始着手开发,测试完成后正式开源到 GitHub,让大家也可以用现成的 Vue3 大型商城项目源码来练练手. 1 Vue3 来了 今年上半年,我用 Vue ...

  4. 商城项目--全选,反选 vue2.x+JQ代码(俩种实现方式)

    Hello 大家好我是杨小宝!最近刚刚接手公司内一个商城项目,里面一些业务逻辑其实学习与记录一下挺好的,如果你也正好做商城类似的项目,看一下我们有相同的问题吗? 首先这个全选,反选一开始做的时候我进入 ...

  5. 「newbee-mall新蜂商城开源啦」SpringBoot+MyBatis开发JavaWeb线上商城项目

    我的想法很简单,就是做一个大家都能运行的商城项目,而不是缺胳膊少腿的项目,不求有多么完善,也不求有多少技术栈,我目前的想法就是大家都可以运行它.使用它,至于完善它嘛,给我点时间哈. 本项目开源地址: ...

  6. 【美多商城项目01】了解主要需求和架构设计,创建配置工程

    一.美多商城项目介绍 1.1 项目需求分析 需求分析原因 项目中,需求驱动开发,即开发人员需要以需求为目标来实现业务逻辑. 需求分析方式 企业中,借助产品原型图分析需求. 需求分析完后,前端按照产品原 ...

  7. 基于HTML服装商城项目的设计与实现

    XXXX职业学院 毕 业 论 文 题 目: 基于HTML服装商城项目的设计与实现 所属系部: 信息工程学院 专业班级: 学生姓名: 指导教师: 2020 年 11 月 29 日 摘 要 美萌服饰网上商 ...

  8. Django框架学习之网上商城项目一(后端设计)

    目录 一.项目需求分析 1.项目介绍 1.技术难点 2.系统功能 3.项目环境 4.后台管理页面 二.数据库模型设计 一.准备工作 二.用户认证数据库模型设计 1. app/users/models. ...

  9. gitee提交代码_在Gitee获8.5k Star,做微信小程序商城看这一个开源项目就够了

    商城系统是小程序中比较热门的类型,许多开发者在寻找商城类小程序项目时,都会遇到一些声称「开源」但是并不是完全开源,有时候还会收费的项目.今天 Gitee 介绍的这款微信小程序商城项目就是一款从前端到后 ...

最新文章

  1. 最高75K,至多可拿16薪,这个岗位成财富密码?
  2. mac之brew安装卸载使用
  3. Spring配置形式之基于注解的方式
  4. 软件测试有没有测试大纲文档,系统测试大纲(范例).docx
  5. 5 微信公众号开发 获取 access_token
  6. Mysql5.1.36 autoinstall.sh
  7. 【2016年第6期】基于大数据的移动互联网主动运维理论和实践进展
  8. git 提交代码命令_提交代码:git push 命令的四种形式
  9. EGO走进美团——追寻千亿市场背后的技术力量
  10. 亿级流量架构服务限流,写得太好了!
  11. [Docker入门-2] Docker Containers 的创建和使用
  12. 高博课程编程作业之计算小萝卜的坐标
  13. 最大回撤python_最大回撤,最大回撤恢复时间与最大回撤持续期
  14. 初中数学503个必考知识点_初中数学|必考的21个知识点
  15. 人工智能面试总结-基础理论
  16. PyQt4实时显示文本内容GUI
  17. 高级计算机应用a,A东师计算机应用基础15春在线作业.doc
  18. 从滴滴到AirBnB,交易平台战争的秘密
  19. BERT的学习理解笔记
  20. Visio镜像翻转图形

热门文章

  1. 如何实现后台向前台传数据
  2. 关于参数类型的转换问题
  3. android:更改PagerTabStrip背景颜色,标题字体样式、颜色和图标,以及指示条的颜色...
  4. Repeater分页代码
  5. Linux JSP连接MySQL数据库
  6. scrollLeft,scrollWidth,clientWidth,offsetWidth到底指的哪到哪的距离
  7. Memcached在大型网站中应用
  8. 超强的jquery极品插件--色彩选择器类/ 右键菜单类/ 图片新闻flash展示类
  9. 对于广泛依赖外部资源的应用程序,请考虑在多处理器计算机上启用网络园艺
  10. ASP.NET结合COM组件发送Email