Java電商支付系統手把手實現(二) - 數據庫表設計的最佳實踐


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支付電商平台實戰


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM