Зависит от того, как реализована двойная запись. Если журналы счетов обособлены, то нарушается целостность. Мы используем журнал проводок, который фиксирует любое движение как проводку со счета на счет. Выглядит табличка так:
PHP:
+----------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+------------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| entry_id | bigint(20) | NO | | NULL | |
| entry_time | datetime | NO | | NULL | |
| entry_date | date | NO | | NULL | |
| operation | bigint(20) | NO | MUL | NULL | |
| account | int(10) unsigned | NO | MUL | NULL | |
| corr_account | int(10) unsigned | NO | | NULL | |
| debit | decimal(16,2) | YES | | NULL | |
| credit | decimal(16,2) | YES | | NULL | |
| comment | varchar(255) | NO | | | |
| is_debit | int(11) | NO | | NULL | |
| аналитика1 | bigint(20) | YES | MUL | NULL | |
| аналитика2 | bigint(20) | YES | MUL | NULL | |
| аналитика3 | bigint(20) | YES | MUL | NULL | |
+----------------------+------------------+------+-----+---------+----------------+
Этот журнал максимальной детализации хозопераций. Типовой отчет =СНД,СНК,ДО,КО,СКД,СКК выполняется в два запроса: один на начальное сальдо, другой на период от начального до конечного.
Для ускорения/архивирования эта табличка просто сворачивается до нужного уровня детализации. Например, для твоего случая, если предположить что синтетики на счетах нету, то останется:
PHP:
+----------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+------------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| entry_date | date | NO | | NULL | |
| account | int(10) unsigned | NO | MUL | NULL | |
| corr_account | int(10) unsigned | NO | | NULL | |
| debit | decimal(16,2) | YES | | NULL | |
| credit | decimal(16,2) | YES | | NULL | |
| is_debit | int(11) | NO | | NULL | |
+----------------------+------------------+------+-----+---------+----------------+
Тут главное просечь фишку: в бухучете по сути на счете не может быть сухого остатка, так как весь бух учет это двойная запись - движение средств, а не остатки.
PS. Да, еще немного про табличку. Каждая проводка дублируется: записывается движение для первого и второго счета. entry id - это номер проводки.