58

有没有人知道或有任何链接到描述如何为复式记帐系统设计数据库模式的详细信息的网站??。

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

4

2 回答 2

63

创建以下表格

  • 帐户
  • 交易
  • 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
    • 帐户名称
    • 帐户类型

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

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

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

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

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

于 2013-03-23T03:55:21.660 回答
9

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

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

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

[我正在研究一般的层次结构的良好 SQL 设计......我稍后会更新它的细节。]

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

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

[更多关注...]

于 2011-04-02T20:55:46.600 回答