DBの整合性チェックを制約ではなくコードでやる発想


DB制約 DB整合性チェックをコードでやる 自動テスト
テスト対象 データ データ ロジック
変更容易か? ×

データに対するテストはロジックに対するテストで検出できないバグを検出可能です。
例えば、銀行で、全ての口座のin out、全てのATMのin outの合計が0になるというテストは、口座とATMに関する多くのロジックをテストできます。

銀行ならシステムの変更頻度が低いので(実際どうかしりませんが)、DB制約でもいいかもしれませんが、ウェブサービスのように変更頻度が高い場合、DB制約だと保守性が悪くなります。

かといって、自動テスト + カバレッジ100%だと、テストケース漏れを防げません。

そこで、DB整合性チェックを用意して、本番DBをチェックしておけば、良いのでは?