Моделирование имени и фамилии отдельно

32

Какие аргументы следует учитывать при проектировании новой системы и нужно ли хранить имя человека как одно поле или отдельно как имя / фамилию?

Плюсы для одного поля:

  • Упрощенный интерфейс
  • Нет двусмысленности при попытке ввести имя человека, у которого очень длинное имя (часто неясно, какая фамилия / имя ...)
  • Меньшая сложность при обработке заголовков (например, нет необходимости в отдельном поле для ввода «MD» или «Dr.»)

Плюсы для сплит поля:

  • Персонализированное общение возможно "Дорогой мистер Х" или "Дорогая Джули"
  • Если используемому веб-сервису необходимо отдельно указать имя / фамилию, его можно легко предоставить.
  • Лучший выбор для любой отрасли со строгими требованиями к идентификации (например, медицинские, государственные и т. Д.)
  • Более безопасный выбор, так как вы всегда можете вернуться к одной альтернативе поля

Видите ли вы дополнительный аргумент, который не указан выше?

Обновление: вопрос в том, какие дополнительные (= не указаны в вопросе) аргументы могут быть перечислены для каждого решения. Я думаю, что предоставление мнений вместо возможных плюсов и минусов ведет дискуссию в неправильном направлении. Каждый разработчик должен принять свое решение по этой проблеме, цель этого вопроса - собрать список нетривиальных аргументов, которые могут быть оценены при необходимости.

Иштван Девай
источник
11
Что вы пытаетесь сделать с этими именами? У вас есть юридические требования? Есть ли какие-либо последствия, кроме отображения имени пользователя?
Darkhogg
9
Распределение имени / фамилии не поддерживает людей только с одним именем, таким как «Шер».
JacquesB
77
Я советую вам прочитать следующую статью: kalzumeus.com/2010/06/17/… Это действительно откровение, когда вы думаете об именах.
Питер Б
10
Вы могли бы рассмотреть задать этот вопрос на User Experience , сообщество могло быть в состоянии предложить различные точки зрения по этому существу проблемы пользовательского интерфейса.
11684
9
@PieterB Некоторые пункты этой статьи сомнительны, и иногда вам приходится делать предположения, чтобы добиться цели. Эта статья не дает полезных советов о том, как обрабатывать имена. Если имя содержит символы, отличные от Юникода, что вы делаете, позволяете пользователю загружать картинку? Что если есть невизуальные аспекты - разрешить видео со звуком? Что, если название - это искусство исполнения, которое можно исполнить только в полночь в Гонконге? В какой-то момент вы должны стать реальными и приступить к решению проблем, вместо того чтобы изучать теоретические примеры, с которыми ваша пользовательская база никогда не столкнется.
Восстановить Монику

Ответы:

50

Имя и фамилия не являются полезными понятиями. Имена работают по-разному в разных странах. В большинстве азиатских стран фамилия пишется первой, но она все еще используется для сортировки, так что вы можете указать ее по имени, и сортировка будет неправильной или по фамилии, и будет отображаться. Кроме того, есть страны, такие как Исландия, где они вообще не используют фамилии, а вместо этого дают имя отца. Таким образом, они просто сортируют по имени.

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

  • Персонализированное общение возможно "Дорогой мистер Х" или "Дорогая Джули"

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

  • Если используемому веб-сервису необходимо отдельно указать имя / фамилию, его можно легко предоставить.

Если . Если вы зависите от другой службы, вы заблокированы для их плохой выбор. Это не преимущество для ваших собственных проектов.

  • Лучший выбор для любой отрасли со строгими требованиями к идентификации (например, медицинские, государственные и т. Д.)

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

  • Более безопасный выбор, так как вы всегда можете вернуться к одной альтернативе поля

На самом деле, из-за двусмысленности с азиатскими именами, это не так ясно, как вы можете.

