Yet another approach I think that might be the goldilocks (no need for a compound primary key on "Item") is the history table pattern1:
  • create an "OldItem" table using inheritance with a foreign key reference to "Item".id
  • on edits, copy the current "Item" to "OldItem" (taking care with primary keys and timestamps) and then edit the "Item" as usual

Footnotes

0 sats \ 1 reply \ @nym 3 Apr
What do you think about allowing reposting of old good posts, but at a considerable markup to make the repost?
reply
I'm always interested in increasing evergreenness of old content, but I'm not sure how to do it yet.
reply