不需要把各種付款方式的交易紀錄,抽象成同一張資料表。
每種外部金流流程都使用獨立的 Transaction Table,不必過度抽象。命名格式為:
[RESOURCE]_[VENDOR]_[METHOD]_transactions
Table 名稱直接表達:服務哪種資源、使用哪家金流廠商、採用哪種付款方式。
許多團隊會用一張通用的 payment_transactions 表來處理所有金流,但實務上通常很難維護。
不同金流往往需要不同欄位,結果會造成大量欄位為 Null;程式端也必須在 Controller、Service 等各層加入大量 if else,判斷每筆資料屬於哪一家金流與付款方式。
原本以為通用表較方便,最後卻讓金流程式變得複雜、難以維護。相反地,依照上述命名方式拆分資料表,結構會更清楚,也能一眼看出該交易對應的資源、廠商與付款流程。
例如當電商系統,串接兩家金流廠商、四種付款方式時,會有以下四張 table:
order_tappay_credit_card_transactions
order_tappay_apple_pay_transactions
order_tappay_line_pay_transactions
order_ecpay_virtual_account_transactions
工程師排查金流問題時,可以迅速找到對應資料表,不會被大量無關交易資料干擾。
對中小企業而言,這種拆分方式通常更簡潔、清楚且易於維護。