Jag gör något som ditt andra tillvägagångssätt:har tabellen med den faktiska arbetsuppsättningen och en historik med ändringar (tidsstämpel, post-id, egenskaps-id, egenskapsvärde). Detta inkluderar skapandet av poster. En tredje tabell beskriver egenskaperna (id, egenskapsnamn, egenskapstyp), vilket hjälper till vid datakonvertering högre upp i applikationen. Så du kan också spåra mycket enkelt ändringar av enskilda egenskaper.
Istället för en tidsstämpel kan du också ha en int-like, som du ökar för varje ändring per record_id, så att du har en faktisk version .