監査目的で監査エントリを保存するために、私はどのデータが変更されたかを記録する方法に取り組んできました。
私は過去に2つの異なる方法を実行しましたが、現在新しいシステムを作成していて、どちらを使用するかを考えています。
AuditEntryテーブルとAuditEntryChangeテーブルがあります。変更された各フィールド値はAuditEntryChangeテーブルに入れられ、AuditEntryへのFKがあります。
変更されたフィールドと値を単一のフィールドのAuditEntryテーブルのXMLに保存します。
上記のうち、保存とクエリのパフォーマンスが高いのはどれですか?(XMLを使用する場合のシリアル化/逆シリアル化の影響を含みます)。そして、どちらがより少ないスペースを占めるでしょうか?
また、監査テーブルにGUIDまたはint PKを使用することをお勧めしますか?それぞれの理由が思い浮かびます。