保存“借方”和“贷方”信息的常用方法是什么?

Use*_*841 10 mysql database-design

我正在研究一个会计系统,对于每笔交易,如果这是借方或贷方,我需要保存。我可以想到两种方法(MySQL数据库):

方法一

  • 金额(十进制)
  • 类型(枚举,借方/贷方)

方法二

  • 借记(十进制)
  • 信用

在第一个设置中,我保存了交易类型,但在第二种方式中,我宁愿将金额保存在借方或贷方列中。这种方法的优点是与方法 1 相比,我可以更轻松地将借方和贷方总额相加。但我想知道是否有一种通用的方法可以做到这一点?

Mat*_*ick 7

另一种方法(不知道这是否常见!):

create table `transactions` (
  ... some columns ...
  amount decimal(10,2),
  ttype int,
  foreign key (ttype) references transactiontypes (id)
  ...
);

create table transactiontypes (
  id int primary key,
  description varchar(30),
  multiplier int
);
Run Code Online (Sandbox Code Playgroud)

然后在transactiontypes你有:

select * from transactiontypes;

+----+---------------+------------+
| id | description   | multiplier |
+----+---------------+------------+
|  1 | deposit       |          1 |
|  2 | withdrawal    |         -1 |
+----+---------------+------------+
Run Code Online (Sandbox Code Playgroud)

可能还有更多行。

然后所有金额都transactions将是正数,并加入transactiontypes+ 乘法multiplier得到“真实”(正/负)金额。


小智 7

你的方法1是正确的。这是我在会计系统中的实施方式。该模型来自“The Data Model Resource Book”。您存储数据的方式与会计术语对复式记账法建模的方式大不相同。信用可能意味着正面或负面,具体取决于您是在资产账户还是负债账户上工作。无论您发布到什么类型的帐户,此架构都允许您保留数据。

+----+-----------------------+------------+    
| PK | TransactionID         | int        |
+----+-----------------------+------------+
|    | Description           | varchar    |
|    | Date                  | datetime   |
+----+---------------+--------------------+

+----+-----------------------+------------+
| PK | TransactionID         | int        |
| PK | TransactionSequenceID | smallint   |
+----+-----------------------+------------+
|    | Amount                | decimal    |
|    | CreditDebitFlag       | char(1)    |
+----+---------------+--------------------+
Run Code Online (Sandbox Code Playgroud)


Joe*_*own 5

最常见的方法是对借方使用正金额,对贷方使用负金额(或者反过来,取决于您的金额通常被视为资产还是负债)。

在汇总总数时,这比您的任何一种方法都容易,因为您只需对一列求和。