Як моделювати більше одного "прізвища"?


11

У іспаномовних країнах ми використовуємо більше одного прізвища, наприклад:

Ім'я ↘ ↙ Прізвище
                Педро Артуро Родрігес Лойола
        Прізвище ↗ ↖ (?)

Я намагаюся моделювати дані для імені пацієнта. У нашій країні це важливо, тому я не можу нехтувати другим прізвищем, але хотів би створити додаток, який може мати сенс для інших розробників, особливо з англомовних країн.


Я створив подібне запитання на English.SE , він має деяку думку про те, чому важливо зберігати обидва значення.


15
Чи є найменша причина, через яку значення "прізвище" не повинно містити пробілів? Ви дійсно хочете використовувати одне прізвище в одних випадках використання, а всі прізвища в інших? Якщо ні, то я не бачу проблеми. Залиште "прізвище" саме так, як його ввів користувач, і ви добре.
Кіліан Фот

3
в голландській мові тип «ван де Ієц» досить поширений. просто нехай у полі прізвища містяться пробіли
храповик фрік

2
Чи є причина, що ви не могли просто мати єдине nameполе?
asfallows

2
@asfallows: тому що якщо ми друкуємо список пацієнтів, нам потрібно буде сортувати їх за прізвищем. Наприклад, якщо ваше ім'я "Хосе Карлос Фернандо Альмодовар Сото", то як я повинен заздалегідь знати, що "Альмодовар" це перше прізвище?
Пабло Олмос де Агілера C.

2
@FedericoPoloni: Кожен, хто шукає пацієнта за прізвищем, ймовірно, знає прізвище пацієнта.
Mooing Duck

Відповіді:


19

З: Як рахується DBA?

A: 0, 1, багато

У людини є 1 або більше імен та 1 або більше прізвищ, і, можливо, назва. Ці назви мають до них наказ. Саме від локалізації та культури визначати, як звернутися до людини.

ContactId
NamePart {"John", "Smith", ...}
NameType {назва, вказано, сім'я, ???}
Замовлення {1, 2, 3, ...}

Для Pedro Arturo Rodríguez Loyola(контакт №1) у вас буде чотири ряди:

1 / Педро / дано / 1
1 / Артуро / дано / 2
1 / Родрігес / родина / 3
1 / Лойола / сім'я / 4

Таким чином, вона не обмежується будь-якою структурою, але все ще має сенс для даного контакту там. Що ви робите, коли у вас є хтось із 3 або 4 прізвищами чи прізвищами? чи дівоче прізвище?

Зауважте, що я змінив порядок з попереднього перегляду цієї відповіді - замовлення - це порядок над усім ім'ям, а не просто замовлення в межах типу імені, оскільки в деяких культурах прізвище походить першим, можливо, ви розділилися заголовка частини "Сер Джон Сміт II".

Додаткове читання


2
+1 Але цей програміст співпрацював з багатьма учасниками офшорної команди, але найдовше ім’я, яке я коли-небудь бачив, все ще "Пабло Дієго Хосе Франсиско де Паула Хуан Непомучен Марія де лос Ремедіос Криспініано де Ла Сантісіма Тринідад Руїс і Пікассо". Зловживання дитиною чи ні?
Елліотт Фріш

У @Darkhogg utnapistim це перше посилання "Це" у своїй відповіді. Це один із цих «остаточних посібників».

Мені подобається ідея як концепція, але представити її користувачеві нелегко, що вона запише власне ім’я? Єдине, що я можу придумати, це щось на кшталт контактних полів "GMail", які дозволяють вам "додати" частини імені. Чи замислювались ви над тим, як реально використовувати таку модель даних?
Пабло Олмос де Агілера К.

1
@ Петерис часто в медичних додатках (в оригінальному питанні згадується "пацієнт") потрібно обходити структуровану назву для інтеграції з іншими системами. Наявність неструктурованих даних означає, що у вас виникнуть значні труднощі з інтеграцією з іншими системами, навіть такими, як переведення пацієнта з однієї лікарні в іншу або заповнення полів форми для страхових претензій. І, отже, проблема, як структурувати дані таким чином, що дозволяє маніпулювати ними всіма необхідними способами.

1
@Ben вільне текстове поле не працює добре, коли програма вимагає сортування за прізвищем або при спробі взаємодії зі старою системою EDI для передачі пацієнта з швидкої допомоги до лікарні (або навпаки) або заповнення відповідні поля у різних формах страхових претензій. Це все ключові області, де легше мати трохи даних, що позначають кожну частину імені, ніж намагатися присвоїти значення після факту. Вільне текстове поле є приємним, але іноді це просто не варіант для роботи з іншими системами.

10

Це може допомогти. Пост жартівливий, але проникливий.

[Ім'я] [Прізвище] не є універсальним правилом для імен. Це просто звичайне місце, де ти живеш. Якщо ви накладете на це правила, рано чи пізно у вас з’являться люди, яких не можна додати до вашої системи.

По суті, переконайтеся, що ви наклали якомога менше обмежень, а також дозвольте гнучкість між фактично збереженим іменем та будь-якими зайвими.

Я б пішов з чимось подібним:

  • Відображуване ім’я (для послідовних імен при відображенні форм / даних): (має бути [перше] [останнє]).
  • Інші імена / повне ім’я (для пошуку, точнішого узгодження тощо). Тут дозвольте користувачеві написати що завгодно, до заданої довжини; довжина повинна бути більшою, ніж ви думаєте, повинна бути достатньо розумною - наприклад, якщо ви думаєте, що 40 символів має бути достатньо, поставте 500 :)).
  • Адресація (пан, місіс, пані, молодша, ср., -San, спеціальне значення (наприклад, Tov.) Тощо).
  • внутрішній ідентифікатор (цей ідентифікатор повинен однозначно ідентифікувати кожну особу у вашій програмі, запобігаючи зіткнення імен).

