Должны ли токены сброса пароля находиться в отдельной таблице от таблицы пользователей? - PullRequest
3 голосов
/ 31 августа 2011

.. или я должен просто сохранить их прямо в таблице пользователей, даже если они в основном будут нулевыми?

Ответы [ 2 ]

1 голос
/ 31 августа 2011

В целях нормализации я бы поместил их в отдельную таблицу.

table user
-------------
id integer primary key auto_increment
username varchar
salt_passhash varchar
......

table tokenreset
---------------
id integer primary key auto_increment
user_id integer
when_requested timestamp
all_done boolean default false

Если вы хотите знать пользователей, которым необходимо восстановить свои пароли, выполните:

SELECT u.id, u.username, u.email FROM user u
INNER JOIN tokenreset tr ON (u.id = tk.user_id)
WHERE NOT(tr.alldone)

Или код такого рода.

Таким образом, у вас не будет поля в user, которое не используется в 95% случаев.

1 голос
/ 31 августа 2011

Либо является допустимой реализацией.Это действительно не имеет значения.

Нельзя сказать, что у вас будет достаточно пользователей, которые заботятся об этом дополнительном бите на строку, чтобы сохранить тот факт, что столбец равен NULL.Даже если вы Facebook.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...