有你在真好 的个人博客
微信商城中购物车和订单表结构设计
阅读:2346 添加日期:2021/3/27 23:25:50 原文链接:https://www.toutiao.com/item/6424012741773623809/

购物车的实现可以使用多种方式,主流的有以下3种:

存储在用户游览器中:如使用cookie记录,也可以使用HTML5的本地存储等

存储在服务器中:存储在用户会话(session)中,用户在关闭游览器后存储信息会被销毁

存储在数据库中:可以存储在Mysql、Redis等数据库中

下面以Mysql存储用户的购物车信息,这样用户无论何时都可以看到自己的购物车历史记录。购物车表(goods_shopcar)设计见图微信商城中购物车和订单表结构设计

购物车表goods_shopcar的SQL语句如下:

  1. CREATE TABLE `goods_shopcar` (

  2. `id` int(4) NOT NULL ,

  3. `uid` int(10) NULL ,

  4. `goods_id` int(10) NULL ,

  5. `num` int(10) NULL ,

  6. `status` tinyint(4) NULL ,

  7. `create_time` int(10) NULL ,

  8. `update_time` int(10) NULL ,

  9. PRIMARY KEY (`id`)

  10. );

表设计中关键字段为uid和goods_id,可以记录那个用户加入了那个商品。num则记录了某个商品的加入的数量。

既然有购物车那么就会有支付功能,发起支付的时候需要发送一个唯一的订单号给微信服务器,这样在通知的时候才可以了解该修改那条订单记录。另外订单的核心就是记录那个用户买个那些商品,并提供支付等相关的状态管理。订单表(db_order)设计见图

微信商城中购物车和订单表结构设计

订单表order的SQL语句如下:

  1. CREATE TABLE `order` (

  2. `id` int(4) NOT NULL ,

  3. `order_number` varchar(50) NULL ,

  4. `uid` int(10) NULL ,

  5. `pay_price` double(20,2) NULL ,

  6. `is_pay` tinyint(4) NULL ,

  7. `pay_time` int(10) NULL ,

  8. `is_ship` tinyint(4) NULL ,

  9. `ship_time` int(10) NULL ,

  10. `is_receipt` tinyint(4) NULL ,

  11. `receipt_time` int(10) NULL ,

  12. `ship_nmber` varchar(100) NULL ,

  13. `status` tinyint(4) NULL ,

  14. `create_time` int(10) NULL ,

  15. `update_time` int(10) NULL ,

  16. PRIMARY KEY (`id`)

  17. );

因为用户可以一次性购买多个商品,所以用户订单与商品是一对多的关系。设计的订单商品表(order_goods)见图

微信商城中购物车和订单表结构设计

订单商品表order_goods的SQL语句如下:

  1. CREATE TABLE `order_goods` (

  2. `id` int(4) NOT NULL ,

  3. `order_id` int(10) NULL ,

  4. `goods_id` int(10) NULL ,

  5. `goods_num` int(10) NULL ,

  6. `goods_price` double(20,2) NULL ,

  7. `status` tinyint(4) NULL ,

  8. `create_time` int(10) NULL ,

  9. `update_time` int(10) NULL ,

  10. PRIMARY KEY (`id`)

  11. );

订单表(order)只是记录了商品的总支付金额(pay_price),所以在订单商品表(order_goods)中设计记录了每个商品的购买价格(goods_price),这么做是inwei商品的价格会动态调正,而订单需要保存历史价格信息。

ICP备案号:苏ICP备14035786号-1 苏公网安备 32050502001014号