Сохранение записи транзакции в базе данных учета двойных записей.Дизайн базы данных: таблица бухгалтерских операций
Я пришел с двумя вариантами решения 1 и вариантом 2, мне сказали, что большинство банковских пакетов выбирает вариант 2 для своего дизайна базы данных. Однако я предпочитаю вариант 1 над вариантом 2, потому что он просто имеет смысл, и он более эффективен!
I.e Для 2-х перемещений средств вариант 1 требует 2 записи по сравнению с вариантом 2, требуется 4 записи.
Хотелось бы знать, почему банк выбрал вариант 2 над вариантом 1? Что является причиной этого?
Option 1)
TRANSACTION
Credit_AccountId
Debit_AccountId
Amount
...
Option 2)
TRANSACTION
AccountId
Amount
...
спасибо, я вижу вашу точку там о сложных транзакциях. – 001
Спасибо за ваш ответ @ Justin Cave, не могли бы вы помочь мне в текущем поле баланса ответа, мы использовали модель 2 для транзакций, а также имели таблицу счетов с полем баланса. поле баланса обновляется после каждой транзакции, для проблем параллелизма мы использовали блокировку уровня строки в таблице учетных записей. все было хорошо, пока нам не понадобилось использовать двухфазную фиксацию из-за многоплатформенной java и .Net и ... Мы столкнулись со многими заблокированными блокировками по таблице Account. Специально «Транзакция, ожидающая блокировки». DBA убивает сеанс вручную и удаляет блокировки. Неверный дизайн? –
@ M.Heydari - похоже, это лучше подходит для нового вопроса - комментарии не являются подходящим местом для расширенных обсуждений. Я не буду поддерживать общую стоимость транзакционной системы. Если вы действительно обнаружите, что совокупность абсолютно необходима, используйте материализованное представление. –