Как стать автором
Обновить

Комментарии 170

Так вы и до транслитерации по ISO 9 доберётесь: IVAN IVANOVIČ.

Разработчики не всегда задумываются, а точно ли им нужно хранить компоненты имени? Какова цель? Будут ли эти компоненты использоваться по отдельности?

Трудно предугадать. Можно как угодно правильно делать в пределах своей системы, но однажды прилетит интеграция с чужой апихой, где будут поля first и last. И вот ты достаёшь свой тупой ржавый .split(' ') и кромсаешь им чьи-то имена как попало. Это гораздо хуже, чем вкрапления чужой культуры в какие-то там имена полей.

Так существование таких апих - часто как раз следствие того параграфа, что вы цитируете :)

Но не спорю с вами в том, что если вдруг жизненно необходимы именно first и last, то лучше явно спросить у пользователя, как дробить его имя.

Ну если наложить на них санкции с целью бойкота не получится, то придется таки к ним притираться )

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

У нас всё по фэншую :) surname, name и patronymic, упомянутый в статье.

На самом деле, проблема несколько высосана из пальца. Кому какая разница, как в потрохах системы в таблицах называются конкретно эти поля.

Больше режет глаз, когда натыкаешься на поля типа raschetniy_schet - вот это да, проблема.

Да не такая уж и проблема, нормально привыкаешь.
Кому какая разница, как в потрохах системы в таблицах называются конкретно эти поля.
С название переменных тоже самое, мне нормально.

Если вам «raschetniy_schet» нормально, то вам либо обратно в университет на переобучение, либо в официанты

Нормально ему

Ну это явно лучше чем Count (живой пример)

Граф? Орлов, с Парижу :)

даже "raschetniy_schet" лучше чем

column121344 в таблице entity123

Вообще по хрен если есть система управления метаданными

это она и была

1С! 1С! (крестится)

Да, мне нормально, у меня ничего не дергается и глаза не слезятся.
Зачем мне в университет или в официанты?!
Что-бы у меня из-за названий переменных появлялась диарея?!
Нет спасибо.
В университет за знаниями я пойду. Официантом не работал, но если пойду то за заработком.

А вот это грубо. Фу!

Кому какая разница, как в потрохах системы в таблицах называются конкретно эти поля.

сразу вспоминаю андроид:

Пишешь при заполнении нового контакта Хренова Гадя Петрович.

А он потом в списке выводит как Петрович Хренова Гадя и все. И это не смотря на то, что у меня стоит сортировка и вывод "фамилия первой".

Так "ПЕтрович" - это и есть фамилия :D

У меня есть коллега-серб Попович :) Почти такой же богатырь!

name - по немецки это Фамилия, поэтому нет идеала и всем не угодишь

А family по английски - семья :)

Do you speak english ?
-Yes!
-Name?......
-Abdul al-Rhazib.
-Sex?...
-Three to five times a week.
-No, no...I mean male or female?
-Yes, male, female, sometimes camel.
-Holy cow!
-Yes, cow, sheep, animals in general.
-But isn't that hostile?
-Horse style, doggy style, any style!
-Oh dear!
-No, no! Deer run too fast.

Офигеть, как смеялся! Напомнило анекдот.

Стоит мужик возле Букингемского дворца:

-- I fuck this fucking country! I fuck this fucking smog! I fuck this fucking cost!

Подходит полисмен:

-- Stop swearing! This is the Queen's residence!

-- I fuck your Quinn!!!

-- Indeed?

-- In bed!

-- Oh! Sorry, sorry, sorry ...

-- Oh! Sorry, sorry, sorry your Majesty же, ну!

Смое главное не дописал! :)

Да подзабылось как-то :)

Name - это только (реже) полное имя или фамилия в строгой бюрократической трактовке. А так Vorname (имя) + Nachname (фамилия).

Хотя в ключе такого различия и пишет автор статьи.

Нах нейм?

"Форнаме" и "нахнаме" ("перднее" и "посыльное" имена, если юморить). В немецком написание и произношение куда теснее связаны, чем в английском. И да, "нахи" немцы любят. Да.

а как быть например с Исландией где используются не только patronymic но и matronymic names?

YmicName ;)

По фэншую было бы surname, name и patronym.

Имхо Patronym - это анти-феншуй, что вы будете делать с middle name не связанными с родителями / родственниками или с matronymic?

Мне вот интересно, и как же нужно поле "raschetniy_schet" правильно называть? Да так, чтобы другому разработчику не пришлось потом лезть в гугл и переводить обратно, пытаясь восстановить термин российской бухгалтерии.
А какой-нибудь "SNILS" глаз тоже режет?

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

расчетный счет это не термин российской бухгалтерии, это всегда account в разных интерпретациях

Наша бухгалтерия ничем особым не выделяется от международной в данном вопросе

а вот

SNILS это фактически Social_ID но вот конкретно его нельзя так называть, потому что в РФ мало того что он имеет большее значение, так еще и есть чисто наше развлечение переименовывать сущности при иногда незначительном изменении сути, сколько вот было названий у ИП? (я помню ЧП, ПБОЮЛ и ИП) фактически одно и тоже но называть надо и обязательно по разному...и СНИЛС тудаже...учитывая что из идентификатора в ПФР его превратили в уникальный номер человека

