Открываю исходники очередного enterprise-проекта: о да-а-а, вот они, старые знакомые, лучшие друзья разработчика — first name и last name.


Уот зэ хек?

Регулярно такое встречаю. Забыл ещё про middle name, sorry. В эти три поля разработчики ничтоже сумняшеся складывают имя, фамилию и отчество. Сразу уточню: речь идёт не о legacy 20-летней давности, не о проектах с заказчиками из США, а о новых продуктах, создаваемых российскими разработчиками для российской же зачастую аудитории.

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

Однажды я не выдержал и поделился своими сомнениями с коллегами в рабочем чате, но, наверное, не смог донести идею до коллег. Вместо конструктивной критики всё большей частью свелось к шуточкам.

Что ж, попробую ещё раз сформулировать свою мысль и представить её широкой аудитории. Начнём!

Скоуп

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

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

Я буду оставаться в рамках технического английского, этого lingua franca в мире информационных технологий. Хотя у меня нет идиосинкразии к использованию, например, русского в каких-нибудь DSL. Но в таких вещах, как API, особенно предполагающих международную аудиторию, лучше по понятным причинам использовать английский.

Зэ праблем

Мне не нравится бездумное использование терминов, в частности first name и last name, для хранения компонентов персонального имени. First name не является корректным универсальным термином для имени человека, персоны, так же как last name — для фамилии.

Например, в русской традиции фамилия, имя и отчество не имеют фиксированной позиции: Илья Ильич Обломов и Обломов Илья Ильич — оба варианта правильные и используются в определённых случаях. Хранить имя и фамилию в полях first_name и last_name так же неправильно, как название области — в поле state.

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

Бай зэ вэй

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

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

Kakie vashi dokazatel’stva?

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

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

Заграничный паспорт гражданина Российской федерации
Заграничный паспорт гражданина Российской федерации

Как видим, никаких first или last. Фамилия — это surname, а имя — given names (отчество также относят к имени или же предполагается возможность наличия нескольких имён).

Аналогичные термины используются, например, в британском или индийском удостоверениях личности. Я наугад потыкал в паспорта ещё нескольких стран и везде нашёл только surname и given name. Кроме КНР, там вообще одно только поле name.

Можно обратиться к англоязычной Википедии. В статье Personal name найдутся следующие термины:

  • given name, forename, Christian name для имени;

  • family name, surname для фамилии;

  • patronymic, matronymic для отчества и аналогичного производного от имени матери.

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

Ху а ю ту лекчэ ми?

Может быть я борюсь с ветряными мельницами, а весь остальной мир уже смирился с этой терминологией и принял её в качестве универсальной?

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

  • given_name

  • family_name

  • middle_name

  • nickname

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

Или вот Google. Не ISO, конечно, но некоторые тренды в ИТ-индустрии они задают. В их Identity Platform я вообще не вижу компонентов имени, зато есть displayName и screenName. Не самые очевидные термины, на мой взгляд, но принцип понятен: не хранить компоненты по отдельности там, где в этом нет нужды.

На очереди Meta Graph API. Ой, нет, этих не будем, там типовая тройка.

Лучше возьмём Apple, известных своим вниманием к деталям, и их первое попавшееся мне на глаза API. Что мы видим в документации? Сперва идёт введение, в одном абзаце раскрывающее всю сложность человеческих имён (респект!), а затем — поля с именами givenName, middleName и familyName (плюс поля для обращений и титулов). Мне нравится, хотя глаз опять задёргался на middleName.

Неожиданных союзников я нашёл в лице W3C, у которых так прямо и написано: «try to avoid using the labels ‘first name’ and ‘last name’ in non-localized forms». Правда, это говорится о пользовательском интерфейсе, а не о внутренних идентификаторах программных систем. Но всё равно приятно узнать, что не я один такой перфекционист.

Наверное, достаточно примеров. Уже то, что найдено, говорит о том, что не всё так однозначно с этими терминами, далеко не все блуждают в трёх соснах first, middle и last.

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

Уот эбаут ю?

А какая терминология используется в ваших проектах? Чем она обоснована? Размышляете ли вы над тем, как правильнее назвать таблицу, или считаете это неважным? Обсуждаете ли нейминг в онлайн-конференциях, или на это как обычно не остаётся времени?

Си ю ин каментс!

