Продолжу рассматривать хранение пользовательской информацией в базе.

В предыдущих статьях описаны мифы по хранению информации из документов и фамилии-имени-отчества.

Так себе представляют введение идентификаторов некоторые пользователи
Так себе представляют введение идентификаторов некоторые пользователи

Для начала давайте договоримся о терминологии.

Основной идентификатор — набор цифр/букв который используется (или должен использоваться) во всех системах для однозначного определения физического лица в масштабах страны. Идентификатор на законодательном уровне должен использоваться во всех государственных базах. Для примера, в Узбекистане в качестве единого идентификатора принят ПИНФЛ, в Азербайджане — ИИН, в Кыргызстане — ПИН, в Казахстане — ИИН. На постсоветском пространстве идентификаторы, как правило, состоят из некоторого набора цифр (ИН в аббревиатурах расшифровывается как Идентификационный Номер).

СНИЛС движется в сторону «основного идентификатора», но пока юридически не подходит под приведённое выше описание.

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

Ещё немного теории: Идентификаторы могут быть сгенерированы на основании пользовательских данных (как правило — пол, дата рождения, место первой персонализации). Основное преимущество такого подхода — возможность «ручной генерации» идентификатора: если отключили свет или интернет, можно в бумажном журнале создать необходимую комбинацию цифр. Также «естественный идентификатор» позволяет меньше допускать «человеческих ошибок» — сотрудник может визуально определить пол и приблизительный возраст посетителя и отказать в случае явного несоответствия.

Идентификатор может быть сгенерирован «синтетически», без привязки к пользовательским данным. В век цифровых технологий он более привлекателен, чем «естественный». Во‑первых, появляется меньше причин для его смены в дальнейшем (см. ниже). Во‑вторых, по понятным причинам, в то же самое количество цифр помещается больше возможных пользователей.

Вопрос с простотой чтения и запоминания «естественных» и «синтетических» идентификаторов остаётся открытым.

На этом вводная часть заканчивается, переходим к основному тексту.

  1. Основной идентификатор есть всегда.

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

  1. Основной идентификатор не изменяется.

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

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

Соответственно, качественно написанная программа должна грамотно обрабатывать ситуацию «смена основного идентификатора».

  1. Основной идентификатор всегда уникален.

Если всё‑таки не исключать человеческий фактор, то теоретически один идентификатор может повторяться в системах.

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

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

  1. Один идентификатор не может быть у двух юзеров.

Частный случай пункта 32. Вероятность коллизии повышается, если разрешено генерировать идентификатор в различных источниках:

  • Первая персонализация может происходить в разных организациях (ЗАГС и паспортный стол МВД).

  • филиалы организации, которая проводит персонализацию не связаны единой информационной системой.

В 2023 году такое себе трудно представить, но в центральных базах данных наверняка осталось тяжёлое наследие 20–30 летней давности.

  1. В каждой конкретной организации, у юзера может быть только один вторичный идентификатор.

Приведём гипотетический пример из прекрасных 90-х.

В 16 лет пользователь получил паспорт, устроился на работу и встал на учёт в ФНС с ИНН 123**. Через несколько лет пользователь переехал в другой регион, поменял паспорт (по достижению 25 лет или из‑за смены фамилии) и снова захотел устроиться на работу. О первом опыте работы он забыл, приходит в Налоговую и заново хочет получить ИНН. Сотрудники проверяют его по локальной базе, по глобальной базе и не находят (напоминаю, паспортные данные поменялись). Пользователь не найден, получите новый ИНН 567** и распишитесь.

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

Знакомый знакомого моего знакомого рассказывал, что один из их знакомых продал квартиру, система определила его ИНН как 123**. Как честный человек он сразу оплатил все требуемые налоги (ага, правильно, с ИНН 567**). И получил штраф за неуплату налогов. Пока разбирался, ещё и пеня набежала.

  1. В данный момент в каждой конкретной организации, у юзера может быть не больше одного вторичного идентификатора.

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

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

  1. В каждой конкретной организации, связь «основной идентификатор — вторичный идентификатор» это всегда «один к одному».

В идеале нужно проектировать связь «многие ко многим», дополнительно фиксируя временной интервал, когда тот или иной идентификатор был активен.

  1. Если идентификатор состоит из составных частей, части всегда соответствуют целому.

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

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

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

Для примера — при смене даты рождения, в Казахстане идентификатор остаётся неизменным, в Узбекистане идентификатор генерируется заново. Возможные и возникающие проблемы периодически освещаются в тамошних СМИ: ссылки на dnews.kz и podrobno.uz.

  1. Из вторичного идентификатора всегда можно получить основной.

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

И напоследок вопрос