Специфический не в том смысле, что обозначает не имеющую аналогов сущность, а в том, что не является транслитерацией международных терминов. Это два русских слова и из "account" обратно они не восстановимы без контекста. Более того, в контексте обычно "аккаунтов" будет много. Как простейший пример посмотрите сберовский QR-код любой ЖКХ.

Как бы то ни было, попытка перевода вместо транслитерации даст совершенно непонятную и неоднозначную переменную.

Как простейший пример посмотрите сберовский QR-код любой ЖКХ.

ну вообще это хоть и выглядит страшно, но вполне стандартно

в платежке юрлица на самом деле две цифры значимые, номер счета и БИК, всякие коррсчета и название банка - предзаполняются онлайн из общедоступных справочников

Государственные платежи - там да чёрт ногу сломит, тут аналогов нет

SNILS это фактически Social_ID но вот конкретно его нельзя так называть

Потому что аббревиатуры, несуществующие в языке, на который осуществляется перевод, как правило, не переводятся.

В легаси, которое мне как-то пришлось разгребать, была сущность custom, которая поначалу встречалась с определителями вроде custom format, custom box и так далее, так что вовсе не выглядела сущностью.

До меня только через пару месяцев дошло, что это "заказ"

Что-то аж вспомнился наш внутренне-локальный мем про privat_massages. И да, к массажам отношения таблица не имела :)

Если в вашем проекте не предполагается заполнение официальных документов или почтовых адресов, не проще ли хранить имя пользователя в виде одной opaque-строки?

Не проще.

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

А ещё - в строку оно будет свалено криво. Один оператор будет начинать с фамилии, другой с имени, а третий вообще забьет инициалы.

Больная тема. Даже если брать только коренных граждан РФ, то есть народы, у которых патронимы отсутствуют.

Ранее у адыгов были патронимы, но не было фамилий. Примерно, как у исландских племен. А у калмыков система патронимов была гораздо сложнее принятой сейчас.

Но административный ресурс всё порешал. До поры - до времени. Пока Жерар Депардьё и Стивен Сигал не стали россиянами. А отчествами так и не обзавелись. Зато у Сигала есть второе имя - Фредерик. Но оно нигде в российских документах не отображается.

Так что, какая разница, как что называть? Как не назови - все равно найдутся исключения.

Я больше того скажу - я как-то заводил пользователя без отчества. Спросили тогда какое (думали забыли) - нам хотели было рассказать явно по сотому разу историю, но нам в общем-то оно было нужно исключительно для уменьшения частоты коллизии. Так что не иностранцами едиными…

А в чем проблема просто сделать поле Patronymic необязательным?

И, кстати, чисто технически, отчества у Жерара и Стивена всё-таки есть. Даже если они сами об том не знают.

У отца Депардьё гуглится два имени, Рене и Максим, Рене-Максимович?

Проще его не использовать вообще в таких случаев, а то хаоса будет ещё больше

И, кстати, чисто технически, отчества у Жерара и Стивена всё-таки есть. Даже если они сами об том не знают.

Не очень правильно "изобретать" для человека имя, которого ни в документах нет, ни он сам им не пользуется. Говорить, что у Стивена Сигала есть отчество - все равно, что называть его Степаном.

Так он может это не воспринимать, как отчество и пусть не пользуется ими. Но технически вполне это поле можно заполнить, как имя отца, да хоть и матери, есть такой тренд сейчас. Но в нормальных формах это поле опционально, на том же сайте РЖД обязательно заполнять отчество только при наличии их в паспорте.

Знакомый испанец (потомок знатного рода) очень долго объяснял в гос.органах, как важно и как правильно полностью записать в паспорте все его Хосе Мария де ла Крус ... общей длиной символов под 60. И где у него surname и сколько штук given names. По-моему, так и оставили "отчество: Мариевич"

не проще ли хранить имя пользователя в виде одной opaque-строки

Если у вас в базе лежит "Александр Сергеевич Пушкин" одной строкой, тогда поиск по фамилии в SQL придется делать через LIKE, что сильно просадит скорость выполнения запроса на большой базе.

Нет, если делать нормально.

Нормально - это как?

Полнотекстовый поиск

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

Где-то здесь в комментариях, к примеру, уже приводили случай двух фамилий в испанских именах.

почти в любой системе лучше как раз заменить поиском через LIKE по полному имени

В таком случае в США вас ждет большое количество ложноположительных результатов поиска так как одно и то же слово может быть и именем (first name) и фамилией (last name) и вторым именем (middle name). Попытайтесь найти человека по фамилии John полнотекстовым поиском по полному имени в какой-нибудь национальной базе на вроде DMV, и вы получите Thomas Edward John, Jr., David John Franco, и John Fitzgerald Kennedy. И только про одного из этих персонажей можно сказать, что он Mr. John.

В таком случае в США вас ждет большое количество ложноположительных результатов поиска

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

И вот когда John Kennedy ищешь, хорошо бы, наверное чтобы этот самый John Fitzgerald Kennedy в списке был.

Перефразируя Чехова:

  • Нет такого американского имени, которое не могло бы стать фамилией.

Называть столбцы надо так, чтобы было понятно ИИ

Мне кажется ваша статья - это пример "лучшее враг хорошего".

Да, first name, last name и middle name не идеальны - но имхо они самые общеупотребительные.
Это как "рогоз" или "мультифора". Не всегда "лучшее" и "правильное" - лучше, так как может вызывать больше вопросов и сложности понимания.

