【问题标题】:Database design for recurring fine payment经常性罚款支付的数据库设计
【发布时间】:2019-05-05 11:22:24
【问题描述】:

我有一张桌子很好

fine_id  amount  date           fine_type  is_rec  rec_status 
F001     100     2018-12-01     1          TRUE    INCOMPLETE
F002     10000   2018-12-02     4          FALSE   NULL

还有一个付款表

id   fine_id    amount   paymode   txn_id   txn_status
1    F002       10000    ONLINE    TXN001   1

罚款可以重复发生,即用户必须每月支付罚款金额,直到管理员将其 rec_status 更新为“已完成”。

  1. 付款表只存储成功的付款,对于失败的付款,我制作了一个单独的表(可以吗)?
  2. 在这种情况下,我如何处理经常性罚款?
  3. 要检查是否已支付罚款,我正在检查支付表中是否存在条目。可以吗?

EDIT-1

大师兄

fine_id  amount  entry_date     fine_type  is_rec  rec_status    rec_type
F001     100     2018-12-01     1          TRUE    INCOMPLETE    Monthly
F002     10000   2018-12-02     4          FALSE   NULL
F003     10000   2018-12-02     4          TRUE    INCOMPLETE    Yearly

很好

rec_fine_id    fine_id  amount  for_month  for_year  is_paid
RF001          F001     100     022018     NULL      TRUE
RF002          F003     10000   NULL       2018      TRUE
RF003          F002     10000   NULL       NULL      TRUE
RF004          F001     100     032018     NULL      FALSE

付款

id   rec_fine_id  amount paymode  txn_id   txn_status  is_successful pay_date
 1   RF001        100    ONLINE   TXN001   1           true         2018-02-10
 2   RF003        10000  ONLINE   TXN010   1           true         2018-10-10
 3   RF002        10000  ONLINE   TXN011   1           true         2018-07-11

【问题讨论】:

  • 至少您需要一种方法来存储给定付款的月份,在payments 表中。
  • 您没有提供足够的信息。例如,您是否试图跟踪预计在哪个月份付款?您是否在跟踪哪些月份已支付或未支付?您当前的设计只跟踪付款而不考虑几个月。您甚至没有存储付款日期。提示:如果您确实想完整跟踪月份,我建议使用标准 ISO 8601 格式的文本:YYYY-MM,例如 2018 年 2 月的 2018-02
  • 类似,可能重复:database design for a payment system
  • 我正在存储付款日期

标签: database payment recurring-billing


【解决方案1】:

我建议你有三个表:FineMaster(保存关于罚款的主信息,rec_status 是否完成。罚款只有一个条目),Fine(保存经常性的罚款细节并有父参考 FineMaster),Payment(保存每次罚款重复的付款信息)。

  1. 不需要单独的表格。只需一张桌子即可付款。有一个标志,IssuccessfulPayment。这个标志会告诉你支付是否成功。

  2. 可以使用FineMaster 处理经常性罚款。请参阅答案中的第一段。

  3. 我建议您在“罚款”表中维护经常性罚款付款信息。在 Fine 表中有一个标志 IsPaymentCompleted。如果经常性罚款的支付成功,则更新罚款表以表明支付成功。对于单笔罚款,也可能有多次付款。我建议您在 Fine 表中维护经常性罚款付款信息。

【讨论】:

  • 我已经编辑了我的问题,请检查其他问题
  • @KuldeepThakur,根据编辑后的问题更新了我的答案
  • 因为一旦管理员输入罚款并且他选择它作为重复和重复周期(每月,每年)之后如何自动生成新的重复罚款条目(每月或每年)。跨度>
  • @KuldeepThakur,它是哪个数据库?您可以有一个日期表并使用 CROSS APPLY 并使用重复在精细表中插入多行
  • 我正在使用 postgres
猜你喜欢
  • 2015-01-02
  • 2021-03-29
  • 2013-10-29
  • 1970-01-01
  • 2021-10-28
  • 2014-04-14
  • 2012-06-09
  • 2013-01-06
  • 2015-10-20
相关资源
最近更新 更多