是否有人知道或有任何链接到网站,描述如何为双重记账系统设计数据库架构的细节?
我确实找到了很多文章,但是非常非常的解释。 如果有人能帮助我,我将不胜感激。
答案 0 :(得分:45)
创建以下表格
为了简单起见,我们将省略account_type表,contact_type表等
确定表格之间的关系并进行设置
我们有以下架构(一对多关系):
CONTACT ———< TRANSACTION ———< LINE_ITEM >——— ACCOUNT
为每个表添加适当的字段
根据需要创建尽可能多的新交易
例如,要在数据库中添加新事务,请在事务表中添加新记录并填写字段,选择联系人姓名,输入日期等。然后将新的子记录添加到父事务记录中每个帐户受影响。每个交易记录必须至少有两个子记录(在复式记账系统中)。如果我以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中记录了一个有趣的层次结构设计。
每笔交易均包含均衡的借记和贷记金额。对于每笔交易,借方金额和贷方金额总额必须完全相等。每笔借记和贷记金额都与一个帐户绑定。
[更多关注......]