摘要:致谢感谢你们看到这里,下一篇我会讲一下关于电商系统的商品设计的部分。
电商大伙每天都在用,类似某猫,某狗等。前言
电商系统设计看似复杂又很简单,看似简单又很复杂
本章适合初级工程师及中级工程师细看,大佬请随意
设计以以下为工具讲起
PHP为开发语言
基于Laravel框架
MySQL为数据存储
电商的可变性与孩子的心情一样,变化极快,所以在设计之处就要想好大部分的功能接入及开发,尽量减少重构次数。对老板来说节约成本,对程序员来说“珍惜生命”
数据表前期业务简单时,我们可以将数据表设计为下列的样子
TableName | Comments |
---|---|
member | 用户表 |
member_address | 收货地址表 |
member_card | 银行卡表 |
member_cart | 购物车表 |
member_cart_item | 购物车商品表 |
member_collect_product | 商品收藏表 |
member_collect_supplier | 店铺收藏表 |
member_data | 用户信息表 |
member_query_history | 用户搜索历史表 |
member_wallet | 用户账户表 |
member_withdrawal | 用户提现表 |
考虑到多种登录方式,应在数据表中涉及到微信的openid,unionid,支付宝、QQ的用户token等,这些要在前期就涉及进去,因后期用户量大了之后加一个字段简直是噩梦,用户状态status也必不可少,比较人也是分好坏,其次就是创建时间,登录时间等,用户表与用户信息表绝逼是绑定关系,这就不多言了。
CREATE TABLE `member` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `tel` bigint(20) DEFAULT NULL COMMENT "手机号码", `password` varchar(555) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT "登录密码", `wx_token` varchar(125) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT "微信TOKEN", `im_token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "用户融云token", `open_id` varchar(125) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `status` enum("1","-1") COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT "1" COMMENT "账号状态", `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `member_tel_unique` (`tel`), UNIQUE KEY `member_wx_token_unique` (`wx_token`) ) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;收货地址表
收货地址与用户是一一相对的,在设计上增加需要的字段即可,例如 收货人、收货人手机号、城市、详细地址等
CREATE TABLE `member_address` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `member_id` int(11) NOT NULL COMMENT "用户编号", `nick_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "收货人姓名", `tel` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "手机号码", `prov` int(11) DEFAULT NULL COMMENT "省", `city` int(11) NOT NULL COMMENT "市", `area` int(11) DEFAULT NULL COMMENT "区", `address` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT "" COMMENT "街道地址", `number` int(11) NOT NULL COMMENT "邮政编码", `default` enum("0","1") COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT "0" COMMENT "默认收货地址 1=>默认", `deleted_at` timestamp NULL DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;银行卡表
用于用户提现的业务等,大致将银行卡所需的信息记录即可,例如持卡人、卡号、归属银行等
CREATE TABLE `member_card` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `member_id` int(11) NOT NULL COMMENT "用户编码", `card_name` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "持卡人姓名", `card_number` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "银行卡号", `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `member_card_card_number_unique` (`card_number`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;购物车表
为何多带带建这个表,也是又一定原因的,正常只需要member_cart_item表即可,根据实际下线的业务场景,正常购物到超市需要拿一个购物车,但这个购物车并非属于你,你使用之后,需要归还,他人可继续使用,将购物车公开化,并不是将购物车商品公开化。业务场景比较窄,例如京东到家和京东商城一样(我只是举例,并不清楚他们怎么做的),购物车不通用,那如何区分呢,是应该在购物车上区分还是在购物车商品上区分?我想你已经清楚了。
CREATE TABLE `member_cart` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `member_id` int(11) NOT NULL COMMENT "用户编码", `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `member_cart_member_id_unique` (`member_id`), KEY `member_cart_member_id_index` (`member_id`) ) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;购物车商品表
这块需要提的一点是 [并不是所有表的设计都是互相绑定,互相依赖的],就例如购物车商品表,不仅仅将商品编码存储在内,还要将商品价格,商品的简介以及商品的规格(既SKU)存储,不能因卖家下架商品,而查询不到商品的存在,比较一切以用户为主,用户是上帝的原则,不能让商品悄悄的就消失了吧。所以在做购物车商品表查询时,切记不要使用join或者表关联查询
CREATE TABLE `member_cart_item` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `cart_id` int(11) NOT NULL COMMENT "购物车编码", `product_desc` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "商品sku信息", `product_img` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "商品快照", `product_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "商品名称", `price` decimal(8,2) NOT NULL DEFAULT "0.00" COMMENT "价格", `product_id` int(11) NOT NULL COMMENT "商品编码", `supplier_id` int(11) NOT NULL COMMENT "店铺编码", `sku_id` int(11) NOT NULL COMMENT "商品sku编码", `number` int(11) NOT NULL DEFAULT "1" COMMENT "商品数量", `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `member_cart_item_cart_id_product_id_supplier_id_index` (`cart_id`,`product_id`,`supplier_id`) ) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;用户搜索历史表
用户搜索的记录是一定要有的,为了未来的数据分析,智能推荐做准备,毕竟现在是信息共享的时代嘛~
CREATE TABLE `member_query_history` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `member_id` int(11) NOT NULL COMMENT "用户编码", `keyword` varchar(125) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "关键字", `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;数据记录
有很多场景,都要将标题呀,内容呀直接存储,类似与收藏的店铺和商品,无论卖家怎么做,用户购物车,订单不能动,这是基准。
致谢感谢你们看到这里,下一篇我会讲一下关于电商系统的商品设计的部分。有什么问题可以评论区提问。谢谢
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28847.html
摘要:前言这是电商系统设计系列在商品设计这块的最后一篇文章。电商系统商品相关的文章已经到了尾声如果有其他商品相关的文章需要编写可以私信联系我毕竟我也是公司员工写这些文章并不是我的工作,只是记录我的职业生涯。 showImg(https://segmentfault.com/img/bVbePdh?w=1260&h=628); 前言 这是电商系统设计系列在商品设计这块的最后一篇文章。以下是其他...
摘要:可扩展性百度百科的定义是设计良好的代码允许更多的功能在必要时可以被插入到适当的位置中。正常购物车商品优惠券都是独立的系统及功能,不要看做商品在购物车内。可维护性百度百科的定义是系统的可维护性是衡量一个系统的可修复恢复性和可改进性的难易程度。 showImg(https://segmentfault.com/img/bVbcqJE?w=506&h=326); 本章适合初级工程师及中级工程...
摘要:我一直在说电商是一个既简单又复杂的东西本章我们再一次深度解析电商系统商品设计的更多逻辑与实现。品牌无需关联到内,道理很简单,当前的是归属与苹果公司,自然而然下面的规格都属于苹果了。 showImg(https://segmentfault.com/img/bVbdtuc?w=1824&h=1028); 电商大伙每天都在用,类似某猫,某狗等。电商系统设计看似复杂又很简单,看似简单又很复杂...
摘要:订单号用户商品标题商品价格商品封面图商品其他属性小明爱疯手机其他属性像上表中设计,有人会问了那关联的意义何在呢我的回答是保持数据关联,虽然商户有可能改变商品属性,但作为一名程序员,应该尽可能的记录用户所有的动作。 showImg(https://segmentfault.com/img/bVbdtuc?w=1824&h=1028); 电商大伙每天都在用,类似某猫,某狗等。电商系统设计看...
摘要:即使秒杀系统崩溃了,也不会对网站造成影响。动态生成随机下单页面的为了避免用户直接访问下单需要将动态化,用随机数作为参数,只能秒杀开始的时候才生成。架构设计如何控制秒杀商品页面抢购按钮的可用禁用。该文件不被缓存的做法随机数。 秒杀背景 电商中为了吸引顾客、聚集人气,经常会策划一些秒杀活动。活动中售卖的商品,要么价格远低于市场价格,要么比较稀缺(如一些新发布的商品)。这些商品电商一般都会限...
阅读 1295·2023-04-25 18:34
阅读 3386·2021-11-19 09:40
阅读 2786·2021-11-17 09:33
阅读 2907·2021-11-12 10:36
阅读 2783·2021-09-26 09:55
阅读 2627·2021-08-05 10:03
阅读 2473·2019-08-30 15:54
阅读 2836·2019-08-30 15:54