问题:在下面的情况下,我是否应该将所有金额存储为正小数金额,然后将该金额标记为“借方”或“贷方”,而不是将借方存储为负金额,将贷方存储为正金额?
在我的数据库设计中,我将“借方”存储为负金额,将贷方存储为正金额。
现在,在报告中有时结果会出错,因为如果你这样做
总金额 = 金额-费用,如果提款金额为 100 美元,则费用为 1 美元。
你最终会得到 -$100-$1 = -$101,这是结果不正确!
正如您所发现的,对所有内容使用一列,然后对借方或贷方使用负数是行不通的。会计值不是标量——它们是包含枚举(借方或贷方)和定点十进制数(可以是正数或负数)的向量。
任何会计交易都必须包含相同数量的借方和贷方。如果没有,则这不是有效的交易。
同样,账户余额也是同样的向量。在任何时刻,会计系统中所有账户的总借方和总贷方必须彼此相等,否则就会出现问题。
另一种看待这个问题的方法是将会计价值视为一个复数,其中借方是实数,贷方是虚数。这意味着 4 个借方 + 3 个贷方 = 4 + 3i。这很明显表明您can't通过将虚数项折叠为负实数项来进一步简化 - 它不是相同的数轴轴。这与声称 4 + 3i = 4 - 3 相同。不是有效的数学。
如果数据库可以本地存储复数,那么复数实际上是存储会计数据的好方法,可能会消除程序员通常对会计产生的许多困惑,并且会产生各种有趣的属性。例如,平衡交易的相位角始终为 45 度,平衡账户集也是如此。但大多数数据库需要您在存储之前将复数分解为实数项和虚数项,并将这些项存储在不同的列中 - 在会计领域,这两列的名称分别是“借方”和“贷方”。
P.S.:我知道有些人确实用负数表示贷方,用正数表示借方,但这需要非常小心才能正确执行,而且很脆弱。每次接触任何账户时,你都必须跟踪它的正常余额——例如,由于资产账户有借方正常余额,那么你可以使用正数来增加它。但负债账户的正常余额为负,因此该账户价值的增加是负数。你不能在任何时候将这两个值相加——它们不是同一件事。借方是您所拥有的东西,而贷方是您所欠的东西。将两者放在数据库表的同一列中味道很糟糕。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)