這裡我們模擬乙個**的基本的表結。此結構由(使用者、門店、導購、門店商品、訂單、訂單對應的商品)。其中,導購也是乙個使用者,門店是只屬於乙個店主的,同時店主本身也是乙個導購也是乙個普通使用者。
結構圖:
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(訂單號)是程式生成的,重要的事要說三遍。
當使用者檢視訂單列表的時候可以通過分頁一次性獲得自己的訂單列表。
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;
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
);
1
2
-- 這邊我們修改訂單金額就好,修改id為1000的訂單
update
orders
set
price =
'10000'
where
orders_id=1000;
情況5:店主為店鋪新增商品
1、我們可以根據操作的使用者獲得店鋪名
1
2
-- 新增商品偽sql
insert
into
goods
values
(
null
, 商品名, 商品**, 店鋪名);
mysql分表分庫實現 MySql分表分庫思路
一.資料庫瓶頸 1.1io瓶頸 第一種 磁碟讀io瓶頸,熱點資料太多,資料庫快取放不下,每次查詢時會產生大量的io 分庫和垂直分表 第二種 網路io瓶頸,請求的資料太多,網路頻寬不夠 分庫 1.2cpu瓶頸 第一種 sql問題,如sql中包含join,group by,order by,非索引字段條...
MySQL範圍分表分庫 mysql 分表分庫策略
唯一id的生成 下面列舉幾種常見的唯一id生成方案,需要滿足兩大核心需求 1.全域性唯一 2趨勢有序 1.用資料庫的auto increment 自增id 來生成,每次通過寫入資料庫一條記錄,利用資料庫id自增的特性獲取唯一,有序的id。優點 使用資料庫原有的功能,相對簡單 能夠保證唯一 能夠保證遞...
mysql 分庫分表實戰 MySQL分庫分表實戰
為什麼要分庫分表 在大型 中,當使用者量以及使用者產生的業務資料量達到單庫單錶效能極限時,為了支撐業務可持續發展,對於重要的核心業務必然要進行分庫分表來儲存業務資料。對於非核心業務產生的大量資料,例如爬蟲爬取的資訊,論壇產生的資料等,可以考慮把資料儲存在像mongodb這樣的nosql儲存裡面,這些...