本章适合初级工程师及中级工程师细看,大佬请随意

前言

  • 问 [不存价格字段不行吗?直接查询商品表获取价格]
  • 答 [如果价格更新,应提示用户,商品的浮动信息。可以选择直接更新购物车,或者单独建立一个表,来记录更新的价格和信息,类似京东]
  • 问 [联表查询可以从商品表中知道商品是否上架]
  • 答 [商品不存在了如何联,只会将逻辑整复杂,未来包括降价提醒,无货提醒,下架提醒,购物车该如何查询就成了一个问题]

上一篇文章在对于购物车业务及数据表设计中,有位童鞋在评论区与我讨论许久,特此独立一篇文章来详解下我的想法及我为什么这么做,以下为在业务层面、逻辑层面、未来功能的可扩展性、编码的复杂度、数据统计层面来解释下我的设计。

业务

业务上来看,无论是多表查还是单表存都是合理的,列出以下在购物车上的相关部分业务 - 库存不足提醒 (提高付款概率) - 降价提醒 (提高付款概率) - 商品下架提醒 - 有关商品的商品优惠券或其他活动 (提高付款概率) 以技术角度说明

降价提醒

多表的降价提醒需要第三张表支撑 <商品修改记录表>

多表

这时购物车内的商品与商品表存在关联,检测降价的系统就需要在商家修改价格时将检测结果后查询加入本商品的购物车,顺便去查询商家修改前价格,算出差价,发送到队列或者其他的手段,用户接收到降价通知,刺激消费。这时你发现,这貌似没有什么地方有问题,如果这时候需要增加一个业务,按照用户加入购物车的时间,提示他在加入购物车后这段时间降价多少?这时是否需要在来个加入购物车的记录表,这样不断的多级关联,看似没有问题,实际将业务耦合,一次sql要关联N个表,如果这时增加sku和spu那就更不用说了。在未来量级上升后是支撑不住的,并且也不方便扩展。

单表

[我的设计并不是最好的,仅此参考] , 在考虑到未来业务不断增加的问题,我是将价格与标题和商品的SKU加入到购物车表内,在商户修改时无需关心其他表,直接检索与修改商品相关的购物车,拿出价格,计算差价,提示用户。如果计算加入购物车这段实际降价多少,这其实与上述操作一样,对于单表的设计上,这2种需求实为一种解决方案。在查询上也是一条sql语句的实现。

当然,我们还是需要关联上,不知道未来的某一天就用的上了呢? 有很多场景,都要将标题呀,内容呀直接存储,类似与收藏的店铺和商品,无论卖家怎么做,用户购物车,订单不能动,这是基准。

商品下架

商品下架,用户的购物车实际是不能动的,某猫的做法是使其变灰,让用户自行删除。 商家分很多种,商品的标题,图片或者分类修改了,都属于下架,这时的多表关联查询就彻彻底底的失效了。 其实商品的下架应该直接通知购物车下架 (变灰),并非关联查询是否下架。如果你非要这样做,那你依旧需要做一些表去记录。

我并不是说不需要做记录。而是记录的表实际是不参与业务查询的。

逻辑

逻辑这里特指代码的架构编写。以php为例,可以参考我之前的文章 http://blog.fastrun.cn/2018/06/13/1-9/ 在逻辑方面,要考虑方面比较多,类似sql的性能,代码的性能,服务器的性能等。尽量避免多表查询吧。

可复用性

百度百科的定义是

可复用性(Reuseability)复用又叫重用,是重复使用的意思。目前,一般软件的复用率并不高,尤其在国内。复用的好处可以得到 较高的生产效率以及随之而来的成本降低、较高的软件质量(错误可以更快的被纠正)以及 恰当的使用复用可以改善系统的可维护性。

在购物车的设计上,重用主要提现在商品信息的存储方式上,避免多次去联表查询,在业务量大后的份表分库提现会更明显。

可扩展性

百度百科的定义是:

设计良好的代码允许更多的功能在必要时可以被插入到适当的位置中。这样做的目的的是为了应对未来可能需要进行的修改,而造成代码被过度工程化地开发。

正常购物车、商品、优惠券都是独立的系统及功能,不要看做商品在购物车内。现实和逻辑并非是一脉相承的。就假设在实际生活中,物品仅仅是放在购物车中,如果不结账,依旧不属于自己。为了方便扩展更多业务,尽量在设计之初,功能与功能之间不要“粘”在一起。

可维护性

百度百科的定义是:

系统的可维护性是衡量一个系统的可修复(恢复)性和可改进性的难易程度。所谓可修复性是指在系统发生故障后能够排除(或抑制)故障予以修复,并返回到原来正常运行状态的可能性。而可改进性则是系统具有接受对现有功能的改进,增加新功能的可能性。

购物车的设计之初也是考虑未来商品的业务功能各种变更。不如简单点,直接将其属性存到购物车。

复杂度

初期的设计,决定未来开发及重构的复杂度。功能与功能,系统与系统之间尽量避免直接关联。

统计

后期的数据统计、计算也会受到前期设计的影响。

致谢

感谢你们看到这里,下一篇我会讲一下关于电商系统的商品设计的部分。有什么问题可以评论区提问。谢谢

