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 單索引及組合索引

    對單/多個字段作索引叫單/組合索引
    3d

    3 時間戳

    用於定位排查業務問題
  • create_ time: 建立時間
  • update_ _time: 更新時間blog

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

4 總結

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

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

    參考

  • 高性能 MySQL 第三版
  • Java支付電商平臺實戰

相關文章
相關標籤/搜索