Как бы вы сохранили эти значения и почему?
Я бы сохранил их как один столбец . Несмотря на ваше желание разделить данные на несколько столбцов, любой, кто разбирается в бухгалтерском учете или бухгалтерском учете, будет знать, что стоимость транзакции в долларах - это одно, а не две разные вещи в зависимости от того, являются ли они доходом или расходом (или активом, пассивом, капиталом и т. вперед).
Как человек, который на самом деле написал полностью сбалансированные бухгалтерские приложения с двумя записями и менее формальные бюджетные приложения, я предлагаю вам пересмотреть свое решение. Это значительно упростит будущую работу в этом направлении.
Извините, это, вероятно, не то, что вы хотите услышать, и вполне может привести к отрицательному повторению для меня, но я не могу, честно говоря, отпустить это, не сказав вам, какая это будет ошибка.
Ваши "мысли пока" являются признаком уже возникающих проблем.
1 / «Наличие отдельных столбцов может быть более сложным для обслуживания (что произойдет, если мы получим 1 в обоих столбцах?» - ну, этого не должно быть. Предполагается, что данные внутренне согласованы с моделью данных Вам лучше всего не допустить этого с помощью триггера вставки / обновления или, скажем, одного столбца, который не позволил этому произойти: -)
2 / "Поиск может быть проще с одним столбцом, но есть риск принять 0 (false, расход) за ноль (неизвестно)." - ошибка невозможна, если знак хранится с величиной значения. И сама идея не знать, является ли статья расходом или доходом, отвратительна для бухгалтеров. Это знание существует при создании транзакции, но оно не является туманным до тех пор, пока не произойдет какой-либо момент после транзакции.