I've worked with a lot of off-the-shelf systems and generally speaking they all, at a database level and above, have metadata such as CreatedBy/On, ModifiedBy/On etc against records/entities to give at least some visibility to who did what and when.

Obviously though these fields are fairly shallow, you'll never know who did the 2nd to last edit for example, but these fields can be reasonably useful.

If you are building a system from scratch that requires some level of auditing, whether it's basic Created/Modified fields, tracking every interaction with records or a full blown audit trail that tracks not only who did what but what the fields were before and after...is there a standard, accepted way to do each of these?

One of the issues I'm running into, especially with Created/Modified fields is that your object model shouldn't really know or care what's happening at the application level, so trying to separate those concerns poses challenges.

So I guess I'm asking, is this a solved problem? Because googling I can't seem to find a standard, universally accepted way of doing it.


2 Answers 2


There are many ways of achieving this so expect this question to be closed as it is a huge area. But a few examples I've used/encountered in the past:

Mirror tables

As part of a database update, the previous database may be kept in mirror tables so the update can proceed while the database is in use. When the switch over happens, the mirror tables are copied to dummy, the live tables copied to mirror and the dummy tables copied to live.

Obviously, this will only tell you what has happened between updates but the facility is there and can be useful.

History tables

For tables of interest, a history table is kept with a before and after picture of the data along with the user and datetime. These can become very large so only critical tables tend to be included.


Sometimes is expedient to keep all data changes in a repository and keep only the latest information in a high performance mart. Since everything is kept, space can become an issue.

Oracle Flashback

Oracle databases support flashback technology which can tell you the state of a database at a point in time. By traversing forwards and backwards, you can see exactly when a change was made and by whom (provided you have designed your database correctly).


The general area you refer to is called "content management" or "document management". There are a number of commercial and open-source implementations of systems that are focused primarily on these areas.

Within the field of information architecture, there are practices and procedures for defining metadata that is relevant to your organization.

A specific example of a collection of metadata that is used to describe digital resources (video, web pages, etc.) is the Dublin Core. It provides a vocabulary and usage for metadata such as "creator" and "date" of copyright. Follow those links for more extensive descriptions of various kinds of metadata.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.