Какие аргументы следует учитывать при проектировании новой системы и нужно ли хранить имя человека как одно поле или отдельно как имя / фамилию?
Плюсы для одного поля:
- Упрощенный интерфейс
- Нет двусмысленности при попытке ввести имя человека, у которого очень длинное имя (часто неясно, какая фамилия / имя ...)
- Меньшая сложность при обработке заголовков (например, нет необходимости в отдельном поле для ввода «MD» или «Dr.»)
Плюсы для сплит поля:
- Персонализированное общение возможно "Дорогой мистер Х" или "Дорогая Джули"
- Если используемому веб-сервису необходимо отдельно указать имя / фамилию, его можно легко предоставить.
- Лучший выбор для любой отрасли со строгими требованиями к идентификации (например, медицинские, государственные и т. Д.)
- Более безопасный выбор, так как вы всегда можете вернуться к одной альтернативе поля
Видите ли вы дополнительный аргумент, который не указан выше?
Обновление: вопрос в том, какие дополнительные (= не указаны в вопросе) аргументы могут быть перечислены для каждого решения. Я думаю, что предоставление мнений вместо возможных плюсов и минусов ведет дискуссию в неправильном направлении. Каждый разработчик должен принять свое решение по этой проблеме, цель этого вопроса - собрать список нетривиальных аргументов, которые могут быть оценены при необходимости.
database-design
data
domain-model
data-modeling
Иштван Девай
источник
источник
Ответы:
Имя и фамилия не являются полезными понятиями. Имена работают по-разному в разных странах. В большинстве азиатских стран фамилия пишется первой, но она все еще используется для сортировки, так что вы можете указать ее по имени, и сортировка будет неправильной или по фамилии, и будет отображаться. Кроме того, есть страны, такие как Исландия, где они вообще не используют фамилии, а вместо этого дают имя отца. Таким образом, они просто сортируют по имени.
Термины «имя» и «фамилия» (или «фамилия») лучше в этом отношении, но я все равно избегал бы их, если бы в этом не было крайней необходимости (т.е. они есть в официальных документах, таких как паспорта, поэтому они вам нужны), потому что они просто усложняют ситуацию.
За исключением того, что вы понятия не имеете, следует ли называть данного человека по имени, фамилии или как. И не начинайте меня с языков, в которых есть винительный падеж - вы не можете вывести винительный падеж из именительного падежа в целом. Нет, лучше просто спросить пользователя, как ему позвонить.
Если . Если вы зависите от другой службы, вы заблокированы для их плохой выбор. Это не преимущество для ваших собственных проектов.
Нет, это неправильный выбор для них. Официальные документы обычно используют термины «имя» и «фамилия» (или «фамилия»), которые являются менее двусмысленными.
На самом деле, из-за двусмысленности с азиатскими именами, это не так ясно, как вы можете.
источник
Единственный аргумент, который имеет значение, это каковы требования вашей системы?
Вам нужно иметь дело только с одной культурой? Если это так, соответствовать этой культуре. В противном случае планируйте интернационализацию (как уже отмечали другие).
Нужно ли вам получать данные для работы с государственными формами, медицинскими или другими правовыми / системными требованиями? Следуй тому, что диктуют. Если это означает имя и фамилию, сделайте это. Если это означает что-то другое, сделайте это.
У вас есть требование к API с именем и фамилией (или это достаточно вероятно, чтобы оправдать игнорирование YAGNI)? Делай то, что имеет смысл там.
Если вам нужны персонализированные сообщения, разумно ли просто спросить кого-то его предпочтительное имя и сохранить это?
Требования вашей системы должны определять, что вы делаете. Делай то, что должен, а ЯГНИ остальное.
источник
Если у вас есть несколько способов отображения и / или использования имен, вам, вероятно, понадобятся отдельные поля. Наряду с вводом данных, вы можете предоставить обратную связь, чтобы показать пользователю, как они будут использоваться. То, как вы их объедините, может привести к конвертации в одно поле в будущем.
Есть несколько ярлыков, которые показывают: Приветствие или Отображаемое имя: Имя + Фамилия Организация / Сортировка: Фамилия, Имя
Если вы не уверены, как это будет использоваться в будущем, начните с разделенных имен, а затем вы можете объединить их в одно поле, когда поймете, что это все, что вам действительно нужно. Дело не в том, что сложно написать алгоритм для разделения одного поля имени на имя и фамилию, но вы ошибетесь в нескольких, и людям действительно не нравятся ошибки с их именами. С помощью разделенных полей пользователи могут настроить способ ввода своего имени, когда увидят, как оно используется. Объединение их в одно постоянное поле имени менее рискованно.
источник
Я согласен со многим из того, что сказал @JanHudec, хотя я хотел бы остановиться на этом немного подробнее:
Терминология важна
Такие термины, как имя и фамилия или фамилия, имеют семантическое значение, и ваша база данных всегда должна отражать семантику ваших данных. Такие термины, как имя и фамилия, имеют позиционное значение, как правило, основанные на английских и американских представлениях о том, как работают имена. Используйте правильную терминологию для семантики ваших данных.
Как далеко вы должны разбить его?
Существуют понятия титула (г-н д-р миссис и т. Д.) Или порядковый номер (младший, старший, III и т. Д.) И даже сертификаты (PhD, MS, PCAM и т. Д.), Которые могут быть важны в зависимости от контекст и цель.
Во многих регионах есть концепция множественных фамилий (отцовская и материнская), а в некоторых нет. При заполнении форм людям иногда приходится делать сложный выбор, какое имя использовать, например, используя отцовскую фамилию для «фамилии» в американской форме, или придумывая фамилию на основе имени отца (Янсон ).
Хотя в Америке принято иметь одно или несколько отчеств, их часто игнорируют за пределами вашей семьи.
Сортировка
Это помогает иметь специальное поле для имени сортировки. Таким образом, вы можете устранить неоднозначность правил при создании записи. Это также гарантирует, что имена будут отсортированы в правильном порядке через международные границы.
Общие практики
Ваши реальные требования определяют, насколько правильно вы должны относиться к именам. Если вы создаете правительственный или банковский веб-сайт, то у вас больше требований для хранения и обработки имен, чем что-то неформальное, например, Facebook.
Неофициальные руководящие принципы
Полу Формальные Руководства
Формальные руководящие принципы
источник
Помимо того, на что указал @JanHudec и с которым я согласен, также стоит отметить, что во многих странах люди имеют более одной фамилии, поэтому одно поле фамилии может быть неактуальным. Например, в Испании люди имеют две фамилии, и они используют только одну или обе из них в зависимости от ситуации.
Кроме того, вы не должны персонализировать общение, основываясь на своих предположениях, поскольку в некоторых культурах вы можете показаться грубым, называя людей по фамилиям, а в случае других это может быть наоборот.
Кроме того, в некоторых культурах акцент делается на такие формы, как «миссис» против «мисс», и они также могут сочетать это слово с именами или фамилиями в зависимости от конкретного случая.
Поэтому я бы предпочел решение, в котором у вас есть одно поле имени и, возможно, дополнительные поля, которые пользователь заполняет, что подсказывает, как обратиться к пользователю - что-то похожее на то, что делают многие авиакомпании, когда вы покупаете билет онлайн. Это также может решить проблему разделения имен, если вам это нужно для упомянутого вами внешнего веб-сервиса.
источник
Более того, на что указывают @JanHudec и @KjMag, даже в культурах / языках, очень близких к английскому, это становится проблемой. Взять хотя бы немецкий. У вас есть понятие Ворнамен, Имя, Нахнамен, Фамилия и Руфим, имя, которое вы называете. Возьмите моего отца, например, у него есть 3 имени, в его свидетельстве о рождении они перечислены в порядке Кристоф Стефан Андреас. И у него есть одна фамилия. Как вы думаете, как его зовут?
Правильный ответ: Андреас. Это его Rufname, в Америке он называет это своим именем, соответствующим американскому шаблону. Таким образом, вы можете предположить, что в Германии последнее из ваших имен - это имя, которое вы называете, но у вас есть мой брат: Кристоф Себастьян Герберт Мария. (Теперь я отдал, что мы баварцы) Или моя сестра Кристина Габриэле. Как вы думаете, какие имена они называются? Себастьян и Кристина соответственно.
Я бы третьи ответы, которые говорят одно поле для полного имени. И я бы добавил к этому: возможно, добавьте еще одно поле для фамилии / фамилии и задайте вопрос: по какому имени вы будете отсортированы в списке? И, наконец, последнее поле для: как вы хотите обратиться?
источник
Если вы собираетесь использовать глобальное приложение, вы, вероятно, смоделируете имя человека как массив строк. Например, рассмотрим имя президента в фильме "Идиократия":
Это его полное имя. Имя содержит 6 элементов в массиве. Для культуры США первое имя - это первый элемент в массиве (Dwayne), а фамилия - последний элемент в массиве (Camacho). Но это не всегда так.
Можно применять правила, специфичные для культуры, чтобы определить «первое» имя, если имя фактически является последним элементом, и так далее, в зависимости от того, как имена работают в разных культурах / локалях.
Кроме того, в случае США у нас есть случаи, когда последний элемент не является фамилией, такой как:
Таким образом, возможно, поле суффикса имени или нужно будет проанализировать последний элемент, ища известные суффиксы на основе культуры, чтобы получить правильную фамилию.
Таким образом, всегда лучше хранить имя в одном элементе (полное имя), а затем применять к нему подпрограмму «стандартизации / санитарии», чтобы при необходимости анализировать конкретные элементы. Аналогичная стратегия существует для адресов. Они обычно собираются в одну строку, а затем отправляются в службу для анализа деталей.
источник