如何设计带有作业成本的复式会计关系模型

And*_*ndy 5 accounting relational-database

我想向读者推荐这里这里的答案,因为它们具有深度和思想。我在为我正在从事的项目寻找相关内容时偶然发现了它们,我从上到下阅读它们。

我正在尝试使用这些原则(即复式会计)构建一个利基市场应用程序,并加入工作成本计算。上述答案对重塑我对会计和数据库的概念非常有帮助应该看起来和工作像。但是,我很难将等式的工作成本计算部分整合到提供的优秀图形示例中。

有几个使用 House、账户持有人、费用等的交易示例。我还有一些其他特定的用例,我很想得到一些输入:

  1. 我没有客户。我购买了房产(通常是现金流出,负债(贷款)被创造,资产(资产)被创造),花了一大笔钱来修理它(在商店兑现,信用卡收费商店,或写给供应商的支票,借记财产资产并借记或贷记资金来源),然后将其出售(现金进来,贷款已还清,希望剩下的现金比我花的钱多该项目)。这可能会创建比我上面列出的更多的分类帐条目,但我不是会计师。我想我明白我所有的成本都以我的财产为基础,如果我的净收益大于我的基础,那么我就赚钱了,如果不是,那就没有。

  2. 因此,我需要记录的费用是 a) 来自特定帐户(即公司支票帐户或所有者的 Best Buy 卡等),b) 通常与特定工作相关的费用(但并非总是如此 - 我确实有偶尔的开销费用,如办公用品),以及 c) 总是与成本代码相关联(即“100.12 - 窗户材料”、“100.13 - 窗户人工”等)。

  3. 我经常收到来自供应商的账单,这些账单将在未来某个时候到期。我想跟踪已收到但尚未支付给定工作的账单(承诺成本)。我认为这笔交易看起来像这样,但我不确定:

    收到供应商账单

  4. 正如你可能从我上面关于“所有者的百思买卡”的俏皮话中推测的那样,我有时(比我应该的更频繁)使用我的个人资金来支付公司和工作相关的费用。我认为(再次声明我是外行)所有这些支出都记入“所有者权益”,并根据需要借记/贷记其他账户。

我一直在一个又大又丑的电子表格中跟踪所有这些,这就是我尝试构建一个应用程序来替换它的原因 - 电子表格方法效果不佳,而且肯定无法扩展。

Per*_*DBA 12

初步的

对于阅读此答案的人,请注意上下文如下,增量为:

如果您没有利用这一点,这个答案可能没有意义。

我会按照标准化的顺序来回答,这当然与您提出问题的方式不同。

原理与修正

在你陈述的问题中有几个你不知道的错误,所以第一步是意识到;理解。一旦问题被正确准确地声明,就很容易解决。这些是开发人员通常会犯的错误,因此需要这样理解它们……早在应用程序被考虑之前。

1 第一原则

我一直在一个大而丑的电子表格中跟踪所有这些 [电子表格方法不能很好地工作,它肯定不会扩展],这就是为什么我试图构建一个应用程序来替换它

  • 如果手动(或以前的计算机化)系统损坏,并且您实施了基于它的新应用程序或替换应用程序,则保证您将损坏的内容带入应用程序。

    • 更糟糕的是,如果不理解这一点,可以编写第三个应用程序,承诺修复第二个应用程序中的问题,但它也保证迁移第一个和第二个应用程序中未修复的问题。
  • 因此,设计有任何成功机会的应用程序和数据库之前,您必须识别并纠正要替换的系统中的每个问题,包括测试。

  • 扩展是我们最不担心的。任何特定事物如何与任何其他事物协同工作都是问题所在。

  • 事实上,你有一个又大又丑的电子表格,这意味着你有一个整体的观点:人类可以做到这一点,我们可以凭感觉飞行,但计算机不能,它们需要明确的指令。

2 第二原则

