1 數據庫設計
1.1 表關系梳理
- 仔細思考業務關系,得到如下表關系圖
1.2 用戶表結構
1.3 分類表結構
id=0為根節點,分類其實是樹狀結構
1.4 商品表結構
- 注意價格字段的類型為 decimal
1.5 支付信息表結構
1.6 訂單表結構
- 乍一看,有必要搞這么多種的時間嘛?有以下諸多原因
- 前端顯示需要,那就必須存着呀!
- 方便定位排查問題,比如某用戶投訴某訂單一直不發貨,肯定就需要時間去定位
- 方便數據分析,比如需要計算從用戶支付到最終發出商品的平均時間
- 根據訂單狀態確認相應訂單時間
1.7 訂單明細表
由於價格等變動因素,需要記錄用戶購買時的商品相關屬性詳情,我們在做表關聯時,遇到這種可變因素,要考慮是否做存檔。
1.8 收貨地址
2 索引
2.1 唯一索引
唯一索引unique,保證數據唯一性
比如:
- 用戶表中的用戶名字段,寫相同的用戶名就會報錯。
- 訂單表中的訂單號
2.2 單索引及組合索引
對單/多個字段做索引叫單/組合索引
3 時間戳
用於定位排查業務問題
- create_ time: 創建時間
- update_ _time: 更新時間
因此,每個表里基本都有該兩個字段哦!
4 總結
在數據庫設計時,注意如下幾點
- 表關系
- 單索引及組合索引
- 表結構
- 時間戳
- 唯一索引
參考
- 高性能 MySQL 第三版
- Java支付電商平台實戰