支付系统的数据库设计

时间:2018-11-14 05:35:23

标签: logging database-design payment

我有四个表,如下所示:

费用

fees_id, interest, amount, total_amount, status_id, is_recurring  recurring_status  from_date   to_date      payment_id
    F001     1.50  1000    1015          1          N             NULL              2018-11-01  2018-11-01   1
    F002     2.00  2000    1020          1          Y             COMPLETE          2018-11-01  2018-11-20   2

付款

id, amount,  payment_date, txn_id, bnk_name, txn_status, pay_mode, dd_no, dd_date,   chk_no, chk_date
1   1015     2018-11-11    TXN0001 SBI       1           1         NULL   NULL       NULL    NULL
2   1020     2018-11-20    NULL    NULL      NULL        3         DNO001 2018-11-19 NULL    NULL

PAY_MODES

id  name   display
------------------
1   ONLINE Y
2   CASH   Y
3   DRAFT  Y
4   CHECK  Y

PAYMENT_STATUS

id  status  display
-------------------
1   PAID    Y
2   UNPAID  Y

可以通过四种支付方式中的任何一种来支付费用。

我有几个问题:

  • (在这种情况下)可以为所有付款方式使用一张付款表吗?还是有更好的选择?
  • 可以重复收费(每月支付一次,直到其重复状态完成为止)。我该如何处理这些付款?
  • 我是否需要存储每个付款响应(如果是在线付款),无论是成功,失败还是其他。如果是,我应该使用单独的表还是将其存储在文件中?

1 个答案:

答案 0 :(得分:2)

问题:(在这种情况下)可以为所有支付模式使用一张支付表吗?还是有更好的选择?

  

是的,所有付款都应在一个付款表中。这有助于   维护事务完整性约束。此外,这将有所帮助   将来为您生成各种报告时

Que:可以重复收费(每月支付一次,直到其重复状态完成为止)。我该如何处理这些付款?

  

您应该有另一个表格来维护定期付款   记录为“订阅”表以及每次的定期付款事件   记录将新条目插入付款表。因此,一个订阅   记录将与多个付款条目有关。

Que:是否需要存储每个付款响应(如果是在线付款),无论是成功,失败还是其他。如果是,我应该使用单独的表还是存储在文件中?

  

是的,您应该将付款回复存储在同一张付款表中   记录。这将帮助您进行故障转移检测以及   审核日志的主要帮助。