Ян Худек
источник
2
Если приложение используется в разных частях света, метки полей должны быть локализованы вместе с тем, как они комбинируются / используются.
JeffO
5
@JeffO, реальная проблема в том, что в наши дни вы, скорее всего, будете иметь людей из разных стран в одной системе, поэтому вам нужно создать систему и найти способ вставки в нее имен разных культур, чтобы она работала разумно согласованно , Не входите в эту кроличью нору, если она вам действительно не нужна.
Ян Худек
4
@IstvanDevai в Калифорнии был судебный процесс, когда контракт был объявлен недействительным, поскольку кредитные законы требовали «фамилии». У человека была двойная испанская фамилия, но когда его спросили о фамилии, была дана первая (отцовская) фамилия, которая является обычной. Другая сторона потеряла дело о взыскании, потому что имя в контракте не было его «фамилией», то есть в конце его полного имени. Пример того, как first / last вызывает путаницу, и не является полностью синонимом данных имен / фамилий.
6
@Casey - второстепенные имена должны быть включены в данное поле имен, потому что это то, что они есть: вторичные имена. Если бы у меня был доллар за каждый раз, когда я видел латиноамериканца, у которого нет второго имени, но двойная фамилия, полученная в поле для второго имени (и самое главное), я бы уже вышел на пенсию. Если вы хотите знать, как позвонить человеку, выделите для этого поле, отдельное от имени. Тогда Варфоломей Фрэнк Эдвард Смит Веллингтон может сказать вам, чтобы называть их Бартом. Мы можем говорить по-английски, но здесь есть люди, не говорящие по-английски, и их имена тоже вводятся.
4
-1. Хотя сам ответ не является полностью неправильным, он не имеет особого смысла для рассматриваемого вопроса. ОП ищет дополнительные аргументы для использования либо одного поля, либо двух полей для имен людей. Называется ли оно «первым / последним» или «дано / сюр», это не фокус, это просто метки, которые имел в виду ОП. Все остальные моменты кажутся мне очень мнительными, и, исходя из моего личного опыта создания и развертывания приложений для крупных клиентов, предположения ОП полностью нормальны и просто случаются именно так. Этот ответ просто пытается аргументировать параметры вопроса.
AnoE
31

Единственный аргумент, который имеет значение, это каковы требования вашей системы?

Вам нужно иметь дело только с одной культурой? Если это так, соответствовать этой культуре. В противном случае планируйте интернационализацию (как уже отмечали другие).

Нужно ли вам получать данные для работы с государственными формами, медицинскими или другими правовыми / системными требованиями? Следуй тому, что диктуют. Если это означает имя и фамилию, сделайте это. Если это означает что-то другое, сделайте это.

У вас есть требование к API с именем и фамилией (или это достаточно вероятно, чтобы оправдать игнорирование YAGNI)? Делай то, что имеет смысл там.

Если вам нужны персонализированные сообщения, разумно ли просто спросить кого-то его предпочтительное имя и сохранить это?

Требования вашей системы должны определять, что вы делаете. Делай то, что должен, а ЯГНИ остальное.

Becuzz
источник
7
Больше нет такой вещи, как «одна культура». Даже самые маленькие общины имеют смешанные культурные нормы и языки.
BobDalgleish
7
@BobDalgleish Правда, но иногда это не имеет значения. Иногда стоимость поддержки нескольких культур заставляет деловых людей просто говорить «нет».
Becuzz
9
@BobDalgleish Предположительно, какая культура доминирует на рынке, для которого разрабатывается приложение? Я не думаю, что это на самом деле так загадочно или редко.
Кейси
3
@BobDalgleish - «культура» не имеет значения. Никто не спрашивает о вашей культуре, когда вам выдаются документы. Если бы мне нужно было поддерживать только Сербию (там, где я сейчас нахожусь), я бы включил имя и фамилию, так как они определены в каждом документе, выпущенном в этой стране, и все. Неважно, что ваша культура. Ваш паспорт, водительские права и т. Д. Будут иметь имя и фамилию, период.
Давор Адрало
2
@icirellik Неверно каким образом? Являются ли эти вещи (ограничения длины и т. Д.) Неправильными, если вы пытаетесь идеально моделировать вселенную? Безусловно. Но меня никогда не просили идеально моделировать вселенную и всеми возможными способами, чтобы кто-то мог выбрать имя. Должен ли я учитывать имена клингонов? Нет. Но почему нет? Кто-то может сделать это когда-нибудь (честно говоря, меня не удивит, если кто-то сделает это сейчас). Но наступает момент, когда вы просто знаете, что будут некоторые вещи, которые просто не будут работать с вашей моделью. И дополнительное время разработки для каждой возможности просто не стоит. (продолжение ...)
Becuzz
5

