Как записывать имя человека, не прибегая к полям «название, имя, фамилия»? - PullRequest
0 голосов
/ 22 августа 2011

Для нашего приложения, у которого есть веб-сайт и серверная часть, нам очень нравится идея захвата «полного имени», чтобы люди могли использовать различные способы выражения чьего-либо имени.Однако;

  • Поставщик платежных услуг хочет, чтобы "все имена, фамилии" были обязательными для карточных платежей
  • Ребята из новостной рассылки хотят, чтобы единственное "имя", чтобы компания могласчитается более «личным»
  • Учетные записи, которые люди хотят сортировать по «фамилии»
  • Мы, программисты, заметили в нашей базе данных следующих клиентов:
    • SimonМария - ее «имя» - Мария, а ее «фамилия» - Симон
    • Данеш - только одно имя (хотя я предполагаю, что оно написано в соответствующем наборе символов по-другому!)
    • 陳心蘭 - нетуверен, что это имя или фамилия (предположительно, этот клиент написал бы в римском наборе символов, если бы сделал это)

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

Итак, без хавинад поле для каждой части "Right Hon.Чев.Джон Баррингтон Смит Доу III OBE LLD MEng "или только в одно поле, где может быть введено только" Джон ", как вы на практике структурируете свое приложение и базу данных, чтобы вас потом не поймали?

IВы уже просмотрели сообщения SO, такие как: Имя, отчество, фамилия. Почему не полное имя? и Структура имени пользователя в отдельной таблице базы данных , но не виделалюбые примеры того, как люди применяют метод лучшей практики (захватывая «полное_имя») в реальном мире, когда приходится иметь дело с другими системами, которые, возможно, не являются современной или лучшей практикой ...

Спасибо!

РЕДАКТИРОВАНИЕ - для ясности

Ответы [ 3 ]

1 голос
/ 22 августа 2011

Во-первых, нам нужно разделить проблему между «представлением» и «хранением». Все 3 примера, которые вы приводите, представляют собой проблемы с представлением, и их легко можно решить, сохранив имена в полях «title, firstname, lastname».

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

Самый гибкий способ реализации хранилища - это использование понятия «часть имени» и хранение частей имени в дочерних таблицах. Возможно, вы захотите добавить именную часть для «известного как». Например:

table People
Person_ID    d.o.b
1            1 Jan 1988
2            3 Feb 1989
3            11 Oct 2001

table NameParts
namepart_ID     description
1              Title
2              FirstName
3              Lastname
4              Suffix

table Person_Name
person_id    namepart_id      value
1            1                Right Hon.
1            1                Chev.
1            2                John 
1            2                Barrington
1            3                Smythe-Doe
1            4                III 
1            4                OBE 
1            4                LLD 
1            4                MEng
2            2                Joe
2            3                Blob
3            1                Ms
3            2                Mary
3            3                Hinge
1 голос
/ 03 сентября 2011

Лучший ответ, который я получил от подобного вопроса:

Личные имена в глобальном приложении: что хранить

Ответ Понта, связанный с документом, который конкретно не описывает, как записать имя в базе данных, но он обеспечивает наиболее полное описание проблемы до сих пор:

http://ns.hr -xml.org / 2_5 / HR-XML-2_5 / CPO / PersonName.html

Возможно, если у кого-то есть опыт реализации баз данных, который придерживается этого, тогда смело добавляйте другой ответ!

0 голосов
/ 22 августа 2011

Похоже, у вас обязательно должны быть поля 'title', 'first_name' и 'фамилия'.

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

Возможно, стоит иметь несколько полей: заголовок (и), имя, отчество, фамилию, квалификацию(или как вы хотите их называть, это также может относиться к именам поколений, т. е. III)

Вторым способом вам потребуется больше полей, но вашим пользователям не придется повторно вводить данные для своихполное имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...