9

我将在 MySQL 中为复式记账系统创建一个数据库。

我最近读了这篇文章:http ://homepages.tcp.co.uk/~m-wigley/gc_wp_ded.html

我在这篇文章中发现拥有三个表 ACCOUNT、JOURNAL 和 POSTING 会很方便:

ACCOUNT(accountID, accountName)
JOURNAL(journalID, journalType)
POSTING(postingID, journalID, accountID, amount)

文章描述,如果账户被借记,“金额”字段的值为正值,否则为负值。

现在对于上面的 POSTING 表,我还有其他两个选项..

(1) POSTING(postingID, journalID, accountID, isDr, amount)

在此选项中,“isDr”字段是布尔值。如果帐户被借记,isDr 字段将包含值“true”,否则为“false”。并且“金额”字段将始终具有正值。

(2) POSTING(postingID, journalID, accountID, debitAmount, creditAmount)

在这里,如果帐户被借记,我会将金额存储在“debitAmount”字段中,否则我会将其存储在“creditAmount”字段中。

那么,以上三个中的哪个选项更好用?

4

3 回答 3

4

这是主观的,但我认为选项#0(单个amount字段为正或负的选项)是最好的。每当您想要进行包括贷方和借方的数学运算时,选项#1 都会给您带来很多痛苦,因为您必须查阅该isDr字段以确定是否乘以-1. 选项 #2 没有很好地规范化,因为表达式debitAmount IS NULLcreditAmount IS NOT NULL将是等效的(如果它们不同,那么您的数据库处于不一致状态)。

于 2011-11-19T06:18:35.603 回答
2

选项#0 有一个我最近遇到的缺点:

在某些情况下,需要写入/记录的金额,并且在分类帐的贷方也被视为减号(-),而不是在借方显示其金额为正(+)。(反之亦然)

选项#0 失败(如果没有标记为借方或贷方,或者没有以其他方式解决)

你需要问这个你的会计师。(如果需要在贷方记录和查看任何减号(-)金额(反之亦然)。

于 2012-08-31T15:08:22.913 回答
1

我推荐选项#1。选项 #2 将导致大量未使用的字段(debitAmount 和 creditAmount 字段总量的 50%)。此外,选项 #1 允许您轻松得出当前余额。

最后(或者可能是首先),选项#1 遵循适当的规范化。

于 2011-11-19T06:15:15.777 回答