复式记账系统的数据库模式设计?

标签 database database-design accounting

<分区>

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

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

最佳答案

创建以下表

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

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

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

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

我们有以下模式(一对多关系):

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

为每个表添加适当的字段

  • 联系人
    • 联系方式
    • 姓名
    • 地址1
    • 地址2
    • 城市
    • 状态
    • 压缩
    • 电话
    • 传真
    • 电子邮件
  • 交易
    • 交易ID
    • 日期
    • 备忘1
    • 联系方式
    • 引用
  • 订单项
    • line_itemID
    • 交易ID
    • 账号
    • 金额
    • 备忘录2
  • 帐户
    • 账号
    • 账户名
    • 账户类型

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

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

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

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

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

关于复式记账系统的数据库模式设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2494343/

相关文章:

mysql - Scala Slick 使用 InteliJ-IDE 连接到 MySQL 数据库

javascript - 使用 PHP 将注释添加到数据库中(使用 AJAX 防止页面重新加载)

mysql - 数据库最佳规范化

mysql - sql中如何通过给定 super 表的主键来识别子类型表

mysql - 我是否应该将有关某个项目的信息放在与该项目的产品/parent_ID 不同的表中?数据库管理系统

e-commerce - 计算含税外币价格的正确方法

mysql - 是否有一个脚本来解析 radius 会计平面文件以导出到单独的 mysql 服务器

php - 找不到sql设置值有什么问题

sql - RDBMS数据库中的多对多关系

accounting - 有人有一个漂亮的信用到期算法吗?