MYSQL: две таблицы «Регистрация» и «Вход»? Это хорошо, чтобы сделать их одним столом или держать их два разных стола - PullRequest
3 голосов
/ 19 февраля 2011

Две таблицы «Регистрация» и «Вход»?

  • Регистрация -> идентификатор, имя, имя, пол
  • Логин -> идентификатор, адрес электронной почты, имя пользователя, пароль

В php мне нужно взаимодействовать только с Login таблицей. Но во время регистрации через php мне придется использовать два запроса на вставку для вставки в обе таблицы.

Я хочу уменьшить количество запросов, а также оптимизировать базу данных.

Я делаю регистрацию + логин = отдельная таблица .... это хорошая идея, так как при входе в систему мне придется взаимодействовать с большой отдельной таблицей

Ответы [ 3 ]

2 голосов
/ 19 февраля 2011

Это хорошая идея, если существует однозначное сопоставление информации для входа и регистрации. Вы получаете лучшую производительность с одним идентификатором поиска. Может быть, таблица «Пользователи»?

Надеюсь, что в sidenote под «паролем» нет открытого поля пароля, а вместо этого - хэш пароля. У вас никогда не должно быть паролей в виде открытого текста.

1 голос
/ 19 февраля 2011

Я в основном согласен с amccausl & ispcity, но хранение непроверенных данных регистрации и проверенных данных регистрации может быть полезным для безопасности, поскольку это означает, что любой, кто имеет злонамеренное намерение и не имеет проверенного идентификатора, только когда-либо имеет доступ к таблице содержащие непроверенные данные, а не данные, принадлежащие всем вашим «реальным» пользователям.

Как указывает ispcity, производительность вряд ли будет проблемой в любом случае, но было бы также просто выполнить копирование данных (от «регистрации» до «проверенных» таблиц), выполняемых ( предположительно, в автономном режиме) программа, которая отправляет письмо с подтверждением, а не во время регистрации.

1 голос
/ 19 февраля 2011

Я думаю, что если у вас есть менее 1 000 000 записей в таблице базы данных или даже менее 10 000 000 записей и правильные индексы, не должно быть проблем с обработкой этих данных в одной базе данных.

Я бы сохранил данные в одной таблице и установил флаг для новых пользователей, которые еще не подтвердили свою учетную запись по электронной почте. Поэтому для запроса на вход в систему я бы добавил «ГДЕ ... И подтверждено = 1» или что-то подобное, чтобы запретить новым пользователям вход в систему.

У меня есть таблица базы данных, которая содержит почти 15 000 000 записей с 27 полями и имеет размер 1,9 ГБ. С некоторыми установленными индексами я могу отправить запрос и получить ответ в течение 0,2 - 0,4 секунд ...

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