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

时间:2010-03-22 17:24:47

标签: database database-design accounting

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

我确实找到了很多文章,但是非常非常的解释。 如果有人能帮助我,我将不胜感激。

3 个答案:

答案 0 :(得分:45)

创建以下表格

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

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

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

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

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

CONTACT ———< TRANSACTION ———< LINE_ITEM >——— ACCOUNT

为每个表添加适当的字段

  • 联系
    • 的ContactID
    • 名称
    • ADDR1
    • ADDR2
    • 城市
    • 状态
    • 拉链
    • 电话
    • 传真
    • 电子邮件
  • 交易
    • TRANSACTIONID
    • 日期
    • memo1
    • 的ContactID
    • REF
  • LINE_ITEM
    • line_itemID
    • TRANSACTIONID
    • 帐户ID
    • 金额
    • memo2
  • 帐户
    • 帐户ID
    • ACCOUNT_NAME
    • ACCOUNT_TYPE

根据需要创建尽可能多的新交易

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

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

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

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

答案 1 :(得分:40)

答案 2 :(得分:9)

我想我也不妨捅一下。评论很感激 - 我会根据任何人的反馈改进设计。我将暂时使用SQL Server(2005)T-SQL语法 ,但如果有人对其他语言感兴趣,请告诉我,我将添加其他示例。

double-entry bookkeeping system中,基本元素是帐户和交易。基本的“理论”是accounting equation:权益=资产 - 负债。

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

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

SQL团队文章More Trees & Hierarchies in SQL中记录了一个有趣的层次结构设计。

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

[更多关注......]