On Thu, Jul 9, 2009 at 9:03 AM, Alessandro Bottoni<alexbott...@yahoo.it> wrote: > Hi Guys, > I'm completely new to Derby and I evaluating it as a possibile embedded > RDBMS for a Java/Swing application that I'm goig to develop. I'm > currently following the tutorials at IBM DeveloperWorks > (http://tinyurl.com/6mlwpj) and I have ordered the IBM book at Amazon's > already (http://tinyurl.com/ln3cas). > > I have a stimulating question for you all (I apologize if this topic has > been discussed already): > > how would you implement a system to keep track of any old version of a > record (row) of your database? > > I'm asking this because I need a system that will allow the user to see > any old version of a record and to undo/redo any change with just a > couple of mouse clicks. > > Any idea? Any suggestion?
Actually, this is a question that I have previously considered for a project that I am starting. My thought was to have an identity column (value assigned by the DBMS) and a separate ID column. From here, you can do several different things: 1. Have a "version" column. Use the max function to find the current version, or make the current version -1 or something else easy to find. 2. Use the max function on the identity column to find the latest version. 3. Have "previous" and "next" columns with the identity values of the appropriate objects in the chain. The current version would have a null "next". There are probably other approaches that I haven't thought of. > PS: No, I'm not planning to use any kind of ORM (Hibernate or similar). > Should I? I have used and recommend Hibernate. It simplifies things immensely IMO, though it does have its quirks (some of which are not properly explained by the documentation). It also works well with a number of other DBMS (if changing is something that might happen later). ------------------------------------------------------------- Family photographs are a critical legacy for ourselves and our descendants. Protect that legacy with a digital backup and recovery plan.