我一直在一个又大又丑的电子表格中跟踪所有这些 [...] - 电子表格方法不太好用

  • 为什么它不起作用[就目前而言]?
    原因 1 of 2.
    你犯了一个开发人员经常犯的错误:你检查和研究物理领域中事物的点点滴滴,并试图弄清楚事物是如何工作的。保证失败,因为事情如何运作的;其目的;等等,是在智力领域,而不是物理领域

    • 此处不详述,但必须注意更大的问题。这个错误是一个较大错误的具体实例,非常常见,即:
      开发人员关注GUI的功能,
      而不是需求,即
      正确定义数据及其关系GUI的功能在此基础上存在依赖
  • 一个没有学习过内燃机的人,即使仔细地布置了零件,也无法通过观察拆开的发动机零件来弄清楚如何制造发动机。更不用说带有喷油器或涡轮增压器的了。内燃的原理是逻辑的,零件是物理的。

  • 在这里,您查看了其他人用来进行会计工作的电子表格,也许还复制了它,但不了解他们正在使用电子表格做什么。

  • 举个例子。
    您已经检查了第一个第二个链接的答案,并且您认为您可以弄清楚如何将其应用于解决脏大电子表格问题的新应用程序。

    • 许多开发人员认为,如果他们弄清楚细节,复制粘贴和替换,应用程序就会以某种方式运行。请注意详细说明感知交易的经过深思熟虑但仍不完整的图形。

    • 他们缺少逻辑领域,并且在没有必要了解他们在搞乱什么的情况下搞乱了物理领域。

    • 总之,忘记你和我的交易的漂亮图形,并寻求理解逻辑(这个原则)和会计准则 [3]。

  • “测试驱动开发”又名“最少代码”又名“试错”是一种完全破产的方法,它没有科学依据(营销,是的,但科学,否),并且它肯定会失败。危险,因为成本是持续的,永远不会是有限的。

    • 并且继续失败,如果你理解上述内容。

    • 更准确地说,它是反科学的,因为它与构建应用程序和数据库的科学相矛盾。

  • 因此,第一步是将庞大的电子表格分解为有目的的逻辑单元。当然,将每个引用电子表格列链接到引用电子表格中的正确列......这样任何金额值都不会重复。

3 第三条原则

我一直在一个又大又丑的电子表格中跟踪所有这些 [...] - 电子表格方法不太好用

  • 为什么它不起作用,无论是按现状,还是当电子表格已被划分为逻辑单元时?
    原因 2 of 2.
    缺乏标准。
    由于主题是会计,我们必须使用会计准则

  • 那个又大又丑的电子表格是您没有使用会计师来设置它的现成证据。当然,您不能在不了解会计或不使用合格会计师的情况下设置一组电子表格来进行会计。

  • 因此,第二步是要么获得会计师,要么获得对会计的良好理解。注意再次的准备证据的经过深思熟虑的交易:尽管你是一个很有能力的人,你不能找出会计逻辑是在第一第二联答案,更何况,你需要对会计的应用程序(或您的手动系统)。

  • 所以我能给你的最好的建议是,正如复式记账答案中所述,在网上找到一些好的教程,并研究它们。

  • 如果你这样做了,或者聘请了一名会计师来设置你的账簿,你就可以将单个庞大的电子表格拆分为标准的会计电子表格:

    • 资产负债表:
      • 资产或负债
    • 利润损失:
      • 收入或费用
    • 还有一组(稍后)
  • 说明这一原则的另一种方式是这样。当一个人不知道标准存在时,或者更糟的是,当一个人故意选择不遵守它时,就会陷入从头开始重新发明轮子的危险境地。又名“测试驱动开发”,又名“尽可能少地编写代码”,又名“反复试验”。这意味着一个人将经历一系列的发展增量,这可以通过遵守标准来消除。

问题方案

现在我们了解了原理,我们可以继续确定具体问题及其解决方案。每一个都是第三原则的具体应用。

4 财产/抵押贷款处理

我没有客户。我购买了房产(通常是现金流出,负债(贷款)被创造,资产(资产)被创造),花了一大笔钱来修理它(在商店兑现,信用卡收费存或写给供应商的支票,借记财产资产并借记或贷记资金来源),然后将其出售

  • 我并不是说你没有听从我在复式答案中给出的建议。我是说你没有意识到建议的严重性;它在会计上下文中意味着什么(在我们冒险进入数据库上下文之前)。

  • 金钱代表价值。钱; 价值,不能被创造或摧毁。它只能被移动。从一个桶到另一个桶。根据 [3],需求是正确定义和排列您的存储桶。

  • 该属性未创建,它已存在。当您购买房产时,您的现金会转移到银行,而他们的财产也会转移到您身上。仅在幼稚的意义上,财产现在是“资产”,抵押现在是“负债”。稍后将在适当的会计桶中澄清这种天真。

  • 事实上,您是一家小型的单一分行银行;合作社;一个赌场。复式记账答案的准确上下文。以下是真
    要么修正一套电子表格中,
    用于跟踪和实施复式记帐回答(如果直接进入应用程序......没有校正测试你的一个电子表格)。

    • 了解这一点非常重要,因为它与您未提及的您所在国家/地区的立法有关。该立法将被您称为税收,或您的企业纳税申报表。即使您在任何时候只持有一项财产。

    • 您的“客户”是指为每个物业服务的每家银行。将其命名为属性。

    • 每个抵押(财产)都应设置为外部帐户。这将允许您仅针对它进行与它实际相关的那些交易。贷款支付; 银行收费; 花费; 等等。在房产出售之前,不会有任何收入。

    • 在任何情况下,外部账户都将匹配银行为您提供的抵押账户的银行对账单(您没有提到,但这是会计的基本要求)。

    • 复式会计回答中所定义,ExternalAccount 上的每笔交易都将在分类帐中具有一个复式边。更多,稍后。

    • 无论是会计术语中的资产还是负债,都是分类帐条目的功能,而不是外部帐户的功能。(无论如何,我们知道它代表一种财产,从幼稚的角度来看,它是一种“资产”,直到它开始赔钱,当它从幼稚的角度来看时,它就变成了“负债”。)

  • 定义这一点的另一种方式是,银行贷款代表一个合同,根据该合同,货币(价值)“易手”(移动)。您聘请的银行是“客户”,即外部账户。您必须将与合同相关的所有收入和费用与合同一起保存。

