gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 06:33:19 32 4
gpt4 key购买 nike

我打算在 MySQL 中为复式记账系统创建一个数据库。

我最近读了这篇文章:http://homepages.tcp.co.uk/~m-wigley/gc_wp_ded.html

我在本文中发现拥有三个表 ACCOUNT、JOURNAL 和 POSTING 会很方便:

ACCOUNT(accountID, accountName)
JOURNAL(journalID, journalType)
POSTING(postingID, journalID, accountID, amount)

文章描述了如果一个账户被借记,'amount'字段的值将为正,否则为负。

现在对于上面的 POSTING 表,我还有其他两个选项..

(1) POSTING(postingID, journalID, accountID, isDr, amount)

在此选项中,'isDr' 字段是一个 bool 值。如果帐户被借记,isDr 字段将包含值“true”,否则为“false”。并且“金额”字段将始终具有正值。

(2) POSTING(postingID, journalID, accountID, debitAmount, creditAmount)

在这里,如果账户被扣款,我会将金额存储在“debitAmount”字段中,否则我会将其存储在“creditAmount”字段中。

那么,以上三个选项中的哪个选项更适合使用??

最佳答案

这是主观的,但我认为选项 #0(单个 amount 字段为正或负的选项)是最好的。每当您想进行包括贷方和借方的数学运算时,选项 #1 都会给您带来很多痛苦,因为您必须查阅 isDr 字段以确定是否乘以 - 1。选项 #2 没有很好地规范化,因为表达式 debitAmount IS NULLcreditAmount IS NOT NULL 是等价的(如果它们不同,那么你的数据库是在一个不一致的状态)。

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

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com