每月分期付款的发票数据库设计

时间:2016-02-01 16:15:53

标签: mysql sql sql-server database-design

此问题是StackOverflow上已回答问题的扩展/扩展:Database Design for Invoices

但是,我想扩展这个想法,并找出允许客户使用某种分期付款(月付款)系统支付发票的正确方法。

在回答的问题中,投票的答案使用了具有以下表格的数据库模式:

  1. 订单表:用于草稿/挂单
  2. 订单详细信息表:用于待处理订单的订单项
  3. 发票表:用于表示最终(不可变)订单以及客户欠款。
  4. 付款表:当客户付款时,总金额就在这里。
  5. InvoicesPayments表:显示每笔付款应适用于特定发票的金额。需要此表,因为有时付款可以应用于多个发票。
  6. (为了简化起见,因为这个问题的重点是表格设计我省略了触发器等细节。)

    Simplified Database Schema

    如何将发票分成每月分期付款?要求如下:

    1. 在下订单时,客户将能够选择他们想要支付多少作为预付款,然后支付X个月分期付款,直到支付余额为止。
    2. 目前我们可以忽略利率等因素。
    3. 有时,客户会支付超过一个月付款的款项。例如,假设他们忘记支付一个月和下个月的费用,他们只用一次付款就可以支付当月和过去一个月的费用。
    4. 我们非常感谢您提供的任何帮助/指导。谢谢!

      - 下午更新 -

      在考虑到目前为止的回复并自行修改之后,您如何看待如下的架构:

      schema 2.0

      在上面提出的架构中,所有发票都有一个ScheduledPayments记录。如果发票全部到期(全额付款),那么它将有一条记录。如果发票是分期付款的,则每笔付款都会有X个记录(加上任何预付款)。

      然后,当付款时,将一条记录添加到付款表中,并将一条或多条记录添加到关系表“ScheduledPaymentsPayments”中,该表将付款连接到发票和每月付款

      您如何看待这个解决方案?您是否预见到它有任何问题,或者您能否提出可能更好的替代方案?

1 个答案:

答案 0 :(得分:0)

您可以在Orders表中为DownPaymentAmount,MonthlyPaymentAmount,NumberOfMonthlyPayments添加列,并满足第一个要求。

第三个要求看起来像数据库已经可以使用InvoicesPayments表来处理它,逻辑正在应用层中处理。