Наприклад, моє ім’я не є правильним для запису в більшості європейських мов через специфічну для румуни діакритику (тому щоразу, коли я пишу своє ім’я за межами своєї країни, технічно я пишу його неправильно - щоб люди могли його читати та вимовляти).

Кілька цікавих прикладів і посилань:

http://en.wikipedia.org/wiki/Nicholas_Barbon

http://en.wikipedia.org/wiki/Prince_%28musician%29

http://en.wikipedia.org/wiki/P_diddy

http://en.wikipedia.org/wiki/Burmese_name


Ще одна річ, яку слід врахувати, - це сортування. Часто бажано мати можливість сортувати список людей за їх прізвищем (або лише ім'ям, або першим словом на прізвище тощо). Якщо програмі потрібно це зробити, то нам потрібен певний спосіб ідентифікації їх "сортування імені".
БенМ

Але мені в цілому подобається ця ідея. Замість того, щоб представляти імена на основі культурних припущень, ми представляємо їх на основі функцій, які вони повинні виконувати в системі.
БенМ

Мені подобається ваша відповідь. Я не розумію, хоча це може допомогти мені вписати імена. Мені потрібно сортувати їх, наприклад, ми зазвичай використовуємо прізвище. Як, наприклад, розміщення їх у полі / стовпчику під назвою "інші імена" або "відображувальне ім'я" могло б мені допомогти в цьому? Кудос для бурманської назви, хоча. Дивовижно.
Пабло Олмос де Агілера C.

@pablox, моя думка полягала в тому, що концептуально ви не повинні ставитися до імені людини як до ідентичності, а як до метаданих для ідентичності (а ідентифікатор повинен бути унікальним кодом). Ви можете вважати ці метадані впорядкованими відповідно до потреб вашої програми. Наприклад, ви можете вибрати роль "сортування імені" до другого імені (якщо є) у "групі жетонів імен", роль "відображуваного імені" як першого маркера та роль "адресації імені" як "доктор | містер | місіс | | тощо" + "відображуване ім'я".
utnapistim

Сортування імен звичайно буде "сортуванням телефонної книги", де ви ігноруєте різні додатки до імені та сортуєте у важливій частині. Наприклад, "ван де Богарт" було б відсортовано за "Богарт", а не "ван". Як обробляти латиноамериканське ім’я з кількома частинами, буде залежати від культури - де воно використовується та як його використання.
Філ Перрі,

0

Це не складна річ ..... або я щось пропускаю.

Мають ці поля: name(varchar), lastname(varchar).

Потім форма для заповнення повного імені, приклад: Jorge Patricioта прізвище Pèrez Gonzáles.

У пошуку у вас є багато операторів порівняння, наприклад, в MySQL, likeякі допоможуть вам шукати.

Переважно складені прізвища завжди в порядку. Pérez Gonzálezв основному таким чином називається його прізвище, а не в зворотному порядку.

Ви будете надмірно проектувати свою базу даних іншим способом.


1
Що робити, якщо прізвище буде вказано першим? посилання

1
@MichaelT, що з цим? Експлуатуйте поле і шукайте в імені та прізвища таблицю для будь-якого виникнення значення. Завжди маючи на увазі, що у вас є поле для пошуку в Google, інакше ви можете просто мати такі форми, як "Ім'я:" та "Прізвище:"
JorgeeFG

0

Існує три типи особистих імен: Полініми (імена з кількома компонентами), Мононіми (імена лише з одним компонентом, колишні «Cher») та Піктоніми (імена, представлені малюнками, колишній Художник ).

Людина може мати кілька імен, граючи ролі , наприклад, Юридичне ім'я та бажане ім'я.

У полінімі є кілька компонентів, від яких слід вказати ім’я та прізвище. Існує кілька видів прізвищ:

  1. Регулярні прізвища (Джонс)
  2. Прізвища з двома стволами ("Вон Вільямс" або "Луї-Дрейфус")
  3. Справжні складені прізвища {dateName: "Прізвище Хуана Пабло": "Fernández de Calderón", другорядне Ім'я: "Гарсія-Іглесіас"}

3 це важливо, оскільки , як очікується, він буде звертатися як пан Фернандес де Кальдерон , а не пан Фернандес де Кальдерон Гарсія-Іглесіас.

Тому в основному є обов'язкове поле прізвища та нульове поле вторинного імені.


0

Як ви моделюєте різні компоненти чийогось імені? Ви цього не робите . Замість моделювання окремих полів для всіх компонентів чиєїсь юридичної назви, а також їх кращого привітання, звернення, неофіційного імені, імені користувача, прізвиська та ручки, моделюйте лише те, що вам важливо.

Коефіцієнти - ваша система дійсно піклується про щонайбільше чотири "імена" для когось:

  1. Display Name , яке дозволяє їм знати , що вони увійшли в систему.
  2. Неофіційна назва , по якому ви б звернутися до них по телефону.
  3. Офіційна назва , з яким ви б звертатися до них по листуванню.
  4. Сортування Ім'я , яке виражає # 2 таким чином , що це буде впорядкованим у списку.

Багато систем просто використовують чиєсь офіційне ім’я для №1 та №2, залишаючи єдині імена, про які ви дбаєте, як "рядок, що представляє ім'я користувача" та "рядок, який відображає спосіб сортування першої".

З точки зору моделювання даних визначте лише ті значення, які вам насправді знадобляться. Як найкраще оптимізувати зберігання цих значень - це детальна інформація про реалізацію - таку, з якою ви будете викликати головні болі, лише якщо переоптимізуєтесь. (Звичайно, ви могли "просто" зберегти ім'я та прізвище, але що б ви зробили для того, хто має лише одне ім'я?)


-1

Розглянемо це по-іншому.

Ваша система повинна підключатися до інших систем, не важливо, наскільки ви гнучкі, якщо вони не є. То що роблять системи, з якими вам потрібно передавати дані?

Коли я телефоную на прийом до лікаря, вони запитують мене про мою дату народження, потім система показує їм список людей, які відповідають, потім вони запитують мене про своє ім’я, нарешті, запитують мою адресу, щоб підтвердити, що вони обрали правильна людина.

Лікар повинен знати ім’я, яке звертається до мене, коли розмовляє зі мною; вони також повинні знати ім'я, щоб поставити на лист, якщо вони мені пишуть.

Тому не просто одне текстове поле, яке дозволяє пробіли. Немає жодної причини навіть відокремлювати перше від прізвища, якщо ви не обробляєте їх тим самим.


3
Ви заповнюєте форму страхового відшкодування. У ньому є "Прізвище". Людина родом з Японії. Поки ви маєте транслітеровану версію, вам потрібно ввести відповідне прізвище у полі. Яке це слово?

@MichaelT, Що сказати, що всі мають прізвище?
Ян

2
Отримання імені від особи з Японії (або багатьох інших східних країн, що називають прізвище, прізвище вводиться спочатку. Саме так воно і адресовано. Однак при заповненні медичної форми може знадобитися, щоб прізвище та прізвище були різними поля - як взяти одне поле та відповідати правильному полю? Інший приклад - якщо ви сортуєте за прізвищем та дали "Хосе Карлос Фернандо Альмодовар Сото", вам потрібно сортувати, Almodóvarа не Fernando.

@MichaelT, тому існує потреба обробляти прізвище окремо, тому дайте йому це власне поле та сподівайтеся, що людина, яка вводить деталі, зрозуміє східну назву.
Ян
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.