Размер поля для формы регистрации пользователя в MySQL? - PullRequest
2 голосов
/ 27 февраля 2011

Когда я добавляю информацию о пользователе в MySQL через регистрационную форму PHP, существуют ограничения на поля данных (например, имя - 20 макс. Символов, электронная почта - 18 символов, дополнительная информация 200, пароль - 12 символов и т. Д.)

Должен ли я создать точно такие же поля в таблице MySQL или я должен определить более длинные поля?

Есть ли какие-либо преимущества от этого, а не просто создавать все строковые поля, например Длина 500 символов?

При сохранении возраста как целого числа, следует ли мне использовать маленькое целое число (то есть с максимумом 256) или нет?

Ответы [ 4 ]

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

Предложите вам быть либеральным с длиной столбцов вашей базы данных (для вашего varchar), но строго соблюдать требования к размеру / длине.

Бизнес-логика может со временем меняться. Ваш уровень приложения будет хранителем и исполнителем этих правил.

Ваша база данных не должна часто приспосабливаться к изменяющимся бизнес-правилам в отношении длины. Определение столбца типа varchar(100) сегодня ничего не стоит. Длина может варьироваться до 100, поэтому производительность и объем памяти не пострадают.

Изменения / поддержка приложений и баз данных стоят дорого; хранилище базы данных дешево.

Некоторые другие подробные предложения, если хотите:

  • не хранить age. Получите его из даты (даты рождения) с помощью математики (Today-Birthdate).
  • пароли не должны храниться или иметь максимальную длину!
  • все ваши строковые поля - определите их как varchar(256) или 1024 и покончите с ними. Пусть ваше приложение обеспечивает соблюдение бизнес-правил дня.
1 голос
/ 27 февраля 2011

В общем, это не имеет значения.Важной частью является то, как вы проверяете информацию на стороне сервера.

  1. Убедитесь, что введенные данные не превышают размер столбца.Если вы этого не сделаете, вы можете столкнуться с проблемами, при которых mysql будет автоматически обрезать данные.

  2. Не ограничивайте размер пароля.Если кто-то хочет ввести пароль из 200 символов, сообщите им.Вы должны хранить его в хеше хранения , а не в виде обычного текста, поэтому точная длина не должна иметь значения.

  3. Всегда правильно храните ваши типы данных.Если вы ожидаете целочисленный возраст, сохраните его в целочисленном столбце.Нет реальной причины хранить его в виде строкового столбца.

  4. Что касается остальных ваших ограничений, то это действительно зависит от приложения больше, чем что-либо другое.Если вы ожидаете ограничение в 200 символов, сохраните его в VARCHAR(200).Но если вы только предполагаете, сохраните его в типе TEXT, чтобы пользователь мог вводить столько, сколько ему хотелось бы.Но это больше зависит от приложения и варианта использования, чем что-либо еще ...

0 голосов
/ 27 февраля 2011

Если ваше приложение не является огромным, а ваша БД будет огромной, это должно иметь очень мало значения с точки зрения производительности.Я бы сказал, что вы должны дать себе немного больше места в полях MySQL, так как намного проще изменить максимальную длину формы регистрации, чем максимальную длину MySQL позже.Использование smallint для возраста хорошо.Или нет.Как правило, вы не должны допускать, чтобы поля занимали больше места, чем им нужно, но я бы на всякий случай добавил себе отступы.Опять же, это не должно иметь большого значения.

0 голосов
/ 27 февраля 2011

Если вы используете табличный тип MyISAM, это будет немного более эффективно для запросов, если вы сохраните статическую длину записи.Поэтому, если вы можете использовать поля char фиксированного размера вместо varchar, это лучше (если все поля в записи статичны).Однако все указанное вами количество символов будет заблокировано в памяти, поэтому вам нужно решить, является ли использование памяти более важным.

...