利基市场应用程序......
我还有其他一些特定的用例......

  • 不,你没有。太阳底下没有新鲜事。如果您正确设置账簿(使用会计准则的多个链接电子表格),这是一个普通用例。希望我的解释已经证明了这一事实。

5 分类帐

上述各点与智力领域有关,对每个问题的理解及其解决方案在物理领域几乎没有工作,而这一点对智力有相同的要求,在物理层面上是繁重的。即击键次数;检查; 变化; 检查......在你正确设置之前。

  • 尽管第一个链接的答案涉及:
    衍生与存储的帐户余额(月末有效且可审计的处理),
    而第二个链接的答案涉及:
    复式会计(在现有会计中实施总体会计准则)系统,更高级别的审计能力),
    都没有详细解释分类帐。

  • 分类帐是任何会计系统的核心文章。

    • 复式记账系统不是一篇独立的文章,而是对该分类帐的改进

    • 数据模型是具体如何正确设置数据库了两个应用程序,任何客户报告S / W来使用,已无大碍。

  • 您没有真正的分类帐。单个大电子表格不是分类帐。

  • 您必须根据 [3] 设置分类帐。充其量,该电子表格中的某些项目将成为 Ledger 中的条目,但请注意,由于 [1][2][3] 中提出的更正,您对它们的看法会大不相同。

  • 请注意,当我们说“将其放入分类帐中”或“不在分类帐中”时,为了简单起见,我们的确切意思是对单个分类帐条目的引用,该条目由分类帐中的特定帐号标识.

  • 同样,当我们说“帐户”时,我们指的正是分类帐中的一个帐号。

    • 如果交易不在分类帐中(特定帐号,a LedgerNo,DEA 贷方/借方的一条腿),则它不在“帐户”中,则不会对其进行会计处理。
  • 您将在此处为资产和负债设置真正的账户。这是内部的目的,在莱杰,如保证金的声明内部数据模型

  • 我能给你的最好建议是,在网上搜索会计教程;确定哪些是好的;仔细研究它们,以便为您的目的设置适当的分类帐。

  • 简单的答案是,分类帐是帐号的层次结构

    • 其中叶级是AccountNo可以交易的实体,
      非叶级是为了聚合而存在的,不允许进行交易。

    • 每当报告分类帐时(或分类帐的任何衍生品,例如资产负债表或损益表):
      层次结构通过缩进显示,交易帐户条目显示当月的当前余额
      汇总帐户条目显示当前余额它下面的树

[您的图形重新交易]

  • 首先,每笔交易都在账本中。这意味着复式记账交易的一个分支在分类账中。看看我的复式会计回答中的第 5 节,注意每笔商业交易至少有一个蓝色条目(不要担心其他细节)。

  • 其次,另一条 DEA 腿是:

    • 要么在分类帐中,这意味着资金在一个分类帐帐户LedgerNo和另一个分类帐帐户之间移动LedgerNo。注意两边都是蓝色的业务交易。

    • 在外部帐户中,这意味着资金在一个分类帐帐户LedgerNo和一个外部帐户之间移动AccountNo。请注意一侧为蓝色而另一侧为绿色的业务交易。

  • 当你理解了这一点,并且你设置了你的 Ledger 时,就不会出现“??”了。在您的图形中,将显示蓝色/绿色。(不要重新做你的图形,我希望这个答案就足够了。)

    • 您的“资产/负债”名称不正确。更准确地说,在 Ledger 完全定义和安排之前做出这种声明还为时过早。首先设置您的分类帐,记住每个条目的资产/负债。那么您就不必在每笔交易中声明“资产/资产”,因为这是账本帐号LedgerNo的函数,而不是交易的函数。