Если у вас есть несколько способов отображения и / или использования имен, вам, вероятно, понадобятся отдельные поля. Наряду с вводом данных, вы можете предоставить обратную связь, чтобы показать пользователю, как они будут использоваться. То, как вы их объедините, может привести к конвертации в одно поле в будущем.

Есть несколько ярлыков, которые показывают: Приветствие или Отображаемое имя: Имя + Фамилия Организация / Сортировка: Фамилия, Имя

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

JeffO
источник
5

Я согласен со многим из того, что сказал @JanHudec, хотя я хотел бы остановиться на этом немного подробнее:

  • Вы должны знать, каковы ваши реальные требования, но проще объединить информацию, чем разделить ее после повторного объединения.
  • Сортировка всегда будет проблемой, так как правила могут отличаться в зависимости от региона и культуры.
  • Многие культуры не соответствуют вашей, что приводит к ошибочным предположениям. (Это самая большая точка Яна)

Терминология важна

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

Как далеко вы должны разбить его?

Существуют понятия титула (г-н д-р миссис и т. Д.) Или порядковый номер (младший, старший, III и т. Д.) И даже сертификаты (PhD, MS, PCAM и т. Д.), Которые могут быть важны в зависимости от контекст и цель.

Во многих регионах есть концепция множественных фамилий (отцовская и материнская), а в некоторых нет. При заполнении форм людям иногда приходится делать сложный выбор, какое имя использовать, например, используя отцовскую фамилию для «фамилии» в американской форме, или придумывая фамилию на основе имени отца (Янсон ).

Хотя в Америке принято иметь одно или несколько отчеств, их часто игнорируют за пределами вашей семьи.

Сортировка

Это помогает иметь специальное поле для имени сортировки. Таким образом, вы можете устранить неоднозначность правил при создании записи. Это также гарантирует, что имена будут отсортированы в правильном порядке через международные границы.

Общие практики

Ваши реальные требования определяют, насколько правильно вы должны относиться к именам. Если вы создаете правительственный или банковский веб-сайт, то у вас больше требований для хранения и обработки имен, чем что-то неформальное, например, Facebook.

Неофициальные руководящие принципы

  • Есть одно поле, которое описывает, как пользователь хочет быть известным
  • Сортировка и отображение использует это одно имя

Полу Формальные Руководства

  • Есть одно поле для псевдонима, или как пользователь хочет обратиться
  • Есть два поля, одно для данного имени и одно для фамилии (фамилия должна быть необязательной)
  • Рассчитать поле сортировки на основе локали и заданной комбинации / фамилии
  • Используйте псевдоним при обращении к пользователю напрямую
  • Используйте формальное имя при перечислении людей

Формальные руководящие принципы

  • Это продиктовано существующими политиками и процедурами для организации, которую вы поддерживаете
  • Вам нужно столько полей, сколько максимальное количество частей имени, которые вы будете поддерживать, семантически названных для того, что они есть.
  • Включите поле сортировки, которое обрабатывает сортировку, как в полуформальном случае.
  • Отображение также обычно продиктовано существующими правилами и процедурами. Вам нужно ознакомиться с ними.
Берин Лорич
источник
Неужели даунвотер хотел бы уточнить? Возможно, я что-то пропустил?
Берин Лорич
Мне кажется, это исчерпывающий и самый прагматичный совет, данный здесь.
Джесси Кларк
4

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

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

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

Поэтому я бы предпочел решение, в котором у вас есть одно поле имени и, возможно, дополнительные поля, которые пользователь заполняет, что подсказывает, как обратиться к пользователю - что-то похожее на то, что делают многие авиакомпании, когда вы покупаете билет онлайн. Это также может решить проблему разделения имен, если вам это нужно для упомянутого вами внешнего веб-сервиса.

KjMag
источник
1
Предположительно, если вы действительно локализуетесь, вы можете использовать разные шаблоны для разных языков
Кейси,
4

Более того, на что указывают @JanHudec и @KjMag, даже в культурах / языках, очень близких к английскому, это становится проблемой. Взять хотя бы немецкий. У вас есть понятие Ворнамен, Имя, Нахнамен, Фамилия и Руфим, имя, которое вы называете. Возьмите моего отца, например, у него есть 3 имени, в его свидетельстве о рождении они перечислены в порядке Кристоф Стефан Андреас. И у него есть одна фамилия. Как вы думаете, как его зовут?

