|
|
|
| На некоторых (да, практически на всех) сайтах регистрация пользователя осуществляется стандартно: пользователь вводит свой логин, пароль, емайл. Далее ему на указанный емайл приходит письмо с предложением активировать учетную запись. После чего он получает доступ на сайт.
Насколько такая система регистрации оправдана и необходима? Ведь для того, чтобы ее реализовать, приходится добавлять (или иметь) специальный столбец в таблице пользователей - actived. Это типа флага - активирован или нет.
Или есть другие варианты регистрации и получения доступа пользователя к сайту?
Спасибо. | |
|
|
|
|
|
|
|
для: baston
(23.04.2010 в 14:36)
| | Этот столбец много места не съест, а польза от него есть даже если для регистрации не требуется подтверждения e-mail (например, чтобы пользователей банить). | |
|
|
|
|
|
|
|
для: cheops
(23.04.2010 в 14:52)
| | У меня немного по-другому реализовано (в набросках).
У меня есть столбец status, в котором находятся айди из доп.таблицы status (active, locked). По умолчанию у меня все пользователи при регистрации становятся active.
Если я правильно понимаю, то суть вашего ответа и моей реализации одна. | |
|
|
|
|
|
|
|
для: baston
(23.04.2010 в 15:06)
| | и зачем если не секрет?
достаточно было бы таблицы например с названием locked
в которую бы попадали айди опальных юзеров + время окончания бана + примечание (причина бана и т.д.)
а уж те граждане которые не попали в эту таблицу естественно со статусом active по умолчанию. | |
|
|
|
|
|
|
|
для: Valick
(23.04.2010 в 15:13)
| | Ну не всегда нужна такая избыточная функциональность по бану (особенно учитывая тот факт, что для управления этим хозяйством нужно будет интерфейс программировать). | |
|
|
|
|
|
|
|
для: cheops
(23.04.2010 в 15:15)
| | ну тут я больше думал о том чтобы избавиться от хранения ненужной информации например на форуме отираются 300 000 человек из них 20 000 в бане, так зачем же держать ненужную инфу (то что они активны) для 280 000 человек?
к тому же статусов может быть сколь угодно многоразных, и при моем подходе один и тот же юзер может находиться в неограниченном* количестве статусов одновременно. | |
|
|
|
|
|
|
|
для: Valick
(23.04.2010 в 15:34)
| | Ну если народу столько, то да, оправдано, если больше 200 человек не наберется, то можно не возиться. Собственно вы правы в том, что тут чем больше нормализация, тем лучше, удобнее и окупает все затраты при следующем росте системы. Другое дело, что для обслуживания этой лишней таблицы потребуется интерфейс, который не всегда нужен и может только путать администратора приложения. | |
|
|
|
|
|
|
|
для: Valick
(23.04.2010 в 15:13)
| | Ну, например, чтобы потом можно было добавить новую сущность (так это называется?), типа gold - пользователь, имеющий право на доп.возможности в системе. | |
|
|
|
|
|
|
|
для: baston
(23.04.2010 в 15:28)
| | вот-вот... прочитайте мой ответ Хеопсу. | |
|
|
|
|
|
|
|
для: Valick
(23.04.2010 в 15:34)
| | То есть, опять отдельная таблица связей: id_user - id_status? | |
|
|
|
|
|
|
|
для: baston
(23.04.2010 в 15:55)
| | можно просто id_user - status | |
|
|
|
|
|
|
|
для: Valick
(23.04.2010 в 16:06)
| | Вот проясните здесь пожалуйста, какой тип поля вы имели в виду под status? У меня в этом столбце предполагалось иметь айди. Тогда можно действительно иметь массу статусов.
А в вашем варианте (как я понял) каждому айди пользователя будет соответствовать текстовое значение статуса? | |
|
|
|
|
|
|
|
для: baston
(23.04.2010 в 16:13)
| | это абсолютно не принципиальная разница для логики
если бы у Вас статусу 1 соответствовал краткий пересказ 1 и 2 тома войны и мир, а статусу 2 соответственно 3 и 4 том, то да не вынести их в отдельную таблицу бы ло бы преступлением по отношению к MySQL :)
а так используя текст мы проиграем в размере (он станет больше) и даже скорости выборки по этому полю (правда этого мы можем и не заметить), но выиграем в простоте кода (и возможно в общей скорости запроса) тут уже нужны экперементы. | |
|
|
|
|
|
|
|
для: baston
(23.04.2010 в 15:06)
| | А ну в таком случае, действительно не зачем ещё один дополнительный столбец вводить. | |
|
|
|
|
|
|
|
для: baston
(23.04.2010 в 15:06)
| | >У меня есть столбец status, в котором находятся айди из доп.таблицы status (active, locked).
Как-то несовсем понятно.
И множественное число у глагола - в столбце находятся id - пугает. Сильно пугает. | |
|
|
|
|
|
|
|
для: Trianon
(23.04.2010 в 15:41)
| | чем пугает? 0 - active, 1- locked, 2- gold всего аж три статуса :) | |
|
|
|
|
|
|
|
для: Trianon
(23.04.2010 в 15:41)
| | В таблице users есть столбцы id_user, name, user_id_status.
Есть другая таблица - status со столбцами: id_status и name_status.
Для каждого конкретного пользвоателя в ячейке user_id_status будет содержаться значение из таблицы status, а конкретно - соответствующий id_status. | |
|
|
|
|
|
|
|
для: baston
(23.04.2010 в 15:50)
| | давайте теперь прикинем... у Вас есть юзер Вася, который проплатил статус голд, на радостях напился и сболтнул матом лишнее за что ему злой модератор впаял бан на три часа... где Вы будете хранить информацию о том, что до бана у него был статус голд, который по окончании бана не мешало бы восстановить? | |
|
|
|
|
|
|
|
для: Valick
(23.04.2010 в 15:59)
| | Логично хранить, как вы и предложили, в таблице-связке.
Тогда у меня БД уже разрастается таблицами... | |
|
|
|
|
|
|
|
для: baston
(23.04.2010 в 16:05)
| | лучше + одна маленькая таблица, чем + одно большое поле ;)
просто погуглите на счет нормализации таблиц и баз данных даже просто прочитав об этом станет уже легче, ну а если в этом еще и разобраться, то жить станет гораздо легче :) | |
|
|
|
|
|
|
|
для: Valick
(23.04.2010 в 16:07)
| | Да, спасибо. Нашел информацию. | |
|
|
|