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

StackOverflow https://stackoverflow.com/questions/30485

  •  09-06-2019
  •  | 
  •  

Вопрос

У меня есть простая веб-форма, которая позволит неаутентифицированным пользователям вводить свою информацию, включая имя.Я установил для поля имени ограничение в 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 и Национальная служба здравоохранения.Очевидно, они используют разные стандарты.

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top