Каков разумный предел длины полей «Имя»?

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

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

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

Обновлено: Я не видел этот более широкий вопрос по поводу подобных проблем.

Следует отметить, что в наш век глобализации varchar обычно НЕ является правильным типом данных, скорее всего, вам следует использовать nvarchar.

Tao 16.07.2010 11:45

@Tao: Поскольку он использует MS SQL Server, я согласен. Но VARCHAR является - правильный тип данных в других реализациях SQL, которые лучше поддерживают UTF-8.

dan04 22.12.2010 10:13

Загляните в этот связанный вопрос для подробного обсуждения этой темы.

Chris Marasti-Georg 27.08.2008 19:43
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
144
3
119 535
11
Перейти к ответу Данный вопрос помечен как решенный

Ответы 11

Мы используем 50.

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

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

И вы также резервируете 255 символов места в вашем графическом интерфейсе и других носителях, где отображаются имя / фамилия? ;-)

AndrewBourgeois 12.11.2014 16:22

Раньше я думал: «Почему бы всегда не использовать varchar (255)?» Теперь я понимаю, что ограничения длины в основном относятся к пользовательскому интерфейсу, а ограничения, от которых дизайнеры могут зависеть при разработке своего пользовательского интерфейса, связаны с использованием слишком большого количества места в базе данных.

jdg 06.10.2018 22:25

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

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

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

Tao 16.07.2010 11:43

@Tao см. stackoverflow.com/questions/11132357/…

Habeeb Perwad 21.06.2012 10:02
Ответ принят как подходящий

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

Ссылка должна быть обновлена ​​с 22 октября 2010 г. Я поискал в Google: site: *. Gov.uk Имя "35 символов" и нашел этот документ Justice.gov.uk/guidance/docs/electoral-reg-standards.pdf

Tony R 23.10.2010 00:01

Их ссылки кажутся очень плохими ... по состоянию на 8/2012: webarchive.nationalarchives.gov.uk/+/http://…

Thomas B 12.08.2012 03:24

Самое длинное «разумное» полное имя, которое я нашел, - «Жизель Мария-Луиза Маргерит ЛаФлеш» (длина 39 байт).

user1154664 04.11.2012 00:51

Чуть больше 54 символа: gw.geneanet.org/…

mestachs 13.05.2015 08:55

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

Glutnix 27.05.2015 02:19

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

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

Смысл следования этому документу заключается в том, чтобы вы могли взаимодействовать с другими правительственными системами Великобритании, поэтому вы не можете индивидуально увеличить число с 70 до 71 и завершить это дело, иначе системы с ограничением в 70 символов отключат ваш текст. (Вы не должны хранить данные в обеих формах в своей собственной системе.) На самом деле это еще хуже, поскольку полное имя включает не только семейство / данное, но также заголовок и суффикс, которые также имеют ограничение в 35 символов каждая, для забавные 143 символа максимум в добавленных полях. Отстойно быть разработчиком, которому приходится обмениваться данными с обеими формами хранения имен.

mmitchell 08.05.2013 03:46

Очевидно, что руководство написано исходя из предположения, что у человека может быть длинное имя (до 35 символов) или длинное имя семьи (до 35 символов), но вряд ли ОБЕИ части имени будут такими длинными.

Ian Nelson 10.12.2013 19:34

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

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

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

Tao 16.07.2010 11:42

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

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

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

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

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

Спасибо за ответ, даже если это было давно.

EndangeredMassa 19.02.2009 03:58

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

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

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

There is no legal limit on the length of your name, but we impose a limit of 300 characters (including spaces) for your full name.

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

PATIENT NAME
Format/length: max an70

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

Note that other organisations will have their own restrictions about what they will show on the documents they produce — for HM Passport Office the limit is 30 characters each for your forename and your surname, and for the DVLA the limit is 30 characters in total for your full name.

Другие вопросы по теме