In particular, I might note that it is a frequent pattern in adding new functionality to an existing app to simply tag on a couple of fields to an existing table to support that new functionality. What is missed in doing this is an analysis for normalization. As a result, one often ends up with tables with long lists of fields, many of which are mutually exclusive, i.e., based on some flag field X is relevant, but with a different setting of the flag field Y is relevant. This is, of course, a violation of normalization.