Comments 149
Когда ты работаешь над разработкой крупных систем, но до сих пор используешь естественные первичные ключи...
Хуже того: когда из всех ключей ты выбрал те, что имеют очень высокий шанс пересечения, при наличии рядом же уникального номера паспорта.
Не у всех детей есть паспорт.
Свидетельство о рождении тоже имеет номер. Еще у детей может быть оформленный заграничный паспорт.
Вы ребенку без документов билет не купите. Так что у всех пассажиров есть документ с уникальным номером.
Я себе и ребёнку без документов прекрасно покупаю билеты постоянно. Документ требуется только при регистрации на рейс во многих авиакомпаниях. А это уже будет через несколько месяцев после бронирования и оплаты.
А точно ли номер уникальный? Ведь нет гарантий, что номер загранпаспорта РФ не совпадет с каким-либо номером, какого-либо документа иной страны. Т.е. уже как минимум одного лишь номера недостаточно
Какой то ДУЛ у них есть. Хоть какой то страны.
Большинство европейских АК не требует паспортных данных при покупке билета - достаточно имени и фамилии.
Можно пример? (я не из-за того что не верю, просто удивлен таким)
https://habr.com/ru/news/810049/comments/#comment_26758925
На самом деле вообще почти любую можете взять. И не только европейские, на ближнем востоке тоже нигде не надо. Скорее исключение это когда требуют, я уже и не помню когда в последний раз вводил что то кроме имени и фамилии, паспорт нужен только в аэропорту при чекине.
И это правильно, ибо это максимально дурацкое требование, если человек бронирует за полгода то у него и паспорт поменяться может за это время, и что не летать совсем или отстегивать круглую сумму за внесение изменений потом?
паспорт поменяться может за это время
Это не такая уж проблема - по крайней мере у Аэрофлота и S7 паспортные данные бесплатно меняются в личном кабинете в любой момент между покупкой и перелётом. Но само по себе требование паспортных данных для билетов на самолёт/поезд/автобус - уже излишний контроль со стороны государства.
Там ниже есть скриншот из Lufthansa кажется. Действительно так. Даже день рождения не надо.
Паспортные данные (тип, номер, срок годности) нужны позже, при регистрации. При этом сам паспорт могут вполне даже не спросить, это на усмотрение АК, если внутри Шенгена.
Из последнего, с кем летал, Туркиши, Пегас. Вы указываете данные паспорта и визы при регистрации на рейс, а не при покупке билета.
Номер паспорта , хоть и идентифицирует человека, уникален для самого паспорта, внутри которого уже есть ссылки на персону (по ФИО/ДР/место рождения, или Фото, или биометрии. Летит же человек, а не паспорт. Поэтому если мы так сделаем, то введем искусственное ограничение.
внутри которого уже есть ссылки на персону
Это только для паспортного стола.. Данные обфусцированные
Как это? Требовать уникальности паспорта - искусственное ограничение? А человек может купить на себя несколько билетов?
Нет, искусственное ограничение - требовать, чтобы человек летел с тем паспортом, на номер которого купил билет. Авиакомпания оказывает сервис перевозки персоны X из точки А в точку Б. Если летит действительно X - то неважно, по каким документам.
А как установить, что летит именно Х, если он не с тем паспортом пришёл?
Летит человек, а не паспорт, вам же написали. Проверить очень просто - взять паспорт, который он принёс на регистрацию и посмотреть, совпадает ли в нём имя и фамилия с тепи, что в билете.
А если это полный тёзка?
Или такую ситуацию считаем маловероятной? Это же надо как-то узнать, что человек с таким же ФИО купил билет и прийти вместо него.
Что если, я вас не понимаю. Допустим, на самолёте летит ваш полный тезка и что? Вы за 24 часа до вылета указываете на сайте авиакомпании свой номер бронирования, вводите данные своего паспорта и регистрируетесь на рейс, то же самое делает ваш тёзка со своим номером бронирования и паспортом.
Это же надо как-то узнать, что человек с таким же ФИО купил билет и прийти вместо него.
Если человек зарегистрировался на рейс на сайте, он ввел свои паспортные данные, вы вместо него не полетите. Если он не регистрировался и вы хотите зарегистрироваться вместо него на стойке в аэропорте, дата рождения должна у вас еще совпадать. Весь мир так летает, вы хоть раз про подобное мошенничество слышали?
ФМС: из-за ошибки "Гознака" 10 тыс. жителей Башкирии имеют паспорта с одинаковыми номерами. Причём, сделано было 50000 бланков с одним номером.
это уже проблема бракованных паспортов. так как номер все же должен быть уникальным. учитывать это при разработке архитектуры системы - большая глупость. тем более вероятность совпадения номеров будет меньше, чем полных имен
Вся эта ветка комментариев прекрасная иллюстрация того, что хороших естественных первичных ключей не бывает. Всегда найдется человек из другой страны, с опечаткой, без документа или с еще какой-то проблемой, по которой ключ превратится в тыкву.
Не так все категорично. Естественные ключи, конечно, всего лишь “ключи” с точки зрения строгой логики, но в жизни человека их хватает (лошадь тебе подкует Васька из первого слева дома), но в отличие от суррогатов - они хоть осмысленны. Если у вас пропущена буква в фамилии, то вас все равно идентифицируют. Если цифра в ID - прощайте. Вас нет и не было никогда.
Ещё не так давно вас отказались бы идентифицировать при пропуске пары точек в фамилии. Буквы 'е' и 'ё' в официальных документах стали считать одинаковыми только по постановлению ВС РФ в 2009 году.
В базе обычно надо идентифицировать именно строку в базе, а не физический объект. Поиск и идентификация реальных объектов базовыми средствами бд плохо решаются.
Завтра паспорта вообще отменят и введут номер заключенного. И вам как-то надо будет одновременно работать с данными разных форматов. Я даже боюсь представить то нагромождение костылей.
У меня сложилось впечатление, что там работники Гознака изнасиловали журналиста, потом то же самое сделали жители Башкортостана (и кто знает, что с ним сделали те, кто в пересечении). Если вчитаться в статью, то там написано, что они прокатили две одинаковых секвенции, одну со вкладышем, другую без. По моему скромному разумению, это значит, что два паспорта имеют номер X, ещё два имеют номер X+1, и так далее, а не "сделано 50K бланков с одним номером". Понятно, что такая ситуация тоже совсем не подарок никому, но изначального вау-эффекта уже не вызывает. Личное мнение - если бы реально 50K точных дубликатов выпустили, косяк бы обнаружили до выпуска в продакшен)).
Так в ТЗ было написано, что "Имена должны быть уникальными". А программист, как обезьяна, понял это буквально и реализовал. Даже вопроса не задал, а что делать с людьми с одинаковыми ФИО? Т.е. нет никакой обратной связи. Это уже не Agile.
Вряд ли всё на столько плохо. Такого выпускника курсов уволят задолго до выхода в прод его поделок.
Тут скорее тупая защита от дублирования по ошибке, о чем упомянуто в тексте заметки.
Но я часто слышу, что надо использовать не сиквенс (как я обычно делаю), а как раз естественные ключи и что совсем для меня дико - использовать их для объединения таблиц.
Хуже того: когда из всех ключей ты выбрал те, что имеют очень высокий
шанс пересечения, при наличии рядом же уникального номера паспорта.
Сегодня ты выбрал уникальный ключ, а завтра приходит доработка на сторнирование, где повторяется вся строка, только с отрицательным количеством.
Идёт собеседование:
Как вас зовут?
Василий.
Дети есть?
Да, сын Василий и дочь Василиса!
А животные дома есть?
Кот Васька!
К сожалению, мы не можем вас принять на должность креативного директора.
У меня был товарищ, у них традиция в семье была одного из сыновей называть определённым именем. Соответственно одновременно там могло быть 3, а то и 4 (если повезёт - то и 5) поколений Иван Иванычей.
И насколько я понимаю, традиция совсем не уникальная - то лично знакомый человек, но через третьи руки я и про другие семьи с такой слышал.
"То наш старинный родовой обычай, что всех мужчин в семье зовут Винценто"
Зато если называть по разному, то будет просто Иван Иваныч. А если это длинная традиция и все три поколения - Иван Иванычи, то можно представляться как "Иван Иваныч младший", например. Прямо как у королей :)
У нас было так, в семье у дяди. Только Сергей Сергеичи они. Старший, средний и младший
Слышал, что некоторые психологи считают, что называть ребенка своим собственным именем это нездоровый признак - ЧСВ попахивает.
Зато дедушкам-бабушкам как легко. Я заметил, что даже не пожилые люди путаются в именах младших членов семьи и называют именем старших, потом исправляются. Пожилые иногда перебирают по два имени: своих детей, своих внуков, потом только вспоминают имя правнука. Звучит это так: "Как дела у Вась/Дим/Коленьки?"
Тогда все квириты были больны завышенным ЧСВ. Даже со времён республики. И мальчики и девочки получали имена сообразно имени патерфамилии.
А если это длинная традиция и все три поколения - Иван Иванычи, то можно представляться как "Иван Иваныч младший", например. Прямо как у королей :)
Или как в императорском флоте - "Иванов третий".
Внезапно вспоминается :)
Впрочем, перегрузка не лишила Элен дара речи:
— А почему ты, когда мне звонила, так официально представлялась? «Лависко-пятая, с добрым утром».
— Знаешь, — Мара скосила на Элен глаз через зеркало заднего вида, не отворачивась от приборной доски. — Я не так часто звоню малознакомым людям. Поэтому от стеснения сбилась на шаблон коммуникации, вбитый в Академии.
— Это вас так учат, в первой же реплике вываливать на собеседника важную информацию? Как мешком по голове.
— Конечно. Если радиосигнал до собеседника идёт минут десять, времени на обмен всякими ритуальными репликами вроде «Привет!», «Как дела?» может уйти безумно много. Поэтому, если звонишь по делу, тему этого дела надо объявить в первой же реплике.
— А почему ты пятая?
— Потому что. Традиция такая, если в военном флоте служат люди с одинаковой фамилией, не важно, родственники или нет, то к фамилии добавляется порядковый номер. Дедушка Тадек — Лависко-первый, папа — второй, дядя Генрик — третий, Келли — четвёртый
"Второй второй"
Это было ещё в те времена, когда чаще приходилось звонить на домашний телефон, чем на мобильный. И к трубке надо было просить не просто Иван Иваныча (имя изменено, кстати, уж хз зачем так перестраховался)), а Иван Иваныча - студента)
- Изя, ты знаешь, жена Абрама родила 5 детей и всех назвали Хаим
- Как же они их различают?
- По отчествам
Так может это всё были отсылки к одной семье :))
На позапрошлой работе был схемотехник Юрий Юрьевич, на прошлой Константин Константинович :) Сразу в голове возникает гипотеза - если отец не заморачивается над именем сына, то ребёнок будет обладать определенным складом ума. Либо наоборот.
Была одна семья, там сыновей называли или Хосе Аркадио или Аурелиано, так что они там сами потом путались уже во всех эти Аурелианах и Аркадиях. В общем, всё это не очень хорошо закончилось.
Тут я люблю вспоминать королей Дании:
Кристиан II (1513–1523)
Фредерик I (1523–1533)
Кристиан III (1534–1559)
Фредерик II (1559–1588)
Кристиан IV (1588–1648)
Фредерик III (1648–1670)
Кристиан V (1670–1699)
Фредерик IV (1699–1730)
Кристиан VI (1730–1746)
Фредерик V (1746–1766)
Кристиан VII (1766–1808)
Фредерик VI (1808–1839)
Кристиан VIII (1839–1848)
Фредерик VII (1848–1863)
Кристиан IX (1863–1906)
Фредерик VIII (1906–1912)
Кристиан X (1912–1947)
Фредерик IX (1947–1972)
У меня в семье пять раз чередовался Трофим и Василий. Мой отец разорвал этот порочный круг и назвал меня просто Вова :)
В Пруссии тоже неплохо было:
Фридрих I
Фридрих Вильгельм I
Фридрих II Великий
Фридрих Вильгельм II
Фридрих Вильгельм III
Фридрих Вильгельм IV
Вильгельм I
Фридрих III
Вильгельм II
Затем пришла суровая датчанка Маргрете II, и прервала эти Сто лет одиночества.
Курс истории Дании можно было бы назвать "Кристиан Фредерикович и Фредерик Кристианович".
Чет мне кажется так как у Елизаветы 2 переименовали при коронации
Никто не перименовывал. Принцесса Элизабет (Elizabeth Alexandra Mary) стала королевой Елизаветой, поскольку в русском языке есть традиция переводить имена монархов. Точно так же принц Чарльз в русском языке стал королём Карлом, оставаясь при этом Charles. И принц Уильям станет королём Вильгельмом, не меняя при этом своего имени William.
Ой простите хоспади я про Екатерину 2 а не про королеву Англии
Побуду занудой: технически Уильям может выбрать в качестве тронного имени любое из своих нынешних - Уильям Артур Филипп Луи. Вон, Георг VI до коронации в основном как Альберт упоминался.
Забавнее всего будет, если выберет имя Луи - тогда его на русский переведут как Людовик.
Но самый суровый в этом плане из известных мне владетельных домов - династия маленького немецкого княжества Рейсс, где все сыновья в роду именовались Генрихами и делили владения между собой.
К XX веку нумерация в некоторых частях княжества доходила до Генриха XXXIX.
Как вас зовут?
Василий.
Дети есть?
Да, сын Василий и дочь Василиса!
А животные дома есть?
Кот Васька!
К сожалению, мы не можем вас принять на должность креативного директора.
А живете где?
На Васильевском острове...
А сравнивать по фио И дате рождения нельзя?
Банально - номер паспорта, он уникален.
Банально - номер паспорта, он уникален.
У меня было три паспорта РФ (два по возрасту, один по утрате), пять загранников, и это далеко не предел. Поэтому - что именно уникально - текущий номер паспорта ?
Тот, который пользователь вводит в форме бронирования, разумеется. Какой выбрать - пусть сам решает.
Тот, который пользователь вводит в форме бронирования, разумеется. Какой выбрать - пусть сам решает.
И откуда тогда подтягивать информацию о бонусах? если он сегодня летит по паспорту рф, а завтра по второму заграничному?
И откуда тогда подтягивать информацию о бонусах?
Прикрутить к страничке авторизацию в бонусной системе?
Из аккаунта бонусной системы, в которой у каждого пользователя свой идентификатор, не завязанный на паспорта. Обычно поле для этого идентификатора тоже есть в формах бронирования (а при бронировании на сайте перевозчика он автоматом подтягивается, если пользователь залогинен).
Даже скрин не поленился сделать
![](https://habrastorage.org/getpro/habr/upload_files/af0/cc0/e73/af0cc0e73cb7eae30bc53384716b2ad3.png)
Пусть указывает в дополнение и тот, где бонусы. Авиакомпания все равно на стойке регистрации производит аутентификацию человека с документами. В рамках этого же процесса заглянет и в дополнительный документ. В целом можно обеспечить и запоминание этой связи после аутентификации.
Ну так каждый номер уникален ж.
А при проверке на посадке - в них во всех будет ФИО. И видимо при проверке будет указан как раз тот который был указан при оформлении (ну исключая ситуации вида когда международный перелет, вылет должен быть с паспортом №1 потому что это паспорт страны отправления но при этом страна назначения для паспорта №1 - визовая но есть паспорт №2 с которым виза не нужна - в таких случаях все равно оба показать придется)
Номер паспорта уникален для идентификации человека, но не наоборот. Он сурьективен (или иньекьтвен), но не биективен ;)
У нас >> было три паспорта РФ (два по >>возрасту, один по утрате), пять >>загранников, и это далеко не предел
"не то чтоб это был необходимый запас для познани Бога, но если уж начал исследование, то очень сложно остановиться":))
Я тут покупал на один паспорт недавно, и потом уже бронирование привязал к другому , если уж очень хочется. Правда какие то авиакомпании за это плату хотят.
Паспорт для бронирования это какой то пережиток. Практически во всем остальном мире для бронирования достаточно имен и фамилий, и все работает. Подобные детские баги "технические нюансы" везде починены наверное лет тридцать назад.
Перелёты бывают в т.ч. международные - даже если на внутренних рейсах ID никакой не нужен, то для международных не обойтись.
Невозможно оформить авиабилеты на двух пассажиров с одинаковыми ФИО, рассказали в пресс-службе Smartavia: «Это связано с техническими нюансами системы бронирования» (используют Leonardo от «Сирена-Трэвел»)
при чем тут перевозчики, если это импортозамещенная система ?
Российские авиакомпании импортозаместили зарубежные системы бронирования. Как заявили в Минтрансе, все 53 перевозчика перешли на отечественный софт, который управляет продажами, а также контролирует расписания рейсов и пересадки пассажиров. Речь идет о двух российских разработках. Системой Leonardo, которую создали «Ростех» и компания «Сирена Трэвел», теперь пользуются в том числе «Победа», «Аэрофлот», «Россия» и «Уральские авиалинии».
![](https://habrastorage.org/getpro/habr/upload_files/c12/e8d/164/c12e8d1649e32fd85e3eb6b48ee206d9.jpg)
«Это связано с техническими нюансами системы бронирования»
Банально - какой-нибудь UNIQUIE CONSTRAINT на ФИО поставили :) У меня одни знакомые когда-то тоже встряли на переделки, когда оказалось, что существуют люди у которых фамилия состоит только из одной буквы :) К любым предположениям и допущениям надо всегда подходить с осторожностью, а лучше всего отдать это на откуп аналитикам - в случае чего тогда все последствия можно на них свалить :))
Мне понравилась ситуация, когда ФИО у человека было из четырех слов. Что-то вроде AAA BBB CCC Оглы.
На хабре были хорошие статьи на эту тему: https://habr.com/ru/articles/146901/ и пара https://habr.com/ru/articles/714092/ https://habr.com/ru/articles/719120/
UNIQUIE CONSTRAINT на ФИО поставили
меня в еще в колледже за это били по рукам
Хм. Я помню лет в 7(лет так 30 назад) был у мамы на работе в авиакомпании и слышал что они билеты в "сирену" вбивают... Это какая-то другая сирена?
Исправят, наверное, скоро. Но при регистрации на рейс допускается до двух отличий в имени относительно паспорта, поэтому, пока не исправили, должен сработать workaround : Сыну купить билет на имя Иван Иванов, а папе - на имя Иванн Иванов. А еще лучше просто поменять местами имя и фамилию в форме заказа билета. Мили для бонусной программы, правда, придется по телефону через оператора регистрировать
и никуда не полететь из-за отличия в билете и паспорте при прохождении в зону транспортной безопасности.....
Сыну купить билет на имя Иван Иванов, а папе - на имя Ивaн Иванов.
Вот так должно прокатить :))
Допускается до двух опечаток, насколько я помню.
Это при регистрации, а тута сверка паспорта и билета точная.... это чуток другая епархия и им чуток положить на правила авиакомпаний....
Можно ещё имя ввести в поле для фамилии и наоборот
У меня как раз случай из статьи, полностью идентичные фио с папой, всю жизнь делали как вы описали - 1 опечатку при оформлении любого из билетов, правят на регистрации в аэропорту, проблем вроде ни разу не было.
Я один не понимаю почему нельзя одному человеку (=с одинаковыми именами/фамилией/отчеством) бронировать больше одного места? Может быть я толстый и не помещаюсь на одно место. Или социфоб и хочу, чтобы слева и справа никого не сидело, поэтому покупаю три места в ряду и сажусь посередине.
Я оплачиваю эти места, какое вам дело сидит там кто-то или нет? Более того, самолёт сэкономит чуток топлива потому что они будут пустые.
Это у вас в Америке всё можно за деньги. :)
в теории, защита от перекупства.
Купил такой социофоб три места, всё отлично. Приходит на посадку, и тут АК говорит "а у нас овербук, вот эти два места теперь будут заняты другими людьми". Интересно, как это всё в таких ситуациях разруливается.
У нас сыном одинаковые имена и отчества, но разная транслитерация в паспортах. Значит не зря боролся при замене заграна за сохранение своей, а не замену на правильную по их мнению
Не спешите радоваться, скоро подключат какой-нибудь ИИ к системе бронирования, оно быстро наведет порядок и исправит эти досадные промахи)))
Оффтоп. Если речь про российский загранпаспорт, надо учесть, что с конца 23 года сильно придираются на паспортном контроле к данным. В том числе и к написанию. Даже к месту рождения, которое на русском написано: Екатеринбург/ Свердловск.
Забавно что никто из комментаторов похоже не прочитал абзац
"Как предположил собеседник «Ъ» в одной из российских систем бронирования, сбои при оформлении билетов на одно имя могут быть вызваны настройками фильтров самих перевозчиков: «Система бронирования их не блокирует»." и
"Авиакомпании зачастую борются с «дублями» во избежание ошибок, говорит главный редактор FrequentFlyers[.]ru Илья Шатилин, который сталкивался с подобными сложностями при попытке оформить на себя у одной авиакомпании два билета в разных направлениях на один день или в течение 72 часов в ряде случаев. Некоторые перевозчики могут аннулировать такой билет, полагая, что тот забронирован по ошибке."
Еще помню была проблема, когда покупал билет на самолет оказалось, что нельзя ввести отчество с пробелом. В паспорте ФИО из 4 слов, а ввести дает только 3. До последнего боялись, что могут докопаться при посадке.
Когда соседняя команда делала БД пользователей (правда, для менее ответственной системы) они чуть не прошляпили, что бывают фамилии с дефисами и, действительно, отчества из 2 слов. Я им ещё и апостроф предлагал заложить, на случай внезапных д'Артаньянов, но тут они не послушались...
Проверил - УА даёт норм оформить билет.
Hidden text
![](https://habrastorage.org/webt/4x/wv/vt/4xwvvtmmwl17lyvtnizaqrw0cn0.png)
Почему нельзя добавить время бронирования как некую соль к записи о пассажире ?
Блин а как же быть, если хочешь себе выкупить весь самолет, что бы соседи во время полета не мешали?
Обращаться в чартерный отдел авиаперевозчика)
Такое иногда случается и без необходимости скупать все билеты.
Зачем так далеко ходить?
https://www.youtube.com/watch?v=IRsRolCHRIA
Только не спрашивайте что случилось.
del
У меня была другая история. Вылетал из Схипхол (Амстердам), было два рейса одновременно на Варшаву. Мало того, что кто-то додумался их поставить в одно и то же время, так они были в разных гейтах (а аэропорт достаточно большой) и на табло был отображен только один. Попался на этот косяк не только я - в итоге еле успел. Теперь всегда помимо времени вылета проверяю на табло еще и номер рейса.
Теперь всегда помимо времени вылета проверяю на табло еще и номер рейса.
...не хочу Вас огорчать, но встречал случаи, когда рейс 123 авиакомпании A на табло показывался как рейс 456 компании B (просто компания A выяснила, что у неё какие-то проблемы с самолётами/расписанием, и договорилось с компанией B, что заплатит ей, а та "слетает за неё".
А ещё встречал, что один самолёт летит как три рейса трёх разных авиакомпаний — просто у каждой оказалось продано мест только на треть самолёта.
Я как-то за три часа до вылета подхожу к гейту и внезапно вижу, что посадка на мой рейс уже вовсю идёт. Лишь абсолютная убеждённость, что такое невозможно, заставила меня раз пять, наверное, перепроверить все детали, и только тогда я, наконец, понял, в чём дело. Пункт назначения тот же самый, гейт тот же самый, тип самолёта тот же самый (снаружи виден припаркованный 777 с протянутым к нему коридором), а разница в том, что номер моего рейса — EK-379, а собирающегося вылетать — EK-397. Вот надо ж им так было подгадать!
Минтранс попросил авиаперевозчиков объяснить проблемы с билетами для однофамильцев