这里不会有任何 1:1 的关系。例如,您始终可以在一个批次中支付多张发票。批处理表的想法是,从会计的角度而不是从编程的角度来看,它是一个单一的“工作单元”。
对批处理没有特别的需求,只是它有助于根据谁做了什么和什么时间来组织信息——尤其是当它提供了从业务角度来看一组事务在逻辑上彼此相关的指示时。
帐户是一个查找表。Transactions 是交易细节,而 Batch 是交易标头。我同意@OP 的问题中的 Ken Downs 的观点,即单个金额字段就足够了。单独的借方和贷方列没有意义。这个想法来自纸质会计世界,并且在所有算术都是手工完成的那一天很有用。在计算机化的场景中,这种想法是不合时宜的,实际上造成的麻烦多于其价值。我不同意肯·唐斯(Ken Downs)的观点,因为他的借方和贷方符号相反。这在特定帐户的上下文中是正确的,但根据会计惯例,不同类型的帐户将有正数或负数的借方。资产和收入朝一个方向发展,而负债和费用朝另一个方向发展。交易表中的数字是正数还是负数将取决于交易适用于哪种类型的帐户。
当您适当地应用借方和贷方时,您的编辑之一需要是每批都应平衡为零。测试此编辑的逻辑需要知道批次中的每个帐户是资产、负债、收入还是费用——因此需要成为帐户表的属性。
至于支票、凭证、发票和所有其他东西——你可能想要,但不一定需要所有这些。拥有它们的原因不是为了严格的帐户余额跟踪,而是为了您可以保留在那里的所有其他指示性信息。您可以将所有这些指示性信息保存在批处理表上的“哑”文本字段中(即“备忘录”)。这就是他们在旧高椅、遮阳板和羽毛笔时代的做法。但是,拥有供应商发票表很方便,因为它可以让您做一些方便的事情,例如查询来自特定供应商的所有发票的列表。支票、发票(应收账款)、报表等其他具体业务实体也是如此。