繁体   English   中英

数据库设计:会计交易表

[英]Database design: accounting transaction table

将事务条目存储到双条目记帐数据库中。

我提出了两个解决方案选项1和选项2,我被告知大多数银行包选择其选项2进行数据库设计。 但是我更喜欢选项1而不是选项2,因为它只是有意义而且效率更高!

即对于资金的2次移动,选项1需要2个记录而选项2需要4个记录。

我想知道为什么银行会选择2而不是选项1? 这是什么原因?

Option 1)
TRANSACTION
Credit_AccountId
Debit_AccountId
Amount
...

Option 2)
TRANSACTION
AccountId
Amount
...

从插入角度来看,选项1可能会更有效。 但由于很多会计交易将影响两个以上的账户,因此利益可能远低于2:1。

对于这些更复杂的交易,备选方案2将更加清晰。 也就是说,会计师通常会找到三行

  • 借记100澳元
  • 信用B $ 60
  • 信用C $ 40

比两行更清晰

  • 借记A $ 60信用B $ 60
  • 借记A $ 40积分C $ 40

如果您双方都有多个帐户,那么如何将借方和贷方与单个帐户进行匹配也会有点不清楚。 那是,

  • 借记100澳元
  • 借记B $ 30
  • 信用卡C $ 60
  • 信用D $ 70

可以表示为

  • 借记A $ 60积分60加元
  • 借记A $ 40积分D $ 40
  • 借记B $ 30积分D $ 30

但是还有其他可能的方法来构建数据模型2的数据。

此外,如果您尝试通过聚合交易来确定特定帐户的当前余额,则选项2将更有效。

在一般会计数据库设计中,将借方和贷方存储在单个字段(即选项2)中是合乎逻辑且有效的,因为这将简化汇总,数字操作和报告。 每个借记和贷记交易都应附加一个日期时间字段,以过滤掉特定时期。 从Smashwords获取这本名为“会计数据库设计”的书。 它为会计系统设计提供了一些很好的样本,并为财务报告提供了一些有趣的sql查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM