我有一個web服務,我正在設計哪些付款用戶來完成某些任務。例如,如果用戶點擊一個鏈接,他們就會向他們的帳戶支付0.10美元。用戶可以每天執行20次這些任務中的任何一個。爲了讓用戶請求資金支付給他們,他們必須有5美元的賬戶餘額。借記卡/信用卡/付款服務的數據庫設計
我試圖決定跟蹤交易和帳戶的最佳方式。我的設計目前看起來如下:
Accounts
---------
| account_id | member_id | balance |
-------------------------------------
| 1 | 1 | 497.8500 | -- System Account
| 2 | 5 | 2.1500 |
Transactions
------------
| transaction_id | account_id | type_id | task_id | date | amount |
-------------------------------------------------------------------
| 1 | 1 | Debit | 1 | date | -1.10 |
| 2 | 2 | Credit | 1 | date | 1.10 |
| 3 | 1 | Debit | 1 | date | -1.05 |
| 4 | 2 | Credit | 1 | date | 1.05 |
此設計基於雙重入賬的會計主管。現在我的困境是:從技術上講,用戶在獲得「支付」之前不會支付這筆錢。 「付款」包括用戶提交請求,請求被批准,錢從賬戶餘額中扣除並通過PayPal發送給他們。所以我的問題是,如果用戶尚未請求支付,實際從系統餘額中扣除金額是否是一個好主意?他們賬戶中的資金可用於資助網站上的其他內容,並在30天不活動之後過期。
我的想法是,以保持事務表,因爲它是設計和另一個表稱爲支出結構如下
Payouts
-------
| payout_id | account_id | date | amount |
------------------------------------------
| 1 | 2 | date | $2.00 |
但後來我怎麼反映交易表中的支出?它似乎不完整。
我是否應該將交易表中的任務分開,並且只有在用戶請求支付時才輸入交易記錄?我不確定是否因爲這樣做而失去審計能力。
有沒有人有一些見解?