私はあなたの2番目のアプローチのようなことをします:実際のワーキングセットと変更のある履歴(タイムスタンプ、record_id、property_id、property_value)を持つテーブルを持っています。これには、レコードの作成が含まれます。 3番目の表は、プロパティ(id、property_name、property_type)について説明しています。これは、アプリケーションの上位でのデータ変換に役立ちます。したがって、単一のプロパティの変更を非常に簡単に追跡することもできます。
タイムスタンプの代わりに、record_idごとに変更ごとにインクリメントするintのようなものを使用することもできます。これにより、実際のバージョンが得られます。 。