В их (Google) Identity Platform я вообще не вижу компонентов имени, зато есть displayName и screenName

Я с вероятностью 99% уверен, что Гугл разбивает ФИО отдельно. Я думаю просто для фронтового API когда это не нужно они сливают в displayName.

Но вот я смотрю в стандарт OpenID, который повсеместно используется в настоящее время

Given name, middle name, Family name - еще норм и понятно
Но, First name, middle name, Surname - понятнее имхо

patronymic, matronymic - имхо ужас. Как вы назовете это поле? patronymic_or_matronymic? Если patronymic - то туда можно вводить matronymic? и тд и тп

не проще ли хранить имя пользователя в виде одной opaque-строки

Если вы хотите не-расширяемый API и из-за бесполезного перфекционизма огрести проблем в будущем, то пожалуйста!
А в реальности, делать нужно с точностью наоборот: хранить раздельно, а в API возвращать в виде одной opaque-строки если клиентам не нужно раздельно. И API легко меняется без backward-compatibility-changes если нужно его расширить.

Но, First name, middle name, Surname - понятнее имхо

А потом приходит японец и возникает вопрос, которое из них - first.

В этом смысле forename и surname не намного лучше, поскольку "fore" - это "перед", а "sur" - "после".

Middle name это не отчество, и туда его писать некорректно

почему? Имхо middle name это любое имя которое может быть между given name & surname. И это может быть: patronymic, matronymic, surname of mother, surname of father (если вы допустим берете себе фамилию мамы), или просто secondary name.

А вот называть поле patronymic, и писать туда matronymic, surname of mother, surname of father или просто secondary name - это имхо больший анти-паттерн чем middle_name

Да и вообще вся эта статья это "лучшее враг хорошего". Имхо перфекционизм часто создает больше проблем, чем улучшений.

Да, first name, last name и middle name не идеальны - но имхо они самые общеупотребительные.Это как "рогоз" или "мультифора". 

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

Да, first name, last name и middle name не идеальны - но имхо они самые общеупотребительные.

С каких пор middle name общеупотребительный, особенно в контексте русскоязычного сайта (middle name!=отчество)? Я вот в Японии живу и безмерно благодарен тому, что у меня в паспорте нет никаких middle name, и отчество просто отсутcвует в транслитерированном варианте.

А вот жителям стран, которые пихают middle name и не дай боже двойные middle name в паспорта, наплевав, что по миру существует множество name convention, приходится тяжко в Японии. При чём, насколько я понимаю, во многих случаях даже не помогает перевыпуск паспорта с просьбой отпустить middle name, потому что это придётся потом ещё исправлять в дипломах, свидетельствах о рождении и т.д.

Боюсь представить, как бы отреагировал автор на поля first_parent и second_parent ;)

Не-не-не! Это ж дискриминация родителя, поставленного вторым, получается! Тут надо чего-нить типа first_parent и parent_first.

parent_left + parent_right

хотя тут левши с правшами подерутся...

У немцев смешно - у них есть слово "родители" - eltern в множественном числе, а единственное число почти не используется, но оно тоже есть - elternteil дословно что-то типа "часть родителей" или "кусок родителей" :D

Роли обоих родителей в очень многих, если не в большинстве информационных систем полностью эквивалентны. В отличие от имени и фамилии.

(подушню) они кстати не всегда эквивалентны и вообще если смехуечки по этому поводу опустить

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

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

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

Автор, пока писал статью, боролся с искушением добавить шутку на тему «родителя №» ;)

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

First, middle и last адаптируются под любую культуру, и это более или менее общепринято. У нас middle это отчество, во многих странах - второе личное имя. У нас last это фамилия, в Исландии - отчество. Если для нашей предметной области действительно важны различия между этими ситуациями, тогда надо городить сложную структуру данных, где для каждой части имени есть какой-то name_part_type, список которых мы ведём отдельно. В большинстве же случаев достаточно first/middle/last, и даже если мы не знаем, что именно в эти поля пишут жители какой-нибудь экзотической народности - можно не волноваться, наверняка они делают это каким-то общепринятым способом.

наверняка они делают это каким-то общепринятым способом.

Вот только этот способ может отличаться от того, что принят у нас. На первом месте - фамилия/имя клана или то имя, которое при рождении дали?

Так ведь если мы не знаем, что именно значат first/middle/last, то это получается почти эквивалентно просто одному полю name, разве нет? Просто разделенному на тре части полу-произвольным образом.

А если от этих полей всё-таки есть какие-то ожидания, то лучше их как раз и выразить в названии поля.

Эти экзотические китайцы (и присные с тем же форматом ФИО), у которых фамилия строго first

У нас last это фамилия, в Исландии - отчество

Ниже привели пример стандарта из области книгоиздательства, но там name и key name. Если считать last name - это всегда key name (в русской культуре это будет фамилия, в исландской - отчество), то логика прослеживается. Но тогда уж и назвать поле key_name.

под любую?

Salvador Domènec Felip Jacint Dalí i Domènech, Marqués de Dalí de Púbol

можно заглянуть в собственный заграничный паспорт

Вот загран паспорт я бы не считал авторитетным. Уж больно много вопросов возникает в миграционных службах, других стран, когда они видят "имя отчество" в графе "имя".

