Sunday, January 25, 2009

トリガー履歴に関する思考

トリガーは履歴を記録するのが適切である。
今回は履歴記録の方式を比較する。

1)一行に全てカラムの修正前、修正後の差分科目のみを記録し、そのほかの科目は全部ヌル
メリット:どの項目、どのように修正されたのが把握しやすい
デメリット:それぞれ項目に、修正前、修正後、操作(IUD)三つの項目が必要で、構造が大幅に変更される。カラム数が多い

2)履歴テーブルの一行に、ひとつカラムの修正前、修正後の差分科目のみ追加する
メリット:どの項目、どのように修正されたのが把握しやすい。カラム数が少ない
デメリット:それぞれ項目に、修正前、修正後、操作(IUD)三つの項目が必要で、構造が大幅に変更される。カラム数が少ないが、行列構造まで違う。また、行数が多すぎる

3)履歴テーブルは履歴ID以外、元のテーブルとまったく同じ、修正以前の情報を全部格納する
メリット:形式同じで、完全履歴が抽出しやすい。記録の情報が少ない。
デメリット:変更された項目がわからない。変更されてない情報が記録されている。最新の情報は履歴にない(トリガーを無効にする場合、その前の変更履歴がなくなる、有効になってから、前の履歴が残される)

4)履歴テーブルは履歴ID以外、元のテーブルとまったく同じ、修正以降の情報を全部格納する
メリット:形式同じで、完全履歴が抽出しやすい。記録の情報が少ない。最新の情報は履歴にある。
デメリット:変更された項目がわからない。変更されてない情報が記録されている。最新の情報は元のテーブルと履歴に複数のコピーがある

5)履歴テーブルは履歴ID以外、元のテーブルとまったく同じ、修正した情報だけ絞って格納する
メリット:記録の情報が少ない。変更された項目がわかる。最新の情報は履歴にある。
デメリット:形式同じだが、完全履歴が全ての履歴を合わせなければ抽出できない。変更されてない情報が記録されている。最新の情報は元のテーブルと履歴に複数のコピーがある

No comments: