Номер 3 - лучший из предложенных вами вариантов (слегка обновлен для уточнения):
- создайте для них таблицу для логина и пароля и всего, что доступно для совместного использования и отдельная таблица для всех других вещей, которые не являются общими и связывают их с FK
За исключением случаев, когда пароль не сохраняется, сохраните хешированную версию соленого пароля.
Альтернативой может быть назначение групп и / или ролей вашим пользователям.Это может быть более гибким, чем фиксированная структура таблиц, что позволяет динамически добавлять новые роли.Но это зависит от ваших потребностей, будет ли это полезно для вас или нет.
Как указал Аарона, в основной таблице вам нужен AccountType
, чтобы гарантировать, что пользователь может иметь только одну из ролей.Вы должны не забудьте проверить значение этого столбца при присоединении к таблицам, чтобы убедиться, что у пользователя активна только одна роль.
Уникальное ограничение на внешний ключ гарантирует, что пользователь может толькоиметь роль один раз.