双入口会计系统的数据库架构设计?

sod*_*den 50 database accounting database-design

有没有人知道或有任何链接到网站,描述如何为双重记账系统设计数据库模式的细节?

我确实找到了一堆文章,但非常非常清楚.如果有人可以帮助我,我将不胜感激.

小智 51

创建以下表格

  • 帐户
  • 交易
  • LINE_ITEM
  • 联系(可以是客户,供应商或员工).

为了简单起见,我们将省略account_type表,contact_type表等.

确定表之间的关系并进行设置

  • 联系人可以有很多交易,但每个交易只能有一个联系人(一对多关系)
  • 一个帐户可以有很多交易,一个交易可以影响很多帐户; line_item是事务表和帐户表之间的连接表(多对多关系)
  • 一个事务可以有很多行项,但每个行项必须与一个事务相关.

我们有以下架构(一对多关系):

CONTACT ———< TRANSACTION ———< LINE_ITEM >——— ACCOUNT
Run Code Online (Sandbox Code Playgroud)

为每个表添加适当的字段

  • 联系
    • 使用ContactID
    • 名称
    • ADDR1
    • ADDR2
    • 压缩
    • 电话
    • 传真
    • 电子邮件
  • 交易
    • TRANSACTIONID
    • 日期
    • memo1
    • 使用ContactID
    • REF
  • LINE_ITEM
    • line_itemID
    • TRANSACTIONID
    • 帐户ID
    • memo2
  • 帐户
    • 帐户ID
    • 用户名
    • 帐户类型

根据需要创建尽可能多的新事务

例如,要在数据库中添加新事务,请在事务表中添加新记录并填写字段,选择联系人姓名,输入日期等.然后将新子记录添加到受影响的每个帐户的父事务记录中.每个交易记录必须至少有两个子记录(在复式记账系统中).如果我以20美元的现金购买一些奶酪,将子记录添加到子记录中的交易记录中,选择现金帐户并在金额字段中记录-20.00(负数).添加新的子记录,选择Groceries帐户并在金额字段中记录20.00(正).子记录的总和应为零(即20.00 - 20.00 = 0.00).

根据上表中存储的数据在数据库中创建报告

该查询为我提供了数据库中的所有记录,以便事务行项子记录按帐户分组,按日期排序,然后按事务ID排序.创建一个计算字段,该字段提供事务line_items记录中的amount字段的运行总计以及您认为必要的任何其他计算字段.如果您希望以借记/贷记格式显示金额,请在数据库查询中创建两个计算字段,其中一个字段称为借记,另一个称为贷记.在借方计算字段中,输入公式"如果line_item表中金额字段中的金额为正数,则显示金额,否则为空".在信用计算字段中,输入公式"如果行项目表中金额字段中的金额为负数,则显示金额,否则为空".

基于这种相当简单的数据库设计,您可以不断添加更多字段,表格和报告,以便为数据库添加更多复杂性,以跟踪您的或您的业务财务状况.


Les*_*lie 44

这是您可能会发现有用的一个链接:

http://homepages.tcp.co.uk/~m-wigley/gc_wp_ded.html

更新:替代链接(原始的链接似乎被打破):

  • 链接死了; 但这里是回程机器的快照:[关系数据库中的双重记账](http://web.archive.org/web/20131013080026/http://homepages.tcp.co.uk/~m-wigley/gc_wp_ded.html ) (4认同)

Ken*_*itt 10

我想我也不妨捅它.评论很感激 - 我会根据任何人的反馈改进设计.我将使用SQL Server(2005)T-SQL语法现在,但如果有人有兴趣在其他语言,让我知道,我会添加更多的例子.

复式记账系统中,基本要素是账户和交易.基本的"理论"是会计等式:权益=资产 - 负债.

结合会计等式中的项目和两种名义账户,收入和支出,账户的基本组织只是一个嵌套账户的森林,(最小)五棵树的根源是:资产,负债,权益,收入和支出.

[我正在为层次结构研究好的SQL设计......稍后我会用具体的内容更新它.]

SQL团队文章SQL中的更多树和层次结构中记录了一个有趣的层次结构设计.

每笔交易都包含均衡的借方和贷方金额.对于每笔交易,借方金额和贷方金额总额必须完全相等.每笔借记和贷记金额都与一个帐户相关联.

[更多关注...]