会計伝票データのベストプラクティス

会計系データは「後で説明できること」が最重要です。一般業務テーブルと違い、削除や上書きよりも監査可能性を優先した設計が必要です。

基本原則

赤黒追記(削除禁止)

誤伝票を直接 UPDATE/DELETE せず、逆符号の仕訳を追加して相殺します。

-- 元伝票(誤り)
伝票ID: J1001
借方: 売掛金 10000
貸方: 売上高 10000

-- 訂正1: 逆仕訳(赤)
伝票ID: J1002
借方: 売上高 10000
貸方: 売掛金 10000

-- 訂正2: 正しい仕訳(黒)
伝票ID: J1003
借方: 売掛金 12000
貸方: 売上高 12000

この方式なら、履歴を消さずに最終残高を正しくできます。監査時に「なぜこの数値になったか」を追跡可能です。

推奨スキーマ

伝票ヘッダ(
  伝票ID PK,
  伝票日付,
  伝票種別,
  訂正元伝票ID NULL,
  登録者ID,
  登録日時
)

伝票明細(
  伝票ID FK,
  行番号,
  借貸区分,     -- 借方/貸方
  勘定科目ID,
  金額,
  摘要,
  PRIMARY KEY (伝票ID, 行番号)
)

訂正元伝票ID を持たせると、どの伝票の訂正かを辿れます。 物理削除は原則禁止し、取り消しも新規伝票で表現します。

整合性制約

他ドメインのベストプラクティス

会計以外でも「履歴が重要な業務」は、同じ発想で設計すると品質が上がります。

受注・請求データ

在庫データ

顧客マスタ・契約マスタ

承認・監査ログ

運用ベストプラクティス

  1. 入力: 下書き状態で作成し、確定後に不変化する
  2. 修正: 訂正伝票を発行して履歴連結する
  3. 監査: 変更理由・実行者・承認者を必須記録する
  4. 検索: 残高は明細の集計で再現可能にする

「会計伝票を直接更新できる設計」は短期的には便利でも、監査・障害解析・法令対応で大きなリスクになります。会計領域は append-only を標準にしてください。