В ЕС многие системы не поддерживают middle name, и когда ребёнок рождается к примеру в Германии, и ему вписывают отчество в свво о рождении, в очень многих немецких документах возникает "Имя: Александр Сергеевич" . К примеру регистрация по месту жительства, налоговые справки итд итп. Так что я не уверен баг на стороне РФ паспорта, он репродьюсится и внутри Германии в отвязке от российских документов.

Немцы прониклись русским имя-отчество и по желанию клиента охотно вписывают отчество в графу для имени "Vorname(n)" предполагающую несколько собственных имён по христианской традиции. Это, конечно, костыль, т.к. отдельной графы для отчества нет.

Ну да, а потом при оформлении любого переведенного под апостиль доумента в России не находят в тексте перевода графу "отчество" и радостно пытаются вписать всего Александра Сергеевича в графу имя как Б-г на душу положит, потому что докýмент же, раз написано "имя", -- то значит имя, ну типа Хулио Хесус Мария. А ты пишешь слезное заявление начальнику паспортного стола или как он там щас называется, и оный барин(-я) то ли одобрит, то ли нет.

Остается только порадоваться за немецких и прочих еврогражданчиков, в разделе "пол" в паспорте у коих значитcя "X".

загран паспорт я бы не считал авторитетным

При всех недостатках это официальный документ. Предметная область как она есть.

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

Под авторитетностью я имел в виду ссылаться на этот официальный документ как образец построения каких либо систем учитывающих ФИО.

В разных случаях называем по-разному: как привычно заказчику, как уже есть в коробке (которую берем за основу), как придумал архитектор, как есть в соседней системе, с которой нужно обмениваться данными, в общем, единой схемы нет.

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

  1. Одновременно с тремя отдельными атрибутами (first_name, last_name, middle_name) существует еще и атрибут full_name, причем пользователи (или клиенты в широком смысле) могут непосредственно менять как отдельные атрибуты, так и сборный.

  2. Есть ошибки в написании (какой-нибудь midle_name поди еще запомни).

  3. У "объектов системы" (в широком смысле) есть куча атрибутов, зачем они нужны уже никто не знает, в документации нет ни слова. То, что нужно догадаться, что last_name - это фамилия, это просто мелкое неудобство на фоне общей проблемы.

familiya, imya, otchestvo

Транслит выглядит ужасно, конечно. Но представьте, что некая сущность из предметной области не имеет эквивалента в английской/американской культуре и, соответственно, не может быть адекватно переведена. Как бы Вы её назвали?

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

в русской традиции фамилия, имя и отчество не имеют фиксированной позиции: Илья Ильич Обломов и Обломов Илья Ильич — оба варианта правильные

ФИО — это канцелярская форма. И скорее даже атавизм раннего бумажного документооборота.

А в русской традиции позиция фиксированная: Имя Отчество Фамилия. Если полистать классическую литературу, то ваш пример будет иметь вид:

Обломов, Илья Ильич

Потому что фамилии, как правило, достаточно для идентификации, особенно если добавляется "титул" (граф, профессор, доктор, лейтенант), а имя с отчеством — уточнение, отделяющееся запятой.

По-моему это из забугорья пошла "традиция" писать имя первым, это адище для любой бюрократии

Я до сих пор помню корпоративную учётную систему где в адресной книге поиск сотрудников было по имени и список сотрудников тоже по имени в табличке..и фамилия всегда сокращена узкой колонкой...и черт побери, найти Александра Ивановича Кукушкина можно ТОЛЬКО глазами из 50 Александров Ивановичей

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

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

Имён у них тоже не шибко много. Задачи идентификации конкретного китайца власти там никогда не ставили. И в рамках "деревни" имени хватает и у нас.
К тому же у них как и в Древнем Риме, имя - понятие не постоянное и нередко меняется по мере взросления и социального роста.

Работал на проекте в дочке иностранного банка, и все имена там были записаны в формате типа Olga P. (Petrova) - жуть какая-то

(вот вот!) а что! главное в человеке Имя! (глядя на список из двадцати Olga P.) очень удобно ага

потом я еще бы адреса вспомнил

дом 3, ул. Ленина, г. М....

дом 5, ул. Ленина, г. К....

Потомушта во всем мире так!

Если у тебя две системы где firs_name и last_name, и отчество либо отдельно куда-то либо вместе с именем
А потом делаешь новую систему, которая будет интегрирована с первыми двумя

то лучше уж firs_name, last_name, middle_name чем что-то другое

Интересно, что бы и где бы в анкете написала

Екатери́на II Алексе́евнаЕкатери́на Вели́кая, урождённая Софи́я Авгу́ста Фредери́ка А́нгальт-Це́рбстская

?

У немцев, как известно, несколько имен. Поэтому термин given names, и правда, более корректен. Но есть основное имя, его обозначают подчёркиванием.

А вот пример с российским загранпаспортом плохой. В смысле, создаёт на практике неоднозначности и проблемы несоответствие имени и отчества с именем транслитерацией.

Теофраст Бомбаст фон Гогенхейм (ака "Парацельс")

Шри Шримад Бхактисиддхантха Сарасвати Госвами Махараджа (учитель основателя движения кришнаитов)