Правильный ответ: Андреас. Это его Rufname, в Америке он называет это своим именем, соответствующим американскому шаблону. Таким образом, вы можете предположить, что в Германии последнее из ваших имен - это имя, которое вы называете, но у вас есть мой брат: Кристоф Себастьян Герберт Мария. (Теперь я отдал, что мы баварцы) Или моя сестра Кристина Габриэле. Как вы думаете, какие имена они называются? Себастьян и Кристина соответственно.

Я бы третьи ответы, которые говорят одно поле для полного имени. И я бы добавил к этому: возможно, добавьте еще одно поле для фамилии / фамилии и задайте вопрос: по какому имени вы будете отсортированы в списке? И, наконец, последнее поле для: как вы хотите обратиться?

Hangman4358
источник
1
«Фамилия» - это просто другое имя для «фамилия», а не слово, которое появляется последним в последовательности. Фамилия Накаяма Таро - Накаяма.
Кейси
2
Чтобы добавить еще один случай: моего дедушку звали «Antoon Leendert van Ingen Schenau» => имя (имена): «Antoon Leendert»; называется: "Leen"; Фамилия: «Van Ingen Schenau» для сортировки под «Ingen». Ни вызывающее имя, ни правильная сортировка не могут быть легко получены из записи имени / фамилии.
Барт ван Инген Шенау
1
@ Кейси в соответствии с кем? например, в Японии это «верхнее имя», а не «фамилия».
эйс
1
@eis В Японии это 名字. Но здесь, в англоязычном мире, «фамилия» является синонимом «фамилия», а не буквально «последнее слово в чьей-то последовательности имен».
Кейси
1
@ EIS Я не уверен, что вы хотите сказать. Пользователи не будут знать разницу, если вы вызовете поле базы данных last_name вместо фамилии; один - просто синоним другого. Если ваша задача - представить программное обеспечение не говорящим по-английски, то это не имеет значения, потому что «фамилия» и «фамилия» являются английскими терминами, и вы должны использовать этот термин на любом языке, на котором вы хотите локализовать страницу. Если проблема заключается в том, что вы хотите, чтобы люди, которые не знают английского, могли использовать английскую страницу, ну, это кажется довольно нерешительным способом решения актуальной проблемы.
Кейси,
-2

Если вы собираетесь использовать глобальное приложение, вы, вероятно, смоделируете имя человека как массив строк. Например, рассмотрим имя президента в фильме "Идиократия":

  • Дуэйн Эльзондо Маунтин Росы Герберт Камачо

Это его полное имя. Имя содержит 6 элементов в массиве. Для культуры США первое имя - это первый элемент в массиве (Dwayne), а фамилия - последний элемент в массиве (Camacho). Но это не всегда так.

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

Кроме того, в случае США у нас есть случаи, когда последний элемент не является фамилией, такой как:

  • Dwayne Elzondo Mountain Dew Герберт Камачо-младший

Таким образом, возможно, поле суффикса имени или нужно будет проанализировать последний элемент, ища известные суффиксы на основе культуры, чтобы получить правильную фамилию.

Таким образом, всегда лучше хранить имя в одном элементе (полное имя), а затем применять к нему подпрограмму «стандартизации / санитарии», чтобы при необходимости анализировать конкретные элементы. Аналогичная стратегия существует для адресов. Они обычно собираются в одну строку, а затем отправляются в службу для анализа деталей.

Джон Рейнор
источник
3
Одно поле, а затем «разбор» - действительно плохая идея. Рассмотрим человека, чья фамилия "Старший": как вы это анализируете? А как насчет фамилии де ла Жолла?
BobDalgleish
Я упоминал разбор или поле суффикса имени. Если требуется универсальное решение, потребуется анализатор имен, чтобы вы могли обрабатывать каждый случай, такой как «Senior» и «de la Jolla». Можно использовать ИИ и научить его распознавать имена. Бьюсь об заклад, если бы он дал ему достаточно большой набор данных, он мог бы распознать «де ля Жоллас» мира. Но это одно из возможных решений. Конечно, сбор отдельных частей также возможен, но у этого есть свои недостатки.
Джон Рейнор