Каков разумный предел длины полей имени человека?

У меня есть простая веб-форма, которая позволит неаутентифицированным пользователям вводить свою информацию, включая имя. Я установил для поля имени ограничение в 50 символов, чтобы оно совпадало с таблицей моей базы данных, где поле равно varchar(50), но затем я начал задаваться вопросом.

Уместнее ли использовать что-то вроде типа столбца Text или мне следует ограничить длину имени чем-то разумным?

Я использую SQL Server 2005, если это имеет значение в вашем ответе.

РЕДАКТИРОВАТЬ: я не видел этого более широкого вопроса по аналогичным вопросам.


person EndangeredMassa    schedule 27.08.2008    source источник
comment
Проверьте этот связанный вопрос, чтобы узнать о подробностях обсуждения этой темы.   -  person Chris Marasti-Georg    schedule 27.08.2008
comment
Следует отметить, что в наш век глобализации varchar обычно НЕ является правильным типом данных, скорее всего, вам следует использовать nvarchar.   -  person Tao    schedule 16.07.2010
comment
@Tao: Поскольку он использует MS SQL Server, я согласен. Но VARCHAR является правильным типом данных в других реализациях SQL, которые лучше поддерживают UTF-8.   -  person dan04    schedule 22.12.2010


Ответы (10)


Данные правительства Великобритании Каталог стандартов предлагает 35 символов для каждого имени и фамилии или 70 символов для одного поля, содержащего полное имя.

person Ian Nelson    schedule 27.08.2008
comment
Ссылка должна быть обновлена ​​с 22 октября 2010 г. Я искал в Google: site: *. Gov.uk Имя 35 символов и нашел этот документ Justice.gov.uk/guidance/docs/electoral-reg-standards.pdf - person Tony R; 23.10.2010
comment
Их ссылки кажутся очень плохими ... по состоянию на 8/2012: http://webarchive.nationalarchives.gov.uk/+/http://www.cabinetoffice.gov.uk/media/254290/GDS%20Catalogue%20Vol%202.pdf - person Thomas B; 12.08.2012
comment
Самое длинное разумное полное имя, которое я нашел, - Жизель Мари-Луиза Маргерит ЛаФлеш (длина 39 байт). - person user1154664; 04.11.2012
comment
Чуть больше, 54 символа: gw.geneanet.org/ - person mestachs; 13.05.2015
comment
Новая Зеландия ограничивает полные имена: они должны быть менее 100 символов, включая пробелы, и не могут содержать символы или числа. Я полагаю, что дефисы в фамилиях разрешены. - person Glutnix; 27.05.2015

Я знаю, что опаздываю с этим, но я все равно добавлю этот комментарий, так как другие могут прийти сюда в будущем с аналогичными вопросами.

Остерегайтесь настройки размеров столбцов в зависимости от языкового стандарта. Для начала он настраивает вас на кошмар обслуживания, не говоря уже о том, что люди мигрируют и берут с собой свои имена.

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

Сделайте каждый столбец максимально широким, учитывая возможное количество строк. Я использую по 40 символов для имени, других имен и фамилий и никогда не обнаруживал никаких проблем.

person Community    schedule 18.02.2009
comment
Спасибо за ответ, даже если это было давно. - person EndangeredMassa; 19.02.2009

Я обычно использую varchar (255) (255 - максимальная длина типа varchar в MySQL).

person pix0r    schedule 27.08.2008
comment
И вы также резервируете 255 символов места в вашем графическом интерфейсе и других носителях, где отображаются имя / фамилия? ;-) - person AndrewBourgeois; 12.11.2014
comment
Раньше я думал: почему не всегда использовать varchar (255)? Теперь я понимаю, что ограничения длины в основном относятся к пользовательскому интерфейсу, а ограничения, от которых дизайнеры могут зависеть при разработке своего пользовательского интерфейса, связаны с использованием слишком большого количества места в базе данных. - person jdg; 06.10.2018

Если это полное имя в одном поле, я обычно использую 128 - 64/64 для первого и последнего в отдельных полях - вы просто никогда не узнаете.

person Greg Hurlman    schedule 27.08.2008
comment
Я бы сказал, что для полного имени достаточно 64 символов. - person DollarAkshay; 22.03.2021

@ Ян Нельсон: Мне интересно, видят ли другие проблему в этом.

