SQL 服务器数据库中客户的贷方借方和余额

Credit debit and balance of a customer in a SQL Server database

我正在 Java 开发销售点系统,而我使用的后端是 SQL 服务器数据库。因为我是数据库的新手,所以混淆了我正在写数据库。

永远的销售我正在开发票,table设计就是这样

  1. Invoice table 有列 InvoiceIDInvoiceDateCutomerIDMethodOfPaymentComments

  2. Line Item table 有列 InvoiceIDLineitemNoProductIDQTYPrice

  3. Transaction table 有列 TransactionIDInvoiceIDDebitCreditBalance, InvoiceStatus

步行的顾客都是现金顾客,所以我对他们没有意见。 InvoiceStatus 标志将靠近他们,因为他们没有付款。

对于其他客户,他们也会 material 赊账。

我需要以非常有效的方式保存信用借记和余额历史记录。

我的问题是,对于每个客户,我是否需要单独的 table 来记录信用借记和余额历史记录或全部记录在一个 table,因为将来 table 大小如果我只用一个 table 会长得很大。

或者,如果有人有我现在正在使用的更好的数据库设计,那将非常有帮助。

建议为待处理的借记做一个单独的table,待处理的借记将是动态的,这意味着当发票完全收集时删除其记录。 您的发票 table 将照原样。

一些示例数据可能有助于我们更好地理解问题。

如果我试图从字里行间看出,你是在问,当客户付款时,你更新的每张发票都有一个记录是否更好,或者你是否为与一张发票,您可以根据需要对其进行汇总或操作。如果这是正确的,那么答案是 "it depends" 关于您的交易需要多细化。

根据我的经验,会计包应该尽可能地像 auditable。

我建议您的交易 table 每个 "transaction" 都有一个单独的记录,其中发票是交易,每笔付款是交易等。您可以为 "transaction_type".

你还说有一个 "table for each customer" 答案是否定的。

  1. 将有一个发票和行项目table来记录销售额。
  2. 会有收据-付款table来记录付款
  3. 将有客户 table 存储他们的余额(贷方或借方)

因此对于每笔交易(发票或付款),您将更新客户中的余额 table。