Федя, гражданин Ваканды, был персонализирован и получил основной идентификатор 123***. Федя переехал в Вальверде и отказался от гражданства Ваканды.

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

Всем мира и добра.

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


  1. DGN
    13.04.2023 06:01
    +2

    Хеш от ДНК?


    1. Wesha
      13.04.2023 06:01
      +2

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


    1. Nedder
      13.04.2023 06:01

      В Индии есть система AADHAAR, более миллиарда записей, почти 99% населения, индентификация по отпечаткам пальцев И сетчатке глаза, т.к. опечатки пальцев могут теоритически совпасть у двух человек в такой огромной стране (по теории вероятность 1 из 64 млрд).


      1. aamonster
        13.04.2023 06:01

        В смысле, для каждого с каждым вероятность совпадения 1/64М, и на 1.4М индийцев получается примерно 1.4М*1.4М/64М/2 = 32к пар дубликатов?


      1. anonym0use
        13.04.2023 06:01

        Она утекла кстати, при чем не в первый раз), а биометрию как мы знаем сменить невозможно.. .


    1. mikelavr
      13.04.2023 06:01
      +1

      Гуглите "химера" - у людей тоже встречается.


    1. Renatsun
      13.04.2023 06:01

      Уже есть вариант редактирования ДНК c помощью вирусов. Так что не всей ДНК, а наверно только трудноизменяемой части, связанной с жизненными показателями


    1. garwall
      13.04.2023 06:01
      +3

      однояйцевые близнецы?


  1. cahbe
    13.04.2023 06:01
    -2

    Тема на фоне электронных повесток? Копание себе ямы не лопатой и даже не ексковатором, а сразу подрывом...

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


    1. Germanjon Автор
      13.04.2023 06:01
      +4

      Я гражданин Узбекистана и живу там же. Поэтому, не рассматривал идентификатор в контексте повесток


  1. miga
    13.04.2023 06:01
    +1

    Ваааапрос, должен ли к нему вернуться предыдущий основной идентификатор или это уже совершенно другой человек?

    Например, в Эстонии и Литве isikukood/asmens kodas прикрепляется к человеку и не будет меняться если он уезжает и возвращается


    1. askv
      13.04.2023 06:01
      -1

      Даже если он вернётся с изменённым фио, внешностью и т.д.?


      1. miga
        13.04.2023 06:01
        +1

        Анекдот про хакеров и солонку, да :)


    1. Germanjon Автор
      13.04.2023 06:01

      В Узбекистане официального ответа на этот нет. Практика такова, что если у вернувшегося пользователя нет биографических изменений (имя, фамилия, место рождения), то присваивается предыдущий ПИНФЛ.


  1. uhf
    13.04.2023 06:01
    +1

    32 и 33 неактуальны, вторичные идентификаторы — зло, от них нужно избавляться.


    должен ли к нему вернуться предыдущий основной идентификатор или это уже совершенно другой человек?

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


    1. Germanjon Автор
      13.04.2023 06:01

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

      Пример1 - какая-то информация в локальной базе о человеке, которая может меняться со временем.
      Пример2 - локальная база, в которой одному физическому лицу может соответствовать несколько сущностей. Пример - база студентов, когда один человек может последовательно или одновременно учиться в нескольких ВУЗах на разных уровнях. Введение Student-ID существенно упростит работу. При этом, в той же самой локальной базе должна быть привязка Единого Идентификатора к этим самым Student-ID


  1. ALIron
    13.04.2023 06:01

    Задача идентификатора - идентифицировать.=) (ваш кэп.)
    То есть сопоставить. Сопоставлять по одному критерию - плохая практика. Так как любая опечатка - и всё сломалось. Данные вводят люди. Люди ошибаются.

    Лучше использовать несколько идентификаторов включая ФИО, ДР, Место рождения, телефоны и так далее.


    1. Germanjon Автор
      13.04.2023 06:01

      Единый идентификатор - самый простой способ обеспечить взаимодействие между различными отраслевыми ИС. Например, сформировать и отследить цепочку "детский сад" - "школа" - "институт" - "работа 1" - "работа 2"... "пенсия". С ответвлениями вида "взять кредит".


      1. ALIron
        13.04.2023 06:01
        +2

        Всё так, но мир, к сожалению не даёт никаких гарантированных идентификаторов.
        Для этого есть целых два класса систем DQ & MDM. Которые, фактически, только эту задачу и решают.


  1. Shklo
    13.04.2023 06:01

    "Цифровой рай" уже местами наступил. Осталось теперь придумать как этим жить.


    1. Wesha
      13.04.2023 06:01

      Осталось теперь придумать как этим жить

      "...тогда не живите — никто не неволит" (c)