Я видел много вопросов, касающихся нескольких учетных записей (например, Facebook, OAuth, Password и т. Д.) И как их обрабатывать при проектировании базы данных, однако я не уверен, как лучше всего удовлетворить мои требования.
У меня есть таблица «Пользователи», каждый из которых может войти в мою серверную систему (веб-приложение), ИЛИ приложение для конечных пользователей, использующее формы для выигрыша.
Когда пользователь зарегистрирован, им может быть предоставлен пользователь.Имя и пароль, или смарт-карта, или и то, и другое.
Некоторые пользователи могут затем использовать свою смарт-карту для входа в мою серверную систему из клиентского настольного приложения, а пользователи с паролем могут войти в систему через Интернет.
Теперь, если у некоторых пользователей есть и пароль, и возможность смарт-карты, а у некоторых есть только пароль ИЛИ опция смарт-карты.
Кроме того, у каждого пользователя есть роль (администратор, пользователь и т. Д.) Инабор из 1x или более кодов аутентификации (это коды доступа, которые используются при входе в систему со смарт-картой).
Поэтому я подумал об использовании следующего подхода.
- Таблица пользователей
- Таблица счетов
- Таблица смарт-карт
- Таблица паролей
Таблица пользователей содержит информацию о пользователе (имя, адрес электронной почты и т. Д.)
Ссылки на таблицу учетных записей с таблицей пользователей показывают, какой тип учетной записи у них есть, а также ссылки на таблицы смарт-карт и паролей, поэтому каждая учетная запись пользователя может иметь одну или несколько смарт-карт и одну или несколькопароли и т. д.
Моя проблема с вышеизложенным означала бы, что у пользователя есть только пароль, запись для смарт-карты будет NULL и т. д. Это нормально?
Есть ли лучшеспособ справиться с этим?
В конце концов, не у всех пользователей будут все способы входа в систему, а у некоторых будет, поэтому я не мог придумать ни одного дизайна, который мог бы избежать значений NULL где-нибудь втаблицы.
Спасибо