Допустим, у вас есть разделенные поля. Всего 70 символов, 35 для имени и 35 для фамилии. Однако, если у вас есть одно поле, вы пренебрегаете пробелом, разделяющим имя и фамилию, сокращая вас на 1 символ. Конечно, это «всего лишь» один символ, но это может иметь значение, когда кто-то вводит свое полное имя, а кто-то нет. Поэтому я бы изменил это предложение на «35 символов для каждого имени и фамилии, или 71 символ для одного поля, содержащего полное имя».

person Thomas Owens    schedule 27.08.2008
comment
Смысл следования этому документу заключается в том, чтобы вы могли взаимодействовать с другими правительственными системами Великобритании, поэтому вы не можете индивидуально увеличить число с 70 до 71 и завершить это дело, иначе системы с ограничением в 70 символов отключат ваш текст. (Вы не должны хранить данные в обеих формах в своей собственной системе.) На самом деле все становится еще хуже, поскольку полное имя включает не только семейство / данное, но также заголовок и суффикс, которые также имеют ограничение в 35 символов каждая, для Максимум 143 символа в добавленных полях. Отстойно быть разработчиком, которому приходится обмениваться данными с обеими формами хранения имен. - person mmitchell; 08.05.2013
comment
Очевидно, что руководство написано исходя из предположения, что у человека может быть длинное имя (до 35 символов) или длинное имя семьи (до 35 символов), но вряд ли ОБЕИ части имени будут такими длинными. - person Ian Nelson; 10.12.2013

В Великобритании существует несколько государственных стандартов, которые успешно применяются для большей части населения Великобритании: паспортный стол, агентство по выдаче водительских прав и лицензий на транспортные средства, офис Deed Poll и NHS. Очевидно, они используют разные стандарты.

Изменение вашего имени с помощью опроса Deed Poll позволяет использовать 300 символов ;

Законных ограничений на длину вашего имени нет, но мы устанавливаем ограничение в 300 символов (включая пробелы) для вашего полного имени.

NHS использует 70 символов для имен пациентов

ИМЯ ПАЦИЕНТА
Формат / длина: макс. An70

Паспортный стол разрешает 30 + 30 первых / последних и водительских прав (DVLA) всего 30.

Обратите внимание, что у других организаций будут свои собственные ограничения на то, что они будут показывать в документах, которые они производят - для паспортного стола HM ограничение составляет 30 символов для каждого вашего имени и вашей фамилии, а для DVLA ограничение составляет всего 30 символов для вашего полное имя.

person Steve Cooper    schedule 30.12.2015

На самом деле вы спрашиваете родственный, но существенно другой вопрос: как часто я хочу обрезать имена, чтобы уместить их в базе данных? Ответ зависит как от частоты использования разной длины имен, так и от выбранной максимальной длины. Это беспокойство уравновешивается опасениями по поводу ресурсов, используемых базой данных. Учитывая, насколько небольшая разница в накладных расходах между разными максимальными длинами для поля varchar, я обычно ошибаюсь в том, что мне никогда не приходится усекать имя и делать поле настолько большим, насколько я осмеливался.

person Wedge    schedule 27.08.2008

Обратите внимание, что во многих культурах есть «вторые фамилии», которые часто называют фамилиями. Например, если вы имеете дело с испанцами, они будут признательны за то, чтобы фамилия была отделена от их «фамилии».

Лучше всего определить тип данных для компонентов имени, использовать их для типа данных для фамилии и настроить в зависимости от локали.

person ColinYounger    schedule 27.08.2008
comment
Нет никаких преимуществ в уменьшении ограничений в локали, которые статистически имеют меньшие значения - размер поля не влияет на занимаемое пространство, если некоторые значения действительно не занимают эти дополнительные разрешенные символы (и тогда это означает, что вы все равно сделали правильный выбор) ! - person Tao; 16.07.2010

Среднее имя составляет около 6 букв. Остается 43 для фамилии. :) Похоже, вы могли бы его сократить, если хотите.

Главный вопрос - сколько строк, по вашему мнению, у вас будет? Я не думаю, что varchar (50) убьет вас, пока вы не получите несколько миллионов строк.

person Craig    schedule 27.08.2008
comment
Если у вас есть 50 миллионов значений от 10 до 15 символов в столбце varchar (20) и те же 50 миллионов значений в столбце varchar (50), они будут занимать точно такое же пространство. В этом весь смысл varchar, а не char. - person Tao; 16.07.2010

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

person Themba Mabaso    schedule 07.05.2014