【问题标题】:Database schema design for a double entry accounting system? [closed]复式记账系统的数据库模式设计? [关闭]
【发布时间】:2010-03-22 17:24:47
【问题描述】:

是否有人知道或有任何网站链接,这些网站描述了如何为复式记账系统设计数据库架构的详细信息??

我确实找到了一堆文章,但没有足够的解释性。 如果有人可以帮助我,将不胜感激。

【问题讨论】:

  • @soden - 您希望在哪篇文章的哪个具体部分获得帮助?
  • 我确实对复式簿记有基本的了解,但是将这个概念转换为数据库模式,,,,我猜我的创意汁液不会流入这个。
  • 网络上有大量信息,令人困惑、不正确或不完整。试试这个 StackOverflow Q & A Relational Data Model for Double-Entry Accounting,它有完整的解释和图形,适合开发者。

标签: database database-design accounting


【解决方案1】:

创建以下表格

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

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

识别表之间的关系并设置它们

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

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

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

为每个表添加适当的字段

  • 联系方式
    • 联系人ID
    • 姓名
    • 地址1
    • 地址2
    • 城市
    • 状态
    • 压缩包
    • 电话
    • 传真
    • 电子邮件
  • 交易
    • 交易ID
    • 日期
    • 备忘录1
    • 联系人ID
    • 参考
  • Line_item
    • line_itemID
    • 交易ID
    • 帐户ID
    • 金额
    • 备忘录2
  • 帐户
    • 帐户ID
    • 账户名
    • account_type

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

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

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

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

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

【讨论】:

  • 嗨,bkire,感谢您的回答 - 喜欢您的回答,自 2013 年以来是否有任何更新?您能否说明 account_type 是什么?请用一个例子来解释。谢谢
【解决方案2】:

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

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

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

[我正在研究适合层次结构的良好 SQL 设计……稍后我会更新细节。]

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

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

[更多关注...]

【讨论】:

  • 请注意,我的回答是“社区 wiki”——请随意编辑。
猜你喜欢
  • 2010-09-13
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
相关资源
最近更新 更多