このシナリオで人々が何をするかについていくつかのアイデアを得ようとしています。テーブルのあるシステムデータベース(SQL Server 2008 R2)があり、すべてのテーブルに "削除済み"と呼ばれるフィールドがあります。レコードが削除された場合は基本的にビットフィールドであり、レコードが0の場合は削除されません。フィールドはnull可能ではなく、そのデフォルトはもちろん0です。
データベースへの実際の削除は許可しないため、これを回避するには、ビットフィールド(Deleted)をtrueに設定します。このアプリケーションでは、次のようなクエリが作成されます。
SELECT blah FROM MyTable WHERE .. AND Deleted=0
基本的に、レコードをフィルタリングして、削除されていない行のみを取得します。私たちの問題は、カスケードする必要がある関連レコードです。人々は何を好むのでしょうか。サーバー側のコードでこれを行うと、レコードを削除したときに、関連するすべてのレコードが削除されます(削除済みビットフィールドがtrueに設定されます)。それとも、これはこのフィールドをチェックし、すべての関連レコードのビットフィールドを1に設定する必要があるトリガーでしょうか。
それとも、私たちは完全に間違った道を進んでいますか?