Ну и мое любимое Божиею поспе́шествующею милостию, Мы, Николай Вторы́й, Император и Самодержец Всероссийский, Московский, Киевский, Владимирский, Новгородский; Царь Казанский, Царь Астраханский, Царь Польский, Царь Сибирский, Царь Херсонеса Таврического, Царь Грузинский; Государь Псковский и великий князь Смоленский, Литовский, Волынский, Подольский и Финляндский; Князь Эстляндский, Лифляндский, Курляндский и Семигальский, Самогитский, Белостокский, Корельский, Тверский, Югорский, Пермский, Вятский, Болгарский и иных; Государь и Великий Князь Новагорода низовския земли́, Черниговский, Рязанский, Полотский, Ростовский, Ярославский, Белозерский, Удорский, Обдорский, Кондийский, Витебский, Мстиславский и всея Северныя страны́ Повелитель; и Государь Иверския, Карталинския и Кабардинския земли́ и области Арменския; Черкасских и Горских Князей и иных Наследный Государь и Обладатель, Государь Туркестанский; Наследник Норвежский, Герцог Шлезвиг-Голштейнский, Стормарнский, Дитмарсенский и Ольденбургский и прочая, и прочая, и прочая.

Не уверен насчёт анкеты, но в СНИЛСе у неё скорее всего было бы Романова Екатерина Алексеевна.

да ну к черту!

я все бизнес сущности называют по-русски и в коде и в базе

если, конечно, нет ТЗ где указано иначе

иначе будете потом мучительно вспоминать что за х

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

Специально для вас придумали utf-8 для имен полей бд, имён переменных в коде и всего вокруг

Да да. Следующий уровень - это именовать колонки через emoji. И пофиг что у вас они не загружены. И пофиг что раскладка клавиатуры в системе не поддерживает - если вам надо вы её включите.

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

Кстати, насчёт раскладки клавиатуры. В Windows попробуйте нажать кнопку Windows + точку. На Маке Ctrl + Cmd + Space. Будет клавиатура эмодзи.

А потом вам попадается тулза которая utf8 не умеет и все вам портит (вспоминаю tar из солярки в конце нулевых)

Или почтовые сервера до середины нулевых которые принудительно меняли кодировку

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

У меня был баг в такой системе, с которым вы явно не сталкивались потому что явно не хватает опыт,Вы знаете что буквы И́ , Ё могут быть написавны десятком вариантов которые не различимы визуально но будут разными? Например Е и точки отдельно, Ё как русская, Е английская а точки от каких нить индусов?Что в слове Привет половина букв может быть не вся из кириллической части таблицы символов? И это будет не ошибка или злой умысел, это может сторонний софт формировать так не латинские фразы которые вы никогда не сматчите с вашими метаданными, я помню голову себе сломал, мне попалось однажды слово, которое прислал вендор-поставщик музыки, кто все диакритические знаки вплоть до точек и запятых были вынесены в начало строки, браузер показывал нормально, а в бд это выглядело как не читаемая мешанина из квадратиков

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

На файлопомойке Synology хотел использовать по расписанию команду, которая очищает папку от старых файлов. А она не работает. Потому что имя папки написано кириллицей.

А если попытаться выполнить ее не из планировщика, а из терминала, то удалится вся папка :(

Олды могут помнить, что в СУБД FoxPro (старой, еще DOSовской) обрезались строки с буквой "я".

я все бизнес сущности называют по-русски

При всём радикализме (подводные камни коллеги уже указали) сам подход подкупает: что может быть естественнее, чем брать имена для доменной модели непосредственно из предметной области? И на родном для неё языке.

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

Зависит от предметной области, конечно.

Передо мной проект по медицинской тематике. Имена переменных и столбцов в БД имеют длину до 50 символов включительно и и состоят из десятка медицинских слов каждое имя. Так вот, их перевели на английский. И теперь нет никакой возможности определить определить имя переменной по названию на морде. Мало того, что надо лезть в словарь, так ещё и вариантов перевода десятки.

То есть, имена стали бесполезны. Их можно теперь тупо заменить на буквы алфавита, хуже не станет. Всё равно, комментарии можно написать, как тут подсказывают. ))))

В Латинской Америке часто помимо имени папы еще и имя мамы отдельно указывается

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

Вот абсолютно валидный js код, например:

var имя = 'Петр'
var фамилия = 'Иванов'
console.log(`${имя} ${фамилия}`)

Всё, проблема решена.

А там где нельзя писать UTF-8, пишем шестнадцатиричное представление названия в UTF-8 после применения нормализации NFD :)

Теперь есть новая проблема - раскладкой щелкать каждый раз при использовании.

Мои знакомые испанцы-португальцы с четырьмя именами нервно смеются в сторонке :)

"Клаудио Тобиас Перейра Мартинез" и всё в таком духе.

Перейра Мартинес это фамилия отца и фамилия матери соответственно, с приветом из солнечной Испании ;)

здесь для местных обязательно иметь 2 фамилии, понаехавшие при заполнении формы на особо консервативном сайте могут зайти в тупик, когда форму нельзя засабмитить без второй фамилии (быстрофикс - пишите свою фамилию два раза!)

Не всегда. У испанцев/португальцев может быть много имён (именно имён в нашем понимании): чем их больше, тем больше ангелов-покровителей.

Мой личный рекорд - 35. Аристократ, блин, хренов. Всю разметку сволочь ломал, ещё и жаловался, что мы не все имена отображаем - по типу оскорбление у него! (Так - весёлый мужик на самом деле, но щепетильный)

А на обращение и титулы не жаловался? Там вроде с простым Señor не обойтись

что не всегда?

в конкретно даннос примере, перейра и мартинес - это фамилии, клаудио тобиас - имена

А как пишут испанцы, если у обоих родителей фамилия одинаковая? Думаю это не редкая ситуация