a) 来自特定帐户(即公司支票帐户或所有者的 Best Buy 卡等)的费用,

Ledger-ExternalAccount
分类帐中的一个 DEA 分支,外部帐户中的另一个分支)。注意上面的警告。DEA 的另一条腿将是其中之一(层次结构):

  • 费用/物业改善/结构/材料
  • 费用/财产改善/结构/劳动力
  • 费用/物业改善/装修/材料
  • 费用/物业改善/装修/人工
  • 费用/物业改善/家具

c) 始终与成本代码相关联的费用(即“100.12 - 窗户材料”、“100.13 - 窗户人工”等)。

您将不再拥有“成本代码”,它们都将是分类帐帐号LedgerNos,因为分类帐是您处理任何事情的地方。

分类帐中的一条 DEA 分支,特定财产的外部账户中的另一条分支。层次结构将与上一点相同。

b)通常与特定工作相关的费用

Ledger-ExternalAccount
分类帐中的一个 DEA 分支,外部帐户中的另一个)。

(但并非总是如此——我确实有偶尔的管理费用,比如办公用品)

分类帐-分类帐

  • 分类帐中的一个 DEA 分支用于费用或责任LedgerNo......这笔钱已支付

    • 费用/常规/办公用品
  • 分类帐中收入或资产的另一条腿LedgerNo......钱是

  • 收入/每月应付

6 信用卡及其他信用卡处理

信用卡收费
Best Buy 卡

您的每张卡都代表一份合同,一个需要交易的账户,必须与发行卡的机构提供的月结单进行平衡。

  • 将每个设置为外部帐户,此处设置一个 DEA 分支,另一个设置在分类帐中。

  • “业主的百思买卡”我不清楚(谁是业主,你还是业主......如果是后者,那么到目前为止,“你”买卖房产的假设是不正确的。)

    • 无论如何,我相信我已经提供了足够的细节让你弄清楚。

    • 不要将所有者的财产帐户和他们的 Best Buy 卡合并为一个外部帐户:为每个帐户保留单独的外部帐户。

7 作业成本计算

请注意,我是在最后解决这个问题,因为一旦你解决了大问题,剩下的问题就会变小。您提出的大问题(工作成本;每个财产的利润/损失)是,一旦为您的业务正确设置了分类帐,实际上是小问题。

据我所知,工作成本是我唯一没有解决的问题。首先,这里要理解的问题是Actuals 和 Estimates之间的区别。到目前为止,我讨论的所有内容都是实际值。

  • 对于Estimates,标准程序是在分类帐中设置单独的帐户结构(层次结构中的树)。这些通常被称为暂记账户,就像在暂记中持有的钱一样

  • 如果处理得当,这些账户将阻止您在所有估计值转移到实际值(暂挂为零)之前关闭或完成外部账户。

  • 业务交易与实际交易完全相同。

  • 这将提供对此类数字的精确跟踪,以及项目从估计值变为实际值时的差异。

8 数据模型 • 作业成本计算

注意到第一个第二个链接答案中的数据模型是完整的,其中分类帐没有展开:

  • 这个答案处理分类帐的解释,这个数据模型给出了一个完整的定义 Ledger

    • 通过安排 AccountType
    • 单亲层次结构
      • 只有叶级别LedgerAccount可以针对
      • 中间层LedgerIntermediate用于总结它下面的树。
  • 我进一步归一化 Transaction

  • 扩展外部Account以显示个人与组织

  • 所有的约束都是明确的。

低密度脂蛋白

显然对于内联图形来说太大了。这是一个PDF

  • 此外,它还具有示例数据,其中包括答案中涵盖的所有示例
  • 请注意分类帐中的缩进,它表示帐户层次结构

注释

您如何插入第一个分类帐(例如 100 资产,没有父分类帐)?

根据帐户层次结构,分类帐是一棵树,一个单亲层次结构(又名“一种方式”,出于奇怪的原因)。需要行。在数据库构建操作中(使用文件中的 DDL),我们通常先做所有的CREATE TABLEs,然后是所有的ADD CONSTRAINT FKs。用 插入CREATE TABLE


  • CREATE TABLE Ledger

    INSERT Ledger VALUES ( 0, 0, "I", "AL", "Root", ... )


  • CREATE TABLE LedgerIntermediate

    INSERT LedgerIntermediate VALUES ( 0 )

鉴于 的反向Comprisesbelongs to,所有第一级分类帐,例如。Fees, House, InterbankAssetbelong to这个行。

  • @marcos 我在答案中添加了说明。 (3认同)