Я хочу создать аутентификационную базу данных, которая имеет следующие функции:
- Я использовал Bcrypt, поэтому мне нужно хранить соленый пароль в дБ
- Я разрешаю только логин пользователяна одно устройство за раз, поэтому мне нужно проверить, вошел ли пользователь в данный момент. (is_logged_in)
- Мне нужно, чтобы пользователи подтвердили свой адрес электронной почты / телефон перед добавлением их в учетную запись (email_verified, phone_verified)
- Я хочу сохранить всю информацию о пользователе (firstName, lastName, dateOfBirth и т.хочу сохранить информацию о пользователях, прошедших вход (время, местоположение и т. д.)
- Я хочу поделиться этой базой данных между несколькими приложениями, т.е. использовать одну учетную запись для входа в несколько приложений
Итак, я разработал следующие таблицы (основной ключ выделен жирным шрифтом):
Authentication_Info
UID |Пароль_соль |Is_logged_in |Email_Verified |Phone_Verified
User_Info
UID |FirstName |Фамилия |Email |Расположение |RegisterDate |PhoneNumber |DateOfBirth |isEnabled
SecurityQ / A
UID | SID |SecurityQuestion |SecurityAnswer
Passed_login_info
UID | Время |Расположение |IP |Устройство
После того, как я изменил их на 3NF, я получил следующие таблицы (опять же, основной ключ выделен жирным шрифтом):
Authentication_Info
UID |Пароль_соль |Is_logged_in
User_Info
UID |FirstName |Фамилия |Email_id |Расположение |RegisterDate |Phone_id |DateOfBirth
SecurityQ / A
UID | SID |SecurityQuestion |SecurityAnswer
Passed_login_info
UID | PID |Время |Расположение |IP |Устройство
Token_Verification
Verification_id | UID |TempToken |Expire_Time
Это хороший дизайн?Какие ошибки я сделал?