1 數(shù)據(jù)庫(kù)設(shè)計(jì)
1.1 表關(guān)系梳理
-
仔細(xì)思考業(yè)務(wù)關(guān)系阶界,得到如下表關(guān)系圖
1.2 用戶表結(jié)構(gòu)
1.3 分類表結(jié)構(gòu)
id=0為根節(jié)點(diǎn)暖呕,分類其實(shí)是樹(shù)狀結(jié)構(gòu)
1.4 商品表結(jié)構(gòu)
- 注意價(jià)格字段的類型為 decimal
1.5 支付信息表結(jié)構(gòu)
1.6 訂單表結(jié)構(gòu)
- 乍一看,有必要搞這么多種的時(shí)間嘛剩蟀?有以下諸多原因
- 前端顯示需要舷夺,那就必須存著呀苦酱!
- 方便定位排查問(wèn)題售貌,比如某用戶投訴某訂單一直不發(fā)貨,肯定就需要時(shí)間去定位
- 方便數(shù)據(jù)分析疫萤,比如需要計(jì)算從用戶支付到最終發(fā)出商品的平均時(shí)間
- 根據(jù)訂單狀態(tài)確認(rèn)相應(yīng)訂單時(shí)間
1.7 訂單明細(xì)表
由于價(jià)格等變動(dòng)因素颂跨,需要記錄用戶購(gòu)買時(shí)的商品相關(guān)屬性詳情,我們?cè)谧霰黻P(guān)聯(lián)時(shí)扯饶,遇到這種可變因素恒削,要考慮是否做存檔。
1.8 收貨地址
2 索引
2.1 唯一索引
唯一索引unique,保證數(shù)據(jù)唯一性
比如:
-
用戶表中的用戶名字段尾序,寫(xiě)相同的用戶名就會(huì)報(bào)錯(cuò)钓丰。
-
訂單表中的訂單號(hào)
2.2 單索引及組合索引
對(duì)單/多個(gè)字段做索引叫單/組合索引
3 時(shí)間戳
用于定位排查業(yè)務(wù)問(wèn)題
- create_ time: 創(chuàng)建時(shí)間
- update_ _time: 更新時(shí)間
因此,每個(gè)表里基本都有該兩個(gè)字段哦每币!
4 總結(jié)
在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)携丁,注意如下幾點(diǎn)
- 表關(guān)系
- 單索引及組合索引
- 表結(jié)構(gòu)
- 時(shí)間戳
- 唯一索引
參考
- 高性能 MySQL 第三版
- Java支付電商平臺(tái)實(shí)戰(zhàn)