Лично я бы решил, есть ли естественные группировки атрибутов. Вы можете поместить наиболее часто запрашиваемые в пользовательской таблице, а остальные - в отдельную таблицу с отношением один к одному, чтобы таблица не была слишком широкой (мы обычно называем это что-то вроде User_Extended). Если некоторые атрибуты попадают в естественные группировки, они могут вызывать отдельную таблицу, потому что эти атрибуты обычно запрашиваются вместе.
Рассматривая атрибуты, изучите, могут ли некоторые быть объединены в один столбец (например, если пользователь не может simlutaneoulsy быть тремя разными вещами (скажем, стажер, резидент, присутствующий), но только один из них за раз, лучше иметь одно поле и помещать в него данные, а не три битовых поля, которые необходимо перевести. Это особенно верно, если вам нужно использовать оператор case со всеми тремя полями для получения необходимой информации (скажем, заголовка) в составление отчетов. Другими словами, просмотрите ваши атрибуты и посмотрите, являются ли они действительно отдельными или могут ли они быть абстрагированы в более общий.