In general: An object has a variable amount of custom user data. An administrator can set up the textfields, and the user can type in any text.
example: additional infos (haircolour, favourite movie, etc) in user profiles.
My approach would be to set up a table with one field to referecne the object (user), one or more fields to reference the data (ID, type, etc), and one field to hold the data.
The approach of a coworker of mine would be to alter the table (its structure) every time an administrator sets up (or deletes) a custom field.
Initially I cringed about my coworkers approach, but I didn't know why. The more I think about it, the less I think, that my coworker's approach has any flaw. The only reason I dislike it, is because I think, that an apllcation should only alter data, and not the data modell. But hat thought is rather dogmatic.
Do you have any arguments, pro or contra, about these two approaches?
Or does anybody have a better idea?