4

Zend フレームワークを使用して Web ベースのアプリケーションに取り組んでいます。

一連の列に対して行われた更新の履歴を保持する方法を探しています。

ユースケース: ユーザーは 5 つのプロパティを持つアイテムを追加できます。ユーザーは 5 つのプロパティを更新できます。彼がこれら 5 つのプロパティに対して行ったすべての更新を追跡する必要があります。

途中で、古い値、新しい値、列名、itemID、およびタイムスタンプを格納する log という名前の新しいテーブルを追加することを考えました。

これを行う最善の方法は何ですか?既存の方法/オプション/例はありますか?

ありがとう、

4

4 に答える 4

4

おそらく探しているのは、監査ログです。MySQL データベースでトリガーを使用して作成できます。

これを行う方法の例は次のとおりです: http://ronaldbradford.com/blog/auditing-your-mysql-data-2008-07-15/

以下のコメントで、データベースが「固定」されていないことを追加しました。その場合、新しく追加された列がログにも追加されるように、変更が監査テーブルに適用されるように、変更をテーブルに複製する必要があります。

アプリケーションでこれをログに記録することを検討できます (この質問に選択したタグは提案のようです)。トリガー、ストアド プロシージャ、およびデータベースへの手動操作はログに記録されません。そのため、そのパスを選択する場合は注意してください。

于 2011-01-10T20:01:43.990 に答える
2

トリガーは、監査を行うための最も一般的な方法であり、ユーザー インターフェイスまたは他の場所から行われたかどうかにかかわらず、何が行われたかを把握する唯一の信頼できる方法です。ただし、それらの記述方法はデータベースによって異なります。サポートする可能性のあるデータベース バックエンドのタイプがわかっている場合は、それぞれに個別のトリガーを作成できます。

トリガーを使用せずにこれを処理する必要がある場合は、監査テーブルへの書き込みと更新の変更を行うプロセスを用意することをお勧めします。フレームワーク自体に依存するのではなく、Zend フレームワークによって呼び出されるストアド プロシージャを保証するのに十分なほど複雑な場合があります。(私は Zend に精通していないので、これが設定できるものかどうかはわかりません。ストアド プロシージャがこれを処理できることは知っています。)

于 2011-01-10T20:16:19.483 に答える
0

これはより良いものです..監査証跡のポップを参照してください

于 2014-04-22T14:38:11.903 に答える