Sử dụng một cột cho mọi thứ và sau đó sử dụng số âm cho ghi nợ hoặc ghi có không hoạt động, như bạn đã phát hiện ra. Giá trị kế toán không phải là đại lượng vô hướng - chúng là vectơ chứa enum (ghi nợ hoặc ghi có) và một số thập phân có dấu chấm cố định (có thể dương hoặc âm).
Bất kỳ giao dịch kế toán nào cũng phải có số lượng các khoản ghi nợ và ghi có bằng nhau. Nếu không, đó không phải là một giao dịch hợp lệ.
Tương tự như vậy, số dư tài khoản cũng là loại véc tơ tương tự. Tại bất kỳ thời điểm nào, tổng số ghi nợ và tổng số tín dụng trên tất cả các tài khoản trong hệ thống kế toán phải bằng nhau, nếu không sẽ xảy ra sự cố.
Một cách khác để xem xét điều này là nghĩ về giá trị kế toán như một số phức, trong đó các khoản ghi nợ là thực và tín dụng là tưởng tượng. Điều này có nghĩa là 4 ghi nợ + 3 tín dụng =4 + 3i. Điều này cho thấy rõ ràng rằng bạn không thể đơn giản hóa điều đó hơn nữa bằng cách thu gọn số hạng ảo thành số hạng thực âm - nó không cùng trục đường số. Nó cũng giống như khẳng định rằng 4 + 3i =4 - 3. Không phải là phép toán hợp lệ.
Nếu một cơ sở dữ liệu có thể lưu trữ số phức một cách nguyên bản, thì số phức thực sự sẽ là một cách tốt để lưu trữ dữ liệu kế toán, có thể sẽ giải tỏa rất nhiều sự nhầm lẫn mà các lập trình viên thường mắc phải về kế toán và sẽ dẫn đến tất cả các loại thuộc tính thú vị. Ví dụ:một giao dịch cân bằng sẽ luôn có góc pha là 45 độ, cũng như một bộ tài khoản cân bằng. Nhưng hầu hết các cơ sở dữ liệu cần bạn phân tích số phức thành các thuật ngữ thực và ảo trước khi lưu trữ và lưu trữ các thuật ngữ đó trong các cột khác nhau - trong thế giới kế toán, tên của hai cột đó tương ứng là "ghi nợ" và "tín dụng".
Tái bút:Tôi biết rằng một số người sử dụng tiêu cực cho các khoản tín dụng và tích cực cho các khoản ghi nợ, nhưng điều này rất cẩn thận để làm đúng và rất mong manh. Bạn phải theo dõi số dư thông thường của bất kỳ tài khoản nào mỗi khi bạn chạm vào nó - ví dụ:vì tài khoản tài sản có số dư thông thường ghi nợ, khi đó bạn có thể sử dụng một số dương để tăng nó. Nhưng tài khoản nợ phải trả có số dư thông thường âm, do đó, sự gia tăng giá trị của tài khoản đó là một số âm. Bạn không thể tổng hai giá trị đó lại với nhau bất cứ lúc nào - chúng không giống nhau. Ghi nợ là thứ bạn có, trong khi tín dụng là thứ bạn nợ. Đặt cả hai vào cùng một cột trong bảng cơ sở dữ liệu có mùi khó chịu.