Toggle navigation
dondari
Home
Tools
Recent Changes
Special Pages
Upload a File
ログイン
データベーステーブルの「削除フラグ」
目次
1
削除フラグ
2
マスタテーブルの場合
3
トランザクションテーブルの場合
4
DELETEしてしまう
削除フラグ
データテーブルを定義する際よく見かける項目、「削除フラグ」。
例えば、0なら有効レコード、1なら削除レコードとします。
マスタテーブルの場合
得意先マスタなら「取引終了」みたいな意味合いでしょうか。
その得意先については、今後新たな取引データを発生させないように制御できて、でも過去の取引データを参照する場合は必要、のように使う場面が考えられます。
トランザクションテーブルの場合
では、取引データはどうでしょうか。たとえば、売上データを削除する場合、誤入力データを抹消するというケースが考えられます。
これも「削除フラグ」を1にして、保存しておく必要があるのでしょうか。
私は不要と思います。二度と参照することはないはずですし、売上データを集計したりする場面で常に“削除フラグ=0”的な条件を記述することになります。
当然、削除データが含まれる場合を想定したテストも必要になるでしょう。
DELETEしてしまう
こういう場合はやっぱりDELETEがいいのではないかと思うのです。((DBの実ファイルの分断化などの問題はあるかもしれませんが))
どうしてもデータを抹消するのに抵抗がある場合、売上データと同じカラムのテーブルを別に作成しておいて、そちらに“移動”するのもいいのではないかと思います。
万が一抹消データを参照したい場合でもUNION ALLすればよさそうです。
Tweet
facebook
slideshare
rubygems
github
qiita