私は新しいアプリケーションを開始していますが、ロギングの最適な方法は何かと考えていました。データベース内の一部のテーブルには、すべての変更と、変更を行ったユーザーが記録されている必要があります。他のテーブルでは、最終変更時刻を記録するだけでよい場合があります。
以前のアプリケーションでは、これを行うためにさまざまな方法を使用しましたが、他の人が行ったことを聞きたいです。
私は次のことを試しました:
- 最後に編集された時刻を記録するために、「変更された」日時フィールドをテーブルに追加します。
- プライマリ テーブルの変更を記録するためだけにセカンダリ テーブルを追加します。セカンダリ テーブルの各行は、プライマリ テーブルで変更されたフィールドを表します。したがって、プライマリの 1 回のレコード更新で、セカンダリ テーブルに複数のレコードが作成される可能性があります。
- 2 番と同様のテーブルを追加しますが、3 つまたは 4 つのテーブルにわたって編集を記録し、関連するテーブルを追加のフィールドで参照します。
どのような方法を使用し、推奨しますか?
また、削除されたデータを記録する最良の方法は何ですか? ユーザーがDBからレコードを永久に削除できるという考えは決して好きではないので、通常、削除されたときにtrueに変更されるブールフィールド「deleted」があり、モデルレベルですべてのクエリから除外されます. これに関する他の提案はありますか?
最後の 1 つ.. ユーザー アクティビティを記録するための最良の方法は何ですか? 現時点では、ログイン/ログアウト/パスワードの変更などを記録するテーブルがあり、アクションが何であるかに応じて、1、2、3 などのコードを与えます。
この質問に詰め込みすぎていないことを願っています。ありがとう。