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