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

Dav*_*e L 7 mysql sql sql-server database-design

这个问题是StackOverflow上已经回答的问题的扩展/扩展:发票的数据库设计

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

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

  1. 订单表:用于草稿/挂单
  2. 订单明细表:用于挂单的订单项
  3. 发票表:用于表示最终(不可变)订单和客户欠款.
  4. 付款表:当客户付款时,总金额就在这里.
  5. InvoicesPayments表:显示每笔付款应适用于特定发票的金额.此表是必需的,因为有时付款可以应用于多个发票.

(为了简化起见,因为这个问题的重点是表格设计,我省略了触发器等细节)

简化的数据库模式

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

  1. 在下订单时,客户将能够选择他们想要支付多少作为预付款,然后支付X个月分期付款,直到支付余额为止.
  2. 现在我们可以忽略利率等问题.
  3. 有时,客户将支付超过一个月的付款.例如,假设他们忘记支付一个月和下个月的费用,他们只需一次付款即可支付当月和过去一个月的费用.

我们非常感谢您提供的任何帮助/指导.谢谢!

- 下午更新 -

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

架构2.0

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

然后,当进行支付时,将记录添加到支付表,并且将一个或多个记录添加到关系表"ScheduledPaymentsPayments",其将支付连接到发票和每月支付.

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

Tab*_*man 0

您可以向 Orders 表中添加 DownPaymentAmount、MonthlyPaymentAmount、NumberOfMonthlyPayments 列,从而满足第一个要求。

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