Here is the structure of the problem I am trying to solve. I want to give *each* user the ability to create a table of their own, which again, can be used by all the users in my system. The catch is that, a table can be of a type T belonging to a finite, pre-defined set S. Each table type has a complete set of legal columns that the user can choose to include in his/her table. In all cases, the user's table will be a subset of the columns associated with the type.
So: my option is to create each of the table in the complete table type set with max columns for each user, but that's a terrible amount of redundancy. Any better way to handle this?