簡體   English   中英

MySQL雙入口會計系統數據庫設計?

[英]MySQL Double Entry Accounting System Database Design?

我打算在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)

文章描述如果賬戶被扣除,“金額”字段的值將為正,否則為負。

現在對於上面的POSTING表,我還有其他兩個選項..

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

在這個選項中,'isDr'字段是一個布爾值。 如果帳戶被記入借方,則isDr字段將包含值“true”,否則為“false”。 並且'amount'字段將始終具有正值。

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

在這里,如果帳戶被記入借方,我會將金額存儲在'debitAmount'字段中,否則我會將其存儲在'creditAmount'字段中。

那么,三個以上哪個選項更好用?

這是主觀的,但我認為選項#0(單個amount字段為正或負的選項)最好。 當你想要進行包括信用和借記的數學時,選項#1會給你帶來很大的痛苦,因為你必須參考isDr字段來確定是否乘以-1 選項#2沒有很好地規范化,因為表達式debitAmount IS NULLcreditAmount IS NOT NULL將是等價的(如果它們有所不同,那么您的數據庫處於不一致狀態)。

選項#0有一個我最近面臨的缺點:

有些情況需要寫入/記錄的金額,並且在分類賬的信用方面也被視為減號( - ),而不是在借方一側顯示其金額為正(+)。 (反之亦然)

選項#0失敗(如果沒有標記為借方或貸方,或者沒有以其他方式解決)

你需要問問你的會計師。 (如果需要在信用方面記錄任何減( - )金額(反之亦然)。

我推薦選項#1。 選項#2將導致許多未使用的字段(debitAmount和creditAmount字段總數的50%)。 此外,選項#1允許您輕松獲得當前余額。

最后(或許,首先),選項#1遵循正確的標准化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM