【问题标题】:MySQL table designing for an Accounting system会计系统的 MySQL 表设计
【发布时间】:2012-03-26 12:54:30
【问题描述】:

我正在设计一个在线会计系统作为大学项目。我有以下简单的交易。

  1. 现金销售 300 美元

  2. 从史密斯那里挖来的现金 250 美元

  3. 支付 50 美元的电费

我已经推荐Double Entry Accounting in a Relational Database 并设计了上面的交易表(减号表示金额已记入)。 id 1 和 2 属于事务 1,id 3 和 4 属于事务 2,依此类推。如何在 MySQL 数据库中将每两行标识为单个事务。例如,如果要选择第一个事务,我该怎么做,因为两行之间没有关系。如果这个设计听起来不好,你能建议一个替代方案吗?

【问题讨论】:

  • 你可以为你的表添加transaction_id。
  • 感谢响应。我想必须为每个事务手动添加它,并且我无法自动增加该字段。我找不到将不同行中的帐户关联起来的方法。
  • 从技术上讲 - 从严格规范化的角度来看,每笔交易有 2 个条目。您可以将事务 id 保存在一个单独的表中并在那里自动增加它们,然后在这个“事务”表中引用它们。当然,如果您要保存数万亿次交易的信息,那么自动递增的整数可能不如应用程序确定的唯一字符串有用...

标签: php mysql database-design accounting


【解决方案1】:

除非确实有必要,否则您应该放弃两行设计。我会合并这些行并添加一个额外的字段,您可以在其中存储是否是现金,并且金额值在贷记时为 + - 如果借记(或冲销,我不擅长会计:))

【讨论】:

  • 我也尝试过,但是当有两个以上的帐户我们无法合并时,可以吗?
  • 好吧,举个例子。您的意思是同一笔交易有两行以上?如果有,有什么区别?
  • 我的意思是这样的条目 注销坏账。 DR- 呆账准备金 DR-GST CR- 应收账款 三个账户将占据上表中的三行。我是设计新手,你能告诉我如何合并行并像你说的那样添加额外的字段。 :)
  • 如果您有更多的交易条目,您应该按照 CD001 在他的评论中建议的内容进行
【解决方案2】:

干得好。

我唯一可以添加的是借方和贷方的两个数字列。那看起来就像教科书或旧簿记中的日记。它会更加明显,并且可以处理任意数量的重复条目。如果您愿意,您当前的金额栏可以通过借记 - 贷记来计算。

我认为您不需要将其设置为关系型,除非您想要一个特定的会计科目表作为表格,更复杂且不那么优雅。但是,为了更灵活,您可以从日记帐生成实时会计科目表。

【讨论】:

    【解决方案3】:

    由于使用的是 MySQL 关系型数据库,所以可以添加多个表。

    要回答您的问题,您需要创建另一个表来保存每笔交易的一般信息(例如,您可以将其称为TRANSACTIONS)。此表可能包括Transaction IDDate Column。 现在,在您当前存在的表中引用TRANSACTIONS 表的Transaction ID 列。这意味着记录 1 和 2 将有一个 Transaction ID,因此您可以在查询中引用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 2011-03-31
      相关资源
      最近更新 更多