首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复式会计的关系数据模型

复式会计的关系数据模型
EN

Stack Overflow用户
提问于 2019-12-21 01:54:41
回答 1查看 28.9K关注 0票数 46

假设有一家银行、一家大商店等,希望对内部帐户和跟踪客户帐户进行正确的会计核算。而不是满足当前简单而狭窄的需求,这将是一种“家酿”:这些结果是当前简单需求的临时拐杖,当新的需求到来时很难或不可能扩展。

据我所知,复式会计是一种行之有效的方法,满足所有的会计和审计要求,包括目前尚未考虑的要求。如果这一规定得到执行,它将:

  • 消除随着时间的推移将发生的增量增强,以及开销,
  • 没有必要在今后加以加强。

我研究了另一个问题的答案:派生账户余额还是简单银行账户的存款余额?,它为内部帐户提供了很好的信息。需要一个数据模型,以便人们能够理解实体;它们之间的交互;它们之间的关系,以及@PerformanceDBA给出了这一点。这个模型是从这个答案中得出的:

对于简单的内部帐户来说,这是令人满意的,但是我需要看到一个数据模型,它提供了完整的复式会计方法。

需要添加的文章有:Journal;内部与外部Transactions;等等。

理想情况下,我希望看到这些双条目行在数据库中的样子,整个过程在SQL中的样子,在每种情况下哪些实体会受到影响,等等:

  1. 客户将现金存入他的账户
  2. 银行每月向所有客户账户收取一次费用(抽样批次作业),
  3. 客户在柜台上做一些操作,银行收取费用(取款+提款),
  4. 玛丽把一些钱从她的帐户里寄到约翰的帐户,约翰的帐户在同一家银行。

让我们把它称为System而不是BankBank可能太复杂,无法建模,让问题是关于虚拟系统,它与帐户和资产一起运作。客户使用系统执行一套操作(存款、提款、手续费、批次费用),以及相互之间的操作(转移)。

EN

回答 1

Stack Overflow用户

发布于 2022-10-24 00:46:23

下面是我的模式(使用sqlite作为示例),它有两个表:

代码语言:javascript
复制
-- This is a list of your chart of accounts
CREATE TABLE "accounts" (
    "name"      TEXT,
    "number"    INTEGER,
    "normal"    INTEGER
)

-- This is a table of each transaction
CREATE TABLE "transactions"
  (
     "id"        INTEGER, 
     "date"      TEXT,
     "amount"    REAL,
     "account"   INTEGER,
     "direction" INTEGER
  ) 

根据这个约定,accounts.normaltransaction.direction字段被设置为1作为借方,-1用于贷方。最终用户从未看到这一点,但它使算术变得容易。

当您创建日记条目时,它将在transactions表中至少有2行--借方和贷方。他们应该共享同一个id

要查看余额,可以运行以下查询:

代码语言:javascript
复制
select
  (account) as a,
  name,
  sum(amount * direction * normal) as balance
from
  transactions
  left join accounts on a = accounts.number
group by
  name
order by
  a,
  name;

要查看分类账,可以运行以下命令:

代码语言:javascript
复制
select
  id,
  date,
  name,
  case when direction == 1 then amount end as DR,
  case when direction == -1 then amount end as CR
from
  transactions
  left join accounts on account = accounts.number
order by
  id,
  date,
  CR,
  DR;

我可以运行更多的不同查询的详细员额,以及示例数据。但是,使用上述两个表,您可以创建一个工作的双条目系统。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59432964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档