- A+
所属分类:MySQL
表基本模型结构
这里我们模拟一个商城的基本的表结。此结构由(用户、门店、导购、门店商品、订单、订单对应的商品)。其中,导购也是一个用户,门店是只属于一个店主的,同时店主本身也是一个导购也是一个普通用户。
结构图:
构造数据脚本
对业务场景进行模拟
- 场景1:购买者下订单。
1、从session中获得客户ID。
2、可以通过时间戳等拼凑一个订单ID(在创建表的时候为了方便我用自增的,在以下我们一直就吧订单ID看成不是自增的,是用程序生成的)。
3、从商品的店铺能获得到导购ID(获取规则我们这边认为是随机)。
4、可以从商品中计算出订单价格。
最终就能拼凑出下单的INSERT SQL语句(这边我就不真正写插入语句了)
1 2 3 4 5 6 7 8 9 10 |
SET autocommit=0; START TRANSACTION; -- 创建订单语句 INSERT INTO orders VALUES(订单ID, 导购ID, 购买用户ID, 订单价格, 订单状态); -- 创建商品订单语句 INSERT INTO order_goods VALUES(NULL, 订单ID, 商品ID, 商品价格, 商品数量); -- 可以给添加多个商品到订单中 ...... COMMIT; set autocommit=1; |
以上就是一个客户下单时要操作的,订单ID(订单号)是程序生成的,订单ID(订单号)是程序生成的,重要的事要说三遍。
- 情况2:购买者浏览订单
当用户查看订单列表的时候可以通过分页一次性获得自己的订单列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
-- 每一页10行(这边顺便展示一下单数据量大时优化后的sql语句) -- 查找用户ID为100的订单 SELECT l_o.orders_id, o.user_guide_id, o.user_id, o.price, og.price FROM ( SELECT orders_id FROM orders WHERE user_id = 100 LIMIT 0, 10 ) AS l_o LEFT JOIN orders AS o ON l_o.orders_id = o.orders_id LEFT JOIN order_goods AS og ON l_o.orders_id = og.orders_id; |
- 情况3:导购查看订单
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
-- 每个导购也可以查看他销售了多少的订单 -- 查找导购ID为1的销售情况 SELECT o.orders_id, o.user_guide_id, o.user_id, o.price, og.price FROM orders AS o LEFT JOIN order_goods AS og ON o.orders_id = og.orders_id WHERE o.orders_id IN( SELECT orders_id FROM ( SELECT orders_id FROM orders WHERE user_guide_id=1 LIMIT 0, 10 ) AS tmp ); |
- 情况4:导购修改订单
1 2 |
-- 这边我们修改订单金额就好,修改ID为1000的订单 UPDATE orders SET price = '10000' WHERE orders_id=1000; |
- 情况5:店主为店铺添加商品
1、我们可以根据操作的用户获得店铺名
1 2 |
-- 添加商品伪SQL INSERT INTO goods VALUES(NULL, 商品名, 商品价格, 店铺名); |
如有疑问请联系:
QQ:275258836 或 加入ttlsa群交流沟通(QQ群②:6690706 QQ群③:168085569 QQ群④:415230207(新) 微信公众号:ttlsacom)
感觉本文内容不错,读后有收获?

微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
23/02/2016 上午 10:53 沙发
以上就是一个客户下单时要操作的,订单ID(订单号)是程序生成的,订单ID(订单号)是程序生成的,重要的事要说三遍
—–LZ傻吗-LZ傻吗-LZ傻吗 重要的事要说三遍
28/02/2016 下午 8:19 1层
@Augus 谢谢夸奖
29/03/2016 下午 9:04 1层
@Augus 你是傻逼
24/06/2016 下午 4:38 2层
@v :roll: 傻逼才骂人