मैं एकाउंटिंग सॉफ्टवेयर बना रहा हूं। मुझे दोहरी प्रविष्टि बहीखाता लागू करने की आवश्यकता है। मुझे प्रति पंक्ति बनाम दो पंक्तियों में एक पंक्ति की शास्त्रीय समस्या है।
आइए एक उदाहरण लेते हैं और देखते हैं कि इसे दोनों परिदृश्यों में कैसे लागू किया जाएगा।
खाते Cash
और खाते पर विचार करें Rent
। जब मैं अपना मासिक किराया चुकाता हूं, मैं अपने Cash
खाते से मेरे खाते में $ 100 स्थानांतरित करता हूं Rent
।
प्रति पंक्ति एक पंक्ति
एक पंक्ति प्रणाली में, इस तरह के लेनदेन के रूप में संग्रहीत किया जाएगा:
लेन-देन
tx_id | posting_date
1 | 23/05/2015
transaction_records
id | tx_id | credit_account | debit_account | amount
1 | 1 | Cash | Rent | 100.00
लेन-देन प्रति दो पंक्तियाँ
दो पंक्ति प्रणाली में, मुझे एक ही रिकॉर्ड बनाने के लिए एक ही लेन-देन रिकॉर्ड को मिरर करना होगा कि एक बार मैं दोनों को जोड़ दूं, मुझे शून्य शेष मिलेगा।
लेन-देन
tx_id | posting_date
1 | 23/05/2015
transaction_records
id | tx_id | type | account | amount
1 | 1 | credit | Cash | 100.00
2 | 1 | debit | Rent | 100.00
समस्या
सबसे पहले मैं यह नोट करना चाहूंगा: मेरे पास कारण transactions
और transaction_records
टेबल दोनों (एक टेबल के बजाय) विभाजित लेनदेन को संभालने में सक्षम होना है (ऐसा मामला जहां मैं $ 100 को Cash
खाते से दो या अधिक अलग-अलग खातों में स्थानांतरित करता हूं )।
पहले तो मैंने इसे प्रति पंक्ति एक पंक्ति के साथ लागू करने की कोशिश की, लेकिन खाता संतुलन की गणना करने के लिए, और वास्तव में डेटा पुनर्प्राप्त करने के लिए इसका दर्द।
मैं दूसरे परिदृश्य की ओर झुक रहा हूं; हालाँकि, इसके कुछ मुद्दे भी हैं:
- मैं एकल रिकॉर्ड कैसे अपडेट करूं? मान लिया कि मैंने गलती की है और अपने किराए के लिए $ 100 दर्ज करने के बजाय, मैंने $ 10 दर्ज किया है। मेरे पास अब 2 हैं
transaction_records
- एक क्रेडिट के लिए और एक डेबिट के लिए, दोनों $ 10 की राशि के साथ। - अब मैं अपना सामंजस्य बिठाता हूं और इस टाइपो को ठीक करना चाहता हूं। मैं इसे डेटाबेस में कैसे ठीक करूंगा? मुझे रिकॉर्ड्स के बीच कनेक्शन नहीं पता है, और विभाजन के मामले में, एक लेनदेन में 2 से अधिक रिकॉर्ड हो सकते हैं। एकमात्र समाधान जो मैं लेकर आया था
ref_id
, प्रत्येक रिकॉर्ड जोड़ी के लिए कुछ जोड़ना है जो विशिष्ट रूप से एक संदर्भ के अंदर "एक दूसरे के विपरीत पक्ष" होने के रूप में उन रिकॉर्डों की पहचान करेगाtx_id
।
कौन सा दृष्टिकोण बेहतर / सरल है?
मेरे प्रश्न को सरल बनाने के लिए: मैं खाता ए से खाता बी तक धन की आवाजाही का प्रतिनिधित्व करना चाहता हूं। मैंने जो दो परिदृश्य दिए हैं, वे इस लेनदेन को संग्रहीत करने के लिए दोनों वैध डिजाइन हैं। जैसा कि मैंने यह भी बताया कि इन दोनों के पास विपक्ष और पेशेवरों (पहले एक: बचाने के लिए आसान है, को पुनः प्राप्त करना कठिन है; दूसरा एक विपरीत)।
उनके पास अन्य पेशेवरों / विपक्ष हो सकते हैं कि मैं अभी हाजिर नहीं हूं, इसलिए मैं अधिक अनुभवी लोगों से एक राय पूछता हूं।