Комментарии (133)


  1. rdp
    02.04.2024 07:10
    +7

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


  1. YegorP
    02.04.2024 07:10
    +39

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

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


    1. iliazeus
      02.04.2024 07:10
      +1

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

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


  1. Anvano
    02.04.2024 07:10
    +20

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

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

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


    1. Redduck119
      02.04.2024 07:10
      +1

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


      1. Hungryee
        02.04.2024 07:10
        +15

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

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


        1. galev
          02.04.2024 07:10
          +4

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


          1. blind_oracle
            02.04.2024 07:10
            +1

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


        1. Ivan22
          02.04.2024 07:10
          +5

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

          column121344 в таблице entity123


          1. ssmaslov
            02.04.2024 07:10

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


          1. blind_oracle
            02.04.2024 07:10
            +4

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


        1. Redduck119
          02.04.2024 07:10
          +5

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


    1. andi123
      02.04.2024 07:10

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

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

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

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


      1. Pochemuk
        02.04.2024 07:10
        +3

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


        1. blind_oracle
          02.04.2024 07:10

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


    1. n43jl
      02.04.2024 07:10
      +2

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


      1. Pochemuk
        02.04.2024 07:10
        +1

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


        1. dartraiden
          02.04.2024 07:10
          +3

          А sex так вообще....


          1. gummybeer
            02.04.2024 07:10
            +10

            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.


            1. Pochemuk
              02.04.2024 07:10

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

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

              -- 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 ...


      1. VADemon
        02.04.2024 07:10
        +1

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

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


        1. Pochemuk
          02.04.2024 07:10

          Нах нейм?


          1. ksbes
            02.04.2024 07:10
            +1

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


    1. brom_portret
      02.04.2024 07:10
      +1

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


      1. ailcat
        02.04.2024 07:10
        +1

        YmicName ;)


    1. Jeshua
      02.04.2024 07:10

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


    1. Anarchon
      02.04.2024 07:10
      +2

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


      1. DMGarikk
        02.04.2024 07:10

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

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

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

        а вот

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


        1. Anarchon
          02.04.2024 07:10
          +1

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

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


  1. konst90
    02.04.2024 07:10
    +18

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

    Не проще.

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

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


  1. Pochemuk
    02.04.2024 07:10
    +6

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

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

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

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


    1. lokkiuni
      02.04.2024 07:10

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


    1. SkywardFire
      02.04.2024 07:10
      +1

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

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


      1. DMGarikk
        02.04.2024 07:10
        +1

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

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


      1. iliazeus
        02.04.2024 07:10
        +3

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

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


        1. ksbes
          02.04.2024 07:10

          Ну вообще в русской традиции так и положено делать, вобщем-то. Это в последнее время что-то разлиберальничались с иностранцами!


        1. befart
          02.04.2024 07:10

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


  1. pae174
    02.04.2024 07:10
    +11

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

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


    1. ssmaslov
      02.04.2024 07:10

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


      1. blind_oracle
        02.04.2024 07:10

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


    1. Arm79
      02.04.2024 07:10
      +1

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


    1. iliazeus
      02.04.2024 07:10

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

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


      1. pae174
        02.04.2024 07:10

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

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


        1. inkelyad
          02.04.2024 07:10
          +1

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

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

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


        1. Pochemuk
          02.04.2024 07:10

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

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


  1. exwill
    02.04.2024 07:10

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


  1. n43jl
    02.04.2024 07:10
    +1

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

    Да, 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 если нужно его расширить.


    1. inkelyad
      02.04.2024 07:10
      +1

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

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


      1. Kalobok
        02.04.2024 07:10
        +1

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


    1. DMGarikk
      02.04.2024 07:10

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


    1. FlashHaos
      02.04.2024 07:10

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

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


    1. Mekeke
      02.04.2024 07:10

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

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

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


  1. dyadyaSerezha
    02.04.2024 07:10
    +2

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


    1. Akina
      02.04.2024 07:10

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


      1. blind_oracle
        02.04.2024 07:10

        parent_left + parent_right

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

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


    1. iliazeus
      02.04.2024 07:10

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


      1. DMGarikk
        02.04.2024 07:10
        +1

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

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

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

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


    1. andrey_nado Автор
      02.04.2024 07:10
      +1

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


      1. dyadyaSerezha
        02.04.2024 07:10
        +1

        Не зря боролся! Оставил мне)

        Хотя тогда я добавлю еще поле middle_parent ;)


        1. Metotron0
          02.04.2024 07:10
          +1

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


  1. aborouhin
    02.04.2024 07:10
    +10

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


    1. inkelyad
      02.04.2024 07:10

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

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


    1. iliazeus
      02.04.2024 07:10
      +1

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

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


    1. tishkovets_maxim
      02.04.2024 07:10

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


    1. andrey_nado Автор
      02.04.2024 07:10
      +1

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

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


    1. farm
      02.04.2024 07:10

      под любую?

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


  1. alksily
    02.04.2024 07:10
    +4

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

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


    1. n43jl
      02.04.2024 07:10
      +1

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


      1. rdp
        02.04.2024 07:10
        +1

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


      1. Vytian
        02.04.2024 07:10

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

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


    1. andrey_nado Автор
      02.04.2024 07:10
      +1

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

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


      1. funca
        02.04.2024 07:10

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


      1. alksily
        02.04.2024 07:10

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


  1. Vpan
    02.04.2024 07:10
    +2

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

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

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

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

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


  1. gruzoveek
    02.04.2024 07:10
    +16

    familiya, imya, otchestvo


    1. andrey_nado Автор
      02.04.2024 07:10

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


  1. micronull
    02.04.2024 07:10
    +3

    Мы используем: name , surname , patronymic

    И я видел как кто-то использовал у себя в API: `i`, `f`, `o`


  1. Busla
    02.04.2024 07:10
    +3

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

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

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

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

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


    1. DMGarikk
      02.04.2024 07:10
      +2

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

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

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


      1. R0bur
        02.04.2024 07:10

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


        1. ksbes
          02.04.2024 07:10
          +1

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


      1. vadim_bv
        02.04.2024 07:10
        +1

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


        1. DMGarikk
          02.04.2024 07:10

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

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

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

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

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


  1. fransua
    02.04.2024 07:10
    +6

    Если смотреть на стандарты, то можно взять W3C RDF vCard: https://www.w3.org/2006/vcard/ns-2006.html#Name
    Там familyName и givenName


  1. alexhott
    02.04.2024 07:10

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

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


  1. KonstantinTokar
    02.04.2024 07:10
    +6

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

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

    ?


    1. vlio
      02.04.2024 07:10

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

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


    1. Vsevo10d
      02.04.2024 07:10
      +1

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

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

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


    1. andrey_nado Автор
      02.04.2024 07:10

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


  1. kozlov_de
    02.04.2024 07:10

    да ну к черту!

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

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

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


    1. Ivan22
      02.04.2024 07:10
      +5

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


      1. kozlov_de
        02.04.2024 07:10

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