Сергей Бойко на ютубе рассказывал, что у его ребёнка в Мексике в документах фамилия Бойко Бойко, это официально.

А у отца и матери только первая фамилия берется для передачи ребенку? Или по их выбору?

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

В остальных случаях, когда нет понятных ограничений, лучше использовать opaque строки. У меня в адресной книге есть такие персонажи как "Mike холодильник", "Support", "k20-35", "Тамара шлагбаум" и т.п. и спасибо разработчикам, что не лезут с советами как правильно.

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

А терминология - главное чтоб описана была, а last_name или surname уже не оч важно.

Статья о том, как найти себе проблем.

<troll mode>

Действительно. Если так подумать - то для чего всем этим организациям, вообще, имя? Номер паспорта или иного документа есть? Ну вот и пользуемся.

Цифры плохо произносятся и запоминаются? Можно придумать какую-нибудь достаточно мелодичную слоговую систему для записи и диктовки. Лет через 5 все привыкнут и свое официальное имя запомнят.

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

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

Вон, Ирландия для своих почтовых адресов ввела же Ericode - и ничего страшного не, вроде, не произошло. А монгольская почта вообще what3words использует.

Ну номер паспорта, или как у этих там социального страхования вполне годится. На крайний случай, номер телефона… хотя это уже и так повсеместно внедрили.

В чистом виде их использовать плохо. Ошибется кто-то или что-то в одной цифре - и не того человека номер получается. Если уж делать - то это число (которое потом в виде какой-нибудь последовательности слогов выводится/говориться) должно наполовину состоять из кодов коррекции ошибок.

Наполовину — это очень избыточно. Где это имя будет применяться, что там такие потери?

Мне раз в шумном помещении южанин пытался сказать, как его зовут. Я два раза переспросил, так и не понял. А с кодами коррекции, глядишь, понял бы.

Где это имя будет применяться, что там такие потери?

Его будут диктовать и записывать. Люди с разными акцентами и разными родными языками. Будут... искажения. Смотри, например, как японцы с Р/Л страдают. Да и у русского языка тоже частенько звуки путаются, вроде бы (вот только примеров сходу не вспомню)

Нет, возможно, можно придумать какой-нибудь словарь слогов, чтобы более-менее одинаково все воспринимали. (В пределе фонетический алфавит получим, поди?) Но что-то мне эта затея уж больно трудоемкой кажется. Лучше сразу математикой возможные искажения забить.

Но 50% кодов коррекции — это ужасно много.

Ну... Я тут со вчерашнего дня разные корпуса русских текстов посчитал. Получилось:

Разных слогов в русском языке, если их правильно(надеюсь) расставлять - чуть меньше 2000.

Это со всеми редкими вида 'хность' (по-вер-хность).

Возможных переходов между ними - в среднем для каждого слога возможно 26.17 варианта следующего. Это 8.5 бит на каждый слог, кроме первого. На первый - 11

Произвольные сочетания, наверное, использовать нельзя - будет коряво звучать.

Уникальный идентификатор нам нужен - где-то 40 бит, для круглости и чтобы не кончились. Приблизительно столько же у 16значных номеров карт.

Итого - надо 7-6 слогов.

Это до наложения всех кодов восстановления ошибок.

Теперь вопрос - сколько из этих слогов поломать до полной неразборчивости можно ухитриться при предположении 'человек плохо говорит и/или неразборчиво пишет?

Как мне кажется, стоит выбирать представление имени в зависимости от способа его использования, которых, грубо говоря, три - и они не обязательно исключают друг друга:

  • ответ на вопрос "как вас называть?". Это просто непрозрачная строка, опционально - отдельно полный и сокращённый вариант. В идеале, никогда не должен заменяться другими перечисленными вариантами или генерироваться из них. К примеру, не очень хорошо составлять его из паспортных ФИО.

  • интеграции с другими системами. Тут нужно смотреть, что требует эта система. Государства и документооборот я тоже включаю сюда - к примеру, для РФ это будут три "паспортных" поля: имя, фамилия, и необязательное отчество. А если нужна интеграция с несколькими системами, у которых слишком сильно отличаются ожидания от имен, то нужно несколько вариантов имени - к примеру, для другого государства может потребоваться другой набор полей.

  • способ отличить одного человека от другого. Это во многих системах работает не очень хорошо - слишком много потенциальных коллизий, к примеру. Но в обиходе используется часто, поэтому для каких-то систем имеет смысл. Это представление будет зависеть, в первую очередь, от ожиданий и желаний пользователей/операторов системы. К примеру, в школьном электронном журнале для этого могут использовать пару "фамилия, имя". Другой пример - в телефонной книжке я ожидаю возможность ввести "Иван дрова", чтобы отличить его от "Иван работа 2" - и при этом ожидаю отдельного поля (или полей) для полных имён этих Иванов.

Ну, если прямо вот хотите, то вот Вам ONIX: https://www.editeur.org/93/Release-3.0-Downloads/#Specifications -> Contributor тэг

Там

Personal Contributor Names
A personal contributor name consists of eight (8) distinct data elements:
• Title(s) before name(s) or prefx(es) to entire name(s)
• Name(s) before key name(s) (includes given names as appropriate)
• Prefx to key name(s)
• Key name(s) (usually the family name)
• Name(s) after key name(s) (including given names where appropriate)
• Suffx after key name(s)
• Qualifcations and honors after name(s)
• Titles after name(s)

