У меня есть простая веб-форма, которая позволит неаутентифицированным пользователям вводить свою информацию, включая имя. Я присвоил полю имени ограничение в 50 символов, чтобы оно совпадало с таблицей моей базы данных, где это поле - varchar (50), но затем я начал задумываться.
Более уместно использовать что-то вроде типа столбца Текст или мне следует ограничить длину имени чем-то разумным?
Я использую SQL Server 2005, на случай, если это важно в вашем ответе.
РЕДАКТИРОВАТЬ: я не видел этот более широкий вопрос относительно аналогичных вопросов.
Ответы:
В каталоге стандартов данных правительства Великобритании предлагается 35 символов для каждого из указанных имени и фамилии или 70 символов для одного поля, содержащего полное имя.
источник
Я знаю, что опоздал на этот, но я все равно добавлю этот комментарий, так как другие могут прийти сюда в будущем с похожими вопросами.
Остерегайтесь настройки колонок в зависимости от локали. Для начала, это настраивает вас на кошмар обслуживания, оставляя в стороне тот факт, что люди мигрируют и берут свои имена с собой.
Например, испанцы с такими дополнительными фамилиями могут переехать и жить в англоязычной стране и могут ожидать, что их полное имя будет использовано. Русские имеют отчества в дополнение к своим фамилиям, некоторые африканские имена могут быть значительно длиннее, чем большинство европейских имен.
Сделайте так, чтобы каждый столбец был настолько широким, насколько это возможно, с учетом потенциального количества строк. Я использую 40 символов каждый для имени, других имен и фамилии, и никогда не обнаружил никаких проблем.
источник
Я обычно использую varchar (255) (255 - максимальная длина типа varchar в MySQL).
источник
Если это полное имя в одном поле, я обычно использую 128 - 64/64 для первого и последнего в отдельных полях - вы просто никогда не узнаете.
источник
@ Ян Нельсон: Мне интересно, видят ли другие проблемы там.
Допустим, у вас есть разделенные поля. Всего 70 символов, 35 для имени и 35 для фамилии. Однако, если у вас есть одно поле, вы пренебрегаете пробелом, разделяющим имя и фамилию, сокращая вас на 1 символ. Конечно, это «только» один персонаж, но это может иметь значение между тем, кто вводит свое полное имя, а кем-то нет. Поэтому я бы изменил это предложение на «35 символов для каждого из заданного имени и фамилии или 71 символ для одного поля, содержащего полное имя».
источник
В Великобритании есть несколько государственных стандартов, которые успешно справляются с большей частью населения Великобритании - паспортный стол, Агентство по лицензированию водителей и транспортных средств, офис Deed Poll и NHS. Они используют разные стандарты, очевидно.
Изменение вашего имени с помощью Deed Poll позволяет 300 символов ;
NHS использует 70 символов для имен пациентов
Паспортный стол допускает 30 + 30 первых / последних, а водительских прав (DVLA) всего 30.
источник
Мы используем 50.
источник
То, что вы на самом деле спрашиваете, это связанный, но существенно другой вопрос: как часто я хочу обрезать имена, чтобы разместить их в базе данных? Ответ зависит как от частоты различных длин имен, так и от выбранных максимальных длин. Эта озабоченность уравновешивается опасениями относительно ресурсов, используемых базой данных. Учитывая, как мало разницы в накладных расходах между разными максимальными длинами для поля varchar, я обычно ошибаюсь из-за того, что никогда не вынужден усекать имя и делать поле настолько большим, насколько я осмелился.
источник
Обратите внимание, что во многих культурах есть «вторые фамилии», часто называемые фамилиями. Например, если вы имеете дело с испанцами, они оценят, что фамилия будет отделена от их «фамилии».
Лучше всего определить тип данных для компонентов имени, использовать их для типа данных для фамилии и настроить в зависимости от локали.
источник
Среднее имя составляет около 6 букв. Это оставляет 43 для фамилии. :) Похоже, вы могли бы сократить его, если хотите.
Главный вопрос, как вы думаете, сколько строк у вас будет? Я не думаю, что varchar (50) убьет вас, пока вы не получите несколько миллионов строк.
источник
в зависимости от того, кто будет использовать вашу базу данных, например, африканские имена будут делать с varchar (20) для разделения фамилии и имени. однако, это отличается от нации к нации, но ради экономии ресурсов базы данных и памяти, разделите поля фамилии и имени и используйте varchar (30), думаю, это будет работать.
источник