1

行われたすべてのサービス呼び出しを記録するServiceCallデータベーステーブルがあるとします。この各レコードには、顧客レコードとの多対1の関係が含まれています。このレコードには、どの顧客がサービスコールを行ったかが格納されます。

さて、顧客があなたとの取引を停止し、データベースに顧客の記録が必要ないとします。新しいServiceCallレコードを作成するときに、ドロップダウンリストに顧客の名前を表示する必要がなくなりました。

職業はなんですか?ユーザーがデータベースから顧客のレコードを削除することを許可しますか?

その顧客のレコードに対して特別な列IsDeletedをtrueに設定し、IsDeletedがtrueに設定されているすべてのレコードがすべてのドロップダウンリストに読み込まれないことを確認しますか?これにより、古いレコードが内部結合で破損するのを防ぎますが、ユーザーが古い顧客と同じ名前の新しいレコードを追加することもできなくなりますね。

削除を一切禁止しますか?それを「無効にする」ことを許可しますか?

他に使用した戦略はありますか?誰もが自分の道を進んでいると思います。あなたの意見を見るだけです。

もちろん、上記は非常に単純化されており、通常、ServiceCallレコードは他の多くのエンティティテーブルにリンクします。削除する必要がある場合、これらすべてが同じ問題に直面します。

4

2 に答える 2

2

私はIsDeletedフラグを設定することを好みます。利点の1つは、履歴情報を引き続きレポートできることです(すべてのデータはまだそこにあります)。

同じ名前の別の顧客を挿入できないという問題に関しては、通常は自動入力されるID列(CustomerIdなど)を使用する場合、これは問題ではありません。

于 2009-06-05T04:21:56.383 に答える
0

@Tetraneutronの回答に同意します。

さらに、アクティブな顧客のみを一覧表示する VIEW を作成して、ドロップダウン リストなどへの入力をより便利にすることができます。

于 2009-06-05T04:31:03.870 に答える