数据库中的每个后续发票记录是否应引用原始订单
Should original order be referenced on every subsequent invoice record in database
考虑以下数据库设计(删除了不相关的列和表):
每次订阅的定期付款到期时,我打算添加发票记录和后续付款记录。
但是,给定的订单可以同时包含一次性 购买和订阅 购买,参考原始order_id
何时生成新的月度发票?
我的犹豫是,如果不清楚的话,原始 order
记录 可能 包括非订阅的项目,因此与经常性的项目无关发票。
我的想法:
- 任何订单商品都可以是 0 成本。
- 一个订阅项目是0成本订单。项目应在 table 中生成一个条目,该条目将客户和购买的服务(成本为 0)相关联,从中可以按合同规定的任何周期和金额生成发票。
- 发票和付款之间的唯一区别在于方向。有一个 table 有足够的信息来识别(应付订单项目和订单 ID 的总和)或订阅项目(客户 ID 和服务 ID)的发票。
- 除非您通过直接借记管理收款,否则客户不会识别付款,因此您必须对收到的资金分配(退款、拒绝等)进行编码。
- 您真的需要发票吗(如果每个订单都可以计费的话,这不是和订单一样吗?)。
我不确定这是一个见仁见智的问题。
原始订单包含订阅订单。它包含其他信息是无关紧要的。 您关心订阅首次出现的顺序。
保留原始订单 ID 似乎是合理的。事实上,在创建发票时,最佳做法可能是获得有关发票上项目的原始订单的信息。否则,检查项目的沿袭会变得更加麻烦——这对于审计目的和其他原因可能非常重要。
- 冗余信息(通常)是数据库设计中的禁忌。
- 如果您需要 'extra'
JOIN
来获取所需的信息,那就这样吧。这很少是用额外的列使架构混乱的原因。
考虑以下数据库设计(删除了不相关的列和表):
每次订阅的定期付款到期时,我打算添加发票记录和后续付款记录。
但是,给定的订单可以同时包含一次性 购买和订阅 购买,参考原始order_id
何时生成新的月度发票?
我的犹豫是,如果不清楚的话,原始 order
记录 可能 包括非订阅的项目,因此与经常性的项目无关发票。
我的想法:
- 任何订单商品都可以是 0 成本。
- 一个订阅项目是0成本订单。项目应在 table 中生成一个条目,该条目将客户和购买的服务(成本为 0)相关联,从中可以按合同规定的任何周期和金额生成发票。
- 发票和付款之间的唯一区别在于方向。有一个 table 有足够的信息来识别(应付订单项目和订单 ID 的总和)或订阅项目(客户 ID 和服务 ID)的发票。
- 除非您通过直接借记管理收款,否则客户不会识别付款,因此您必须对收到的资金分配(退款、拒绝等)进行编码。
- 您真的需要发票吗(如果每个订单都可以计费的话,这不是和订单一样吗?)。
我不确定这是一个见仁见智的问题。
原始订单包含订阅订单。它包含其他信息是无关紧要的。 您关心订阅首次出现的顺序。
保留原始订单 ID 似乎是合理的。事实上,在创建发票时,最佳做法可能是获得有关发票上项目的原始订单的信息。否则,检查项目的沿袭会变得更加麻烦——这对于审计目的和其他原因可能非常重要。
- 冗余信息(通常)是数据库设计中的禁忌。
- 如果您需要 'extra'
JOIN
来获取所需的信息,那就这样吧。这很少是用额外的列使架构混乱的原因。