наслаждайтесь, но не убейтесь )

Разделение на name и key name выглядит логичным и удобным для книгоиздателей. Например, неключевое имя можно, наверное, сократить до инициалов в библиографии.

Но для документооборота, по крайней мере в России, на мой взгляд не очень: слишком громоздко и не имеет отчества в виде отдельного поля.

Громоздко —  да (потому и "не убейтесь")

Там достаточно гибко, чтобы сохранить что угодно, как я понимаю... например: NameBeforeKey=Иван, Key=Иванов, NameAfterKey=Иванович

Только тогда, NameAfterNameBeforeKey=Иванович

не, там вот так (тэги)

PersonName
PersonNameInverted

TitlesBeforeNames
NamesBeforeKey
PrefixToKey
KeyNames
NamesAfterKey
SuffixToKey
LettersAfterNames
TitlesAfterNames

PersonName, PersonNameInverted - это полное имя со всем включениями (туда и обратно), а дальше разбивка по частям. Части кроме ключевого опциональны и 0+, т.е., к примеру, можно если надо 1 и более NamesAfterKey

так что тут именно NameAfterKey=Иванович (или, если уж быть точным, NamesAfterKey=Иванович)

XSD может легче, чем моё корявое пояснение

<xs:group name="gp.structured_name">
  <xs:annotation>
	<xs:documentation>Group of elements carrying the name of a person, in a highly granular manner</xs:documentation>
  </xs:annotation>
	<xs:sequence>
	  <xs:element minOccurs="0" ref="TitlesBeforeNames" />
	  <xs:element minOccurs="0" ref="NamesBeforeKey" />
	  <xs:element minOccurs="0" ref="PrefixToKey" />
	  <xs:element ref="KeyNames" />
	  <xs:element minOccurs="0" ref="NamesAfterKey" />
	  <xs:element minOccurs="0" ref="SuffixToKey" />
	  <xs:element minOccurs="0" ref="LettersAfterNames" />
	  <xs:element minOccurs="0" ref="TitlesAfterNames" />
	</xs:sequence>
</xs:group>

Как только с GovTech или FinTech работаешь, такая проблема отпадает сама собой. Потому что банк сказал вот так вот у них по бумажкам должно быть! И бюрократия им вторит. И тут внезапно оказывается, что абстрактные first & last names своим пересечением как раз покрывают требования почти всегда.

Но общей атмосфера небольшой идиотии это не отменяет, да :)

Ну в России, положим, «по бумажкам» должны быть имя и фамилия, но не first/last. В США, конечно, другое дело.

Ага. Делаешь last name, а потом выходишь на испанский рынок, а там primero apellido и segundo apellido :-D та-дам! А потом идешь на бразильский, где может быть до 10-ти given names и столько же surnames. А на французском и нидерландском рынках тебя ждет nobiliary particle типа "chris de burgh" или "jean claude van damme" и вот ты уже чешешь репу, как сортировать этих достопочтенных д'Артаньянов по букве А. Ну и добиваем ситуацию Исландией, где вообще нет фамилий как таковых...

Мы в своё время пихали всё просто в строку. Но ни в коем случае не ручками а через специальный локализатор - для каждой культуры свой. Т.е. была строка с полным именем, строка с сокращённым именем (даже три, если в русском, то: имя, имя-фамиля, фамилия-инициалы), было поле локали. У софта была своя "культура". "Чужие" имена показывалась по-умолчанию : как есть в английской локали, "свои" - через локализатор имён (в русском, например, умел даже спрягать)

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

Проверил в гугл переводчике, он уверенно переводит last_name как фамилия. Так что не особо проблема, так же как и с first name

Conspiracy theory below:

США странна иммигрантов, к примеру у меня везде в документах FN/LN. Работая здесь с людьми я понял что положить все имена по полям редко просто не возможно. К примеру у меня есть человек в команде из Индии у которого его имя и фамилия и что то там еще это 5 слов разделенных пробелом, пойди найди столько полей.

Так что поступили я пологаю логически, решая простую проблему. вот у вас есть одно поле, проблема с ним одна и человеческая, не понятно как быстро идентифицировать. По этому поле разделили на первую часть и последнюю часть, предполагая что вся ваша шибурха типа Иван Иванович 3 будет частью first_name, а last name будет просто Иванов (всегда одно слово). По этому при звонке вас попросят last name и DOB(или какой нибудь номерок) чтобы идентифицировать.

Еще колонка в БД "has_penis" должна быть, это ближе к российской традиции, да и никакого iso не припомню на этот счет.

Что там должно быть у:

  • мужчины который перенес травматическую ампутацию?

  • MtF трансгендера которая еще не сделала полный набор операций но уже начала их? (снизу это еще не девушка)?

  • FtM трансгендера который еще не сделал полный набор операций(снизу это еще девушка)?

  • трансгендера который сделал полный набор операций но по документам пол - исходный?

  • трансгендер который никаких операцией не делал и не хочет (может денег нет) но по документам - пол другой?

  • человек который себя НЕ считает трансгендером, но пол меняет а потому что по закону своей (не России) имеет право и это дает некоторые бонусы

? :)

Начать стоит с того, а нужны ли вам имена-то вообще?

Правильно! СНИЛС будет достаточно.

... к нам попал в волненьи жутком, с растревоженным желудком и с номерочком на ноге (C)

