I'm still at the planning stages of a website, I'll be using PHP5, Postgres 8.2 and a framework, maybe the Zend Framework or CodeIgniter.
I'm having a hard time trying to come up with a process for versioned content. What I mean by versioned content, I'll give you an example of how I want to use it. I want to be able to moderate content, on a page for a single book listing, a user can update the content of that page, perhaps a misspelling or additional information, but it must be approved. There may possibly be several new versions of the content waiting for approval as well. Being able to rollback data to a previous state may be useful to, but I haven't really seen the need for that quite yet.
What I've come up with is just having an entry in my db book table with perhaps with a version field and another table to track which version of book data I should be using. This just doesn't seem right though, I'll be duplicating a lot of data this way. Also my data is managed over more then a few tables, if it were just one table's worth of data maybe my idea would work, but when its three to six I can only see it as impractical.
So could someone offer me some practical advice? What is the more practised approach?