To start off, why would you want users to be able to add fields to your application? Here are a few reasons:

  • You are not sure of the data requirements and want to allow for flexibility early on.
  • You created a??commercial application to sell to multiple customers and you want them to be able to customize the structured data fields.
  • You want to allow customers flexibility to reduce maintenance costs later when they want to add fields.

I'm sure there are others. In any case, user defined fields allow for greater flexibility after an application has been implemented and deployed.

User defined fields can be applied to database-centric applications or object-centric applications. For example, you can add user defined fields to augment an existing table in a database, such as adding fields for height and measurements to contacts if you are a tailor. Or for object-based systems, you could add a comment field to images stored on your iPhone, just so you remember what the context was (which I wanted to do a few days ago).

Once these fields are added, you need to give users the ability to filter and search on their contents and also organize??information based on the field values. This is where the real power of user defined fields comes into play. For systems that include reports, there needs to be a way to dynamically extend the reports to show these fields.

There are some interesting risks around user defined fields, such as those listed in this Stack Exchange article. I'll consider some of these risks in the series??and discuss??how to mitigate them.

Next, I'll cover different ways to implement user defined fields.