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

1 數據庫設計

1.1 表關係梳理

  • 仔細思考業務關係,獲得以下表關係圖

1.2 用戶表結構

1.3 分類表結構


id=0爲根節點,分類實際上是樹狀結構前端

1.4 商品表結構

  • 注意價格字段的類型爲 decimal

1.5 支付信息表結構

1.6 訂單表結構

  • 乍一看,有必要搞這麼多種的時間嘛?有如下諸多緣由數據庫

    • 前端顯示須要,那就必須存着呀!
    • 方便定位排查問題,好比某用戶投訴某訂單一直不發貨,確定就須要時間去定位
    • 方便數據分析,好比須要計算從用戶支付到最終發出商品的平均時間
    • 根據訂單狀態確認相應訂單時間

1.7 訂單明細表

因爲價格等變更因素,須要記錄用戶購買時的商品相關屬性詳情,咱們在作表關聯時,遇到這種可變因素,要考慮是否作存檔。
segmentfault

1.8 收貨地址

2 索引

2.1 惟一索引

惟一索引unique,保證數據惟一性
好比:數據庫設計

  • 用戶表中的用戶名字段,寫相同的用戶名就會報錯。

  • 訂單表中的訂單號

2.2 單索引及組合索引

對單/多個字段作索引叫單/組合索引
性能

3 時間戳

用於定位排查業務問題spa

  • create_ time: 建立時間
  • update_ _time: 更新時間

所以,每一個表裏基本都有該兩個字段哦!設計

4 總結

在數據庫設計時,注意以下幾點3d

  • 表關係
  • 單索引及組合索引
  • 表結構
  • 時間戳
  • 惟一索引

參考

  • 高性能 MySQL 第三版
  • Java支付電商平臺實戰
本文由博客一文多發平臺 OpenWrite 發佈!
相關文章
相關標籤/搜索