Как-то все забыли, что есть степени. А они часть имени: профессор, доктор, во многих странах.

Если говорить о России, то есть такие междометья перед отчеством: Оглы. Фарук Оглы Фатехович Ибн Аругат.

Это тоже часть данных в паспорте РФ.

Испаноязычные страны: как правило 2 имени и 2 фамилии, причем фамилии не семейные и у всех членов разные (дети наследуют от отца и матери).

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

Так что хорошую универсальную модель, к сожалению, определить невозможно.

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

И им нужны все 3 поля. Васяну они посылку не отдадут.

Из занудства: Оно отдают посылку человеку, получившему SMS. И больше ничего не спрашивают. Что у них в базах данных оседает и что у них при этом с Госуслуг тянется - дело темное, но выходит так, что им для работы нужен только какой-то id получателя?

чтобы получать SMS надо один раз привязать у них свой паспорт и телефон, и соответственно все посылки выдаваемые по СМС будут считаться как полученные на тот самый зарегистрированный паспорт

Понятно, что будут. Но отправителю, по идее, достаточно только какой-то id получившийся записи почте сообщать "хочу доставить вот этому".

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

т.к. в номере телефона контрольных сумм нет и поэтому можно отправить не тому

да и сейчас можно не тому отправить совершенно классическим способом, написать "На деревню дедушке" (все же в деревне дедушку знают)

id тут очень сложно выбрать так то (когда представляю себе id, в голове крутятся номера банковских счетов где нолики надо считать чтобы правильно всё было)

никто в здравом уме эти циферки запоминать не будет, с электропочтой то геморрой сплошной (Эс как доллар, Вэ как галочка и это всё), а если цифры диктовать то капец...вот и выбрали самые явные цифры как сбп - номер телефона

 а если цифры диктовать то капец...вот и выбрали самые явные цифры как сбп - номер телефона

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

А по поводу запоминания - уже писал выше:

Цифры плохо произносятся и запоминаются? Можно придумать какую-нибудь достаточно мелодичную слоговую систему для записи и диктовки. Лет через 5 все привыкнут и свое официальное имя запомнят.

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

И, опять же - смотри Ericode в Ирландии или what3words у монгольской почты. Вполне случайный набор символов/слов. Используют и, вроде, не очень страдают.

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

я вообще не помню что использовал бумажный блокнот для записи контактов года с....2003 когда у меня сотовый появился,...носить его ради того чтобы три раза в год почту отправить? ;)

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

слишком нишевая и своеобразная штука, людям проще привычный адрес писать, даже если он такой кривой как в РФ (мой дом по адресу, находится на улице которая находится через два дома от меня, а улица которая прямо под окнами проходит - не та, плюс в городе две улицы с таким названием, индексы конечноже все разные, что не мешает 90% курьеров уезжать не туда и теряться в трех соснах, ни точка в геокоординатах, ни прямое текстовое описание куда ехать - не помогают вообще)

но у нас и индексы то почтовые так нормально и не интегрировались,

Это потому что это указатель не на географическое место/человека, на отделение (которое, кстати, еще и смениться может), которое это место обслуживает.

а во всех остальных местах где я жил, всегда матерился на поле индекса если оно обязательно, постоянно гуглить приходилось где его достать, а всего то 6 цифр

Искать приходится, собственно, не индекс, а "в какое отделение мне надо посылку отсылать?". А сам индекс - на отделении(ни или карте, где ты его ищешь), куда посылку посылаешь, большими буквами написано.

А в случае с ericode и what2words - прямо на доме табличка должна быть прикручена, по идее. А почта уже сама разбирается, куда все возить.

Индекс однозначным и единообразным способом идентифицирует отделение почты куда отправляется письмо или посылка. А им на месте уже легко понять, что, например "ул. Б.Садовая" и "Большая Садовая улица" это одно и то же - а вот как это понять на стороне отправителя, находясь за пару тысяч км. это вообще неизвестно.

Ради интереса посмотрел как в базе моей конторы хранится имя пользователя — там один строковый `p_fio` ?. Мы уже попали в смешную ситуацию когда потребовалось в одном из наших сервисов выводить только имя пользователя вместо полного имени. Сам столбец может быть заполнен абсолютно произвольно, отсюда мы получили комментарии от "Михайлович", "Иванов", "C" и т.п. Исправить это можно примерно никак.

Уникальным идентификатором польователя у нас является логин, с которым связан другой мем. Ссылки на одно и то же значение в разных таблицах могут иметь имена: customer, customer_id, owner, accound_id и моё любимое — cust_login ? Учитывая специфику нашей системы, где многое приходится делать руками (сырой SQL да), поиск по юзерам это особый вид приключений.

Стоит добавить, что здесь речь не просто о столбцах в БД, а о именах полей (свойств) доменной модели. Поэтому, как они называются - вопрос действительно важный.

Очень здорово, что вы проанализировали стандарты. Опираясь на них, можно действительно пересмотреть подход к наименованию этих свойств.

Но из вашего же анализа я вижу, что единого мнения на этот счёт нет, а значит "здесь так принято" всё ещё имеет власть

Да без разницы что и как называть. Необходимо только чтобы все и везде в пределах проекта называли что-то одно одинаково. Эванс в своей известной книге по DDD для этого вводит такое понятие как "ubiquitous language". И я вообще считаю, что глоссарий проекта всегда должен быть обязательной частью его wiki.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий