Этот же вопрос возникает, когда вы пытаетесь внедрить систему Главной книги для единого учета. То, что вы назвали «транзакциями», соответствует «переводам», например, от сбережений к проверке. То, что вы назвали «инвентаризацией», соответствует «доходу», например, внесению зарплаты. То, что вы назвали «потреблением», соответствует «расходам», например, когда вы оплачиваете счет за электричество. Единственное отличие состоит в том, что в бухгалтерском учете все сводится к долларовой (или другой валюте) стоимости. Поэтому вам не нужно беспокоиться об идентификации активов, потому что один доллар так же хорош, как и другой.
Таким образом, возникает вопрос, нужно ли вам иметь отдельные столбцы для «суммы дебета» и «суммы кредита» или, альтернативно, можете ли вы просто иметь один столбец для «суммы» и ввести положительное число для дебетов и отрицательную сумму для кредитов. По сути, тот же вопрос возникает, если вы ведете двойную бухгалтерию, а не однократную.
С точки зрения внутренней арифметики и внутренней обработки данных все намного проще, если вы применяете подход с одним столбцом. Например, чтобы проверить, находится ли данная транзакция в балансе, все, что вам нужно сделать, это спросить, равна ли сумма (сумма) нулю.
Осложнения возникают, когда людям требуется традиционный вспомогательный формат для форм ввода данных, поиска на экране и опубликованных отчетов. Традиционный формат требует двух отдельных столбцов, помеченных «Дебет» и «Кредит», которые содержат только положительные числа или пробел, с ограничением на то, что у каждого элемента должна быть запись либо в дебете, либо в кредите, но не в обоих, а другой столбец должен быть не заполнено. Эти преобразования требуют определенного объема программирования между внешним форматом и внутренним форматом.
Это действительно вопрос выбора. Лучше ли сохранить традиционный формат бухгалтерского учета бок о бок с дебетовыми и кредитными облигациями, или лучше перейти к формату, который использует отрицательные числа значимым образом? Есть некоторые обстоятельства, которые благоприятствуют каждому из этих вариантов дизайна.
В вашем случае это будет зависеть от того, как вы собираетесь использовать данные. Я создавал прототипы для каждого из двух проектов, а затем начинал работать над фундаментальной обработкой CRUD для каждого. Какой из способов работать проще в вашей среде - тот, который вам нужно выбрать.