0

たとえば、orders(id、name、product、...)というテーブルがあり、トリガーが書き込むログテーブルがあります: `orders_log(id、ts、order_id、name、product、...)

テーブルordersには、テーブルservice(id、name、price、...) とテーブルorders_services(order_id、service_id)の ManyToMany 関係があります。

ユーザーは Web フォームを介して注文のサービスを追加または削除できます。このアクションに関するログを保存し、注文を編集するときにユーザーに表示する必要があります。

この問題を解決する最善の方法は何ですか? テーブルには複数の多対多の関係と、1対1の対多の関係がありordersます。私はmysqlを使用しています。ありがとう

4

1 に答える 1

0

トリガーに基づくシステムを実装しようとしましたが、面倒であきらめました。

元のフィールド + トランザクション ID を含むシャドウ テーブルの行をコピーするストアド プロシージャに基づくシステムで部分的に成功しました。日付/ユーザーなどの情報に関連付けられたトランザクション ID を含む別のテーブルを保持しました。このシステムにより、一意のトランザクション ID を一連の操作に割り当て、後でこれらに基づいてこれらのシャドー テーブルにクエリを実行できました。

私は現在Javaで作業しており、クラス名、オブジェクトのIDを識別するいくつかの場所、日付+ xmlテキストを含むテーブルでオブジェクトをXStreamでシリアル化することにより、監査ログを実装しています。ログに記録される情報はオブジェクト モデルとともに増加するため、これは監査ログの優れたソリューションだと思います。後続の xml 間の差分に基づいて、変更を含むレポートを簡単に作成することもできます。

于 2012-07-17T10:20:19.720 に答える