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


138

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

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

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

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


1
Проверьте этот связанный вопрос для большого обсуждения предмета.
— Крис Марасти-Георг

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

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

Ответы:


142

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


3
Ссылка должна быть обновлена ​​по состоянию на 22 октября 2010 года. Я гуглил по адресу: site: *. Gov.uk Назовите «35 символов» и нашел этот документ правосудия.
— Тони Р

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

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

Чуть больше 54 символа
— mestachs

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

27

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

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

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

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


Спасибо за ответ, даже если это было какое-то время.
— EndangeredMassa

9

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


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

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

6

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


6

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

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


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

3
Очевидно, что руководство написано исходя из того, что человек может иметь длинное имя (до 35 символов) или длинную фамилию (до 35 символов), но маловероятно, что ОБА части имени будут такими длинными.
— Ян Нельсон

3

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

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

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

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

ИМЯ
ПАЦИЕНТА Формат / длина: max an70

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

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



2

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


1

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

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


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

0

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

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


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


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.