Я не могу ответить на вторую часть вашего вопроса, но описанный вами шаблон называется супер и подтипом в моделировании данных.Если это правильный выбор, нельзя ответить, не зная больше о различиях между этими типами пользователей и о том, как они будут использоваться в приложении.Существуют различные подходы при преобразовании логических супер / подтипов в физические таблицы.
Вот некоторые соответствующие ссылки:
http://www.sqlmag.com/article/data-modeling/implementing-supertypes-and-subtypes
и следующий о подводных камнях и (неправильном) использовании подтипов
http://www.ocgworld.com/doc/OCG_Subtyping_Techniques.pdf
В общем, с прагматической точки зрения я очень неохотно следую вашему выбору и чаще всего решаю создать одну таблицу, содержащую все столбцы.В большинстве случаев существует ряд мест, где приложение должно показывать всех пользователей в каком-либо виде списка с конкретными столбцами для определенных типов (и пустыми, если не применимо для этого типа).Это быстро приводит к несложным запросам и разного рода дополнительному коду для работы с различными таблицами, которые просто не стоят того, чтобы быть «концептуально правильными».
Две причины, по которым я все еще делю подтипы на разные таблицы:если подтипы настолько различны, что не имеет никакого логического смысла иметь их в одной таблице, и если количество строк настолько велико, что издержки «ненужных» столбцов при помещении их в одну таблицу фактически начинают иметь значение