快照设计 电商系统_电商系统设计之购物车相关推荐

  1. c++设计地铁售票系统_地铁售票系统设计思想及部分代码

    设计思想:地铁售票系统的关键点在于换乘,所以首先要分为换乘和不换乘两种情况.不换乘比较简单,通过起始站名和终点站名查询他们的num,然后list打包输出到jsp就可以.换乘的话就先要找到两条线路,找到 ...

  2. web电商系统、电商平台WEB端交互原型模板、用户中心、会员中心、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务、Axure原型、rp原型、电商原型、商城系统原型

    作品介绍:web电商系统.电商平台WEB端交互原型模板.用户中心.会员中心.优惠券.积分.互动社区.运营推广.内容推荐.商品展示.订单流程.订单管理.售后及服务等完整的电商体系功能架构和业务流程 Ax ...

  3. 电商系统_如何打造 一个完美的电商系统

    紧随电商发展趋势,打造符合客户自身的电商路径. 多用户商城系统: 多用户商城系统以B2B2B2C的理念出发,创新模块化设计,自营.招商.批发.供货.分销.城市站点.区域代理.O2O门店,一套系统即可搞 ...

  4. 跨境电商系统开发-电商商城系统平台定制方案

    随着业务的拓展,不少企业开始将目光转向国外市场,那么如何定制一套属于想自己的跨境出海电商商城方案呢?需要做好以下关口把关: 欢迎名片交流探讨开发平台流程 买家端(h5/pc/app)  www.mar ...

  5. php蔬菜农村电商系统_农产品追溯电商销售平台设计(PHP+MySQL)

    摘要:六盘山地区风景优美且物产丰富, "六盘山珍"蘑菇则是近年来备受瞩目的特色有机农产品的代表之一.在"互联网+"背景下, 其传统的销售模式受到一定挑战, 建立 ...

  6. 真电商之从0开始设计你的系统2——电商后台全逻辑需求挖掘

    看过上一章节相信你从感官上对电商的前台系统有了一个感性的认知,也学些了UML用例图的基本画法.开始试图画用例图去分析归纳系统的功能点.也许你会觉得这些东西有一点简单可笑,设计的事情你觉得不屑于去做,但 ...

  7. 电商直播系统_电商直播源码中购物车功能实现

    有一次淘宝搞活动,有姐妹跟我吐槽,说她在购物车一键下单商品,被淘宝提示最多只能一次下单50个商品,导致一些商品没有抢到--在电商直播系统中,购物车功能是非常常见且重要的基础功能,它负责暂时存放用户感兴 ...

  8. php蔬菜农村电商系统_农产品电子商务网站开发(PHP+MySQL+JavaScriptHTML)

    摘 要 随着互联网技术的不断发展,电子商务活动在全国乃至全世界范围内展开.网购也已经成为我们生活中主要的购物方式之一.如果我们可以在上班休息的时候或各种空闲时间在网上来买好菜,等下班了,我们购买的蔬菜 ...

  9. 跨境电商系统_商城自营系统_自营店铺系统_功能业务逻辑_OctShop免费开源商城系统

    自营店铺是商城平台官方开设的店铺,相比普通店铺,多增加了自营店铺标识,商品和店铺的搜索与展示都会标识为自营.商城的搜索引擎与排序,首先推荐的也会是高质量的自营店铺,可以获取更多的用户流量.是否为自营店 ...

最新文章

  1. html脱离标准文档流,关于css脱离标准文档流的两种方式
  2. Tomcat8.5的【下载、安装、启动、各种问题结局】
  3. Python virtualenv激活与退出虚拟环境
  4. openj9下载_Quarkus on OpenJ9 JVM和资源消耗
  5. matlab参数摄动仿真,《过程控制工程及仿真:基于MATLAB/Simulink》随书光盘
  6. linux内存管理(十三)-内存规整过程分析
  7. word2vec原理知识铺垫
  8. NVisionXR_iOS教程十一 —— 多场景切换
  9. linux apktool使用教程,简单介绍ubuntu下apktool的使用与配置
  10. java基于ssm的农产品网上销售系统
  11. 计算机高配置表cpu,高配置电脑配置清单
  12. 复合函数求导定义证明_复合函数求导公式如何证明?
  13. FPGA零基础学习:理解数字信号和模拟信号
  14. 力扣(66.67)补8.27
  15. etcher刻录以后U盘容量只有12M,如何恢复容量?
  16. 蓝牙解码格式哪个最好_可能是声音最好的蓝牙解码耳放之一,Oriolus 1795 体验...
  17. 交互设计师的自我修炼
  18. 关于访问后端接口报404的问题——全网最详细的404错误详解
  19. 什么是“黑天鹅现象”?
  20. scrapy抓取淘宝女郎 1

热门文章

  1. Pytorch中图像预处理相关函数
  2. Java poi插件导出Excel文件合并多sheet页
  3. vue v-for指令
  4. 【帖子收藏】ansible 中的循环:with_file 和 with_fileglob
  5. Python jsonpath库的使用:解析json并将结果保存到文件
  6. HBase单机版安装详细步骤
  7. 图解Hadoop hdfs写数据流程
  8. Linux shell关系运算
  9. redis replicaof命令的使用
  10. Spring Boot @ConfigurationProperties注解的使用