Can anyone offer suggestions on how to deal with applications that change their columns at will? Jira, for example, allows the admin to define a set of custom fields for each kind of ticket.

Jira implements this by defining a table for all custom fields, with a field defining which field this is. Does anyone have any suggestions on how to do something similiar without forgoing RI like this method does?