Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2017.09.10;
Скачать: [xml.tar.bz2];

Вниз

алгоритмы выборки похожих фио   Найти похожие ветки 

 
Дмитрий   (2015-04-17 18:43) [0]

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

Какие существуют алгоритмы выборки похожих лиц, включая возможные ошибки в написании имен и перестановки типа "Иван Иванов" и "Иванов Иван"?


 
Rouse_ ©   (2015-04-17 19:09) [1]

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


 
Германн ©   (2015-04-17 22:59) [2]

Удалено модератором


 
Труп Васи Доброго ©   (2015-04-23 14:42) [3]


> "Иван Иванов" и "Иванов Иван"

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


 
junglecat ©   (2015-04-23 14:55) [4]

> каждое в отдельном поле

и в отдельных справочниках.
Только при желании помойку можно развести где угодно, будь там хоть трижды 1 НФ


 
Труп Васи Доброго ©   (2015-04-23 15:04) [5]


> и в отдельных справочниках.

Ничего смешного.
Я делал базу с отдельными таблицами имён и фамилий. То есть таблица ФИО  была примерно такая: ID ID_Surname ID_Name ID_Name2 Отчества образовывались автоматически от имени, поэтому отдельная таблица для них не требовалась.


> при желании помойку можно развести где угодно

Это естественно, но предоставлять возможность для этого юзеру - мерзость.


 
Rouse_ ©   (2015-04-23 18:28) [6]

Пожалуй вы не в ту степь ребят залезли.
Повторю еще раз ответ на данный вопрос:

> Какие существуют алгоритмы выборки похожих лиц

Ответ: любой перцептивный хэш.

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


 
кгшзх ©   (2015-04-23 20:02) [7]

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


какой наивный погромист.


 
Ega23 ©   (2015-04-23 22:30) [8]


> Какие существуют алгоритмы выборки похожих лиц, включая
> возможные ошибки в написании имен и перестановки типа "Иван
> Иванов" и "Иванов Иван"?


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

1. Данные могут быть введены с ошибкой. Михиалович например.
2. Данные могут быть введены в разной раскладке. Пример Розыч уже привёл.
3. "Ё-е" и "Й-и". Фёдорович-Федорович и Михаилович-Михайлович
4. У человека может не быть фамилии. У монголов нопремер.
5. У человека может не быть отчества.
6. У человека могут быть всякие составные имена, фамилии и отчества. Пример: Пескоструев-Захреначинский Магомед-Гаджи Махмуд-Оглы
7. Знаменитый адмирал Максимилиан Иоханнес Мария Губертус рейхсграф фон Шпее (набирал по-памяти, мамойклянус!)
8. Вероятность полного совпадения ФИО не очень высокая, но она есть. Лично как минимум две пары знаю.

А вот теперь попробуй всё это дело формализовать.
И таки да, когда будете базу под персоналии проектировать, не думайте, что трёх полей varchar(32) с лихвой хватит на ФИО. Я тоже так когда-то думал, ага.


 
Ega23 ©   (2015-04-23 22:32) [9]

А, ещё забыл.
9. Составные ФИО могут быть введены с разными видами тире-дефиса (ещё длинное тире).
10. Унутре ФИО могут встречаться непечатные служебные символы, это при копипасте было такое.


 
Ega23 ©   (2015-04-23 22:36) [10]


> Во избежание многократного дублирования.


И самое главное: хоть кол на башке пользователям теши, но дублирование БУДЕТ. Хоть стопицот способов этого избежать придумывай - всё равно оно будет, т.к. народ у нас пытлив и любознателен.


 
Ega23 ©   (2015-04-23 23:48) [11]

Подумал тут. По ИНН ориентируйся вопщем.


 
Inovet ©   (2015-04-24 08:32) [12]

> [11] Ega23 ©   (23.04.15 23:48)
> По ИНН

По СНИЛС, можно паспорт ещё. Но! Сообщения "СНИЛС повторяется", "ИНН повторяется" и т.п. будут игнорировать и тупо не вводить совсем, раз тупая программа не даёт ввести и пишёт чё-то там, а вот человека всё равно задвоят.


 
Ega23 ©   (2015-04-24 08:36) [13]

Паспорт люди меняют.


 
Труп Васи Доброго ©   (2015-04-24 08:55) [14]


> Михиалович например.

Конечно можно ошибиться, но наличие справочника имён эту возможность зело уменьшает.
Когда оператор начинает вводить в поле "Имя" Мих, то ей уже предлагается автоввод "Михаил". Операторы к этому ОЧЕНЬ быстро привыкают и сильно настораживаются, когда на стандартное имя Сеергей система говорит что в списке не значится и спрашивает "Добавить в справочник?". В 99,99% случаев оператор тут же замечает ошибку и исправляет её. Да и потом при (как это навзывают в нашей конторе) "достоверизации", если в справочние имён обнаруживаются похожие дубли типа Михаилович-Михайлович или Сергей-Сиргей, то сделав одно исправление в справочнике исправляются все Сиргеи на правильного Сергея. Это не так сложно, выявить в, (не очень то большом) справочнике имена, отличающиеся одной-двумя буквами. Людей может быть и десять миллионов, а различных имён всего тысячи полторы. Фамилии так же не отличаются разнообразием, а уж отчества вообще образуются от имени, поэтому отдельного справочника не требуют.

> У человека могут быть всякие составные имена, фамилии и
> отчества.

Не вижу как это мешает? Да хоть восьмиэтажные, но это будет всего три поля: длинное имя, большая фамилия и заковыристое отчество. Как это "ломает систему"? К тому-же таких людей по стране с гулькин хрен. И уж если такой попадётся, то 99.999% операторов будут заносить такое ФИО особо внимательно.

> У человека может не быть фамилии. У монголов нопремер.

Я пишу про РФ, здесь по закону фамилия есть у всех, вон у отца Шойгу тоже отчества не было, так присвоили. Сможешь найти паспорт РФ без фамилии - пришли скан. Да и какая проблема в пустом поле? В моей системе будет однозначно ясно чего не фватает Ф, И, или О, а вот если вводить всё в одно поле, то хрен догадаешься чего именно не хватает.

> Унутре ФИО могут встречаться непечатные служебные символы



> "Oлег" и "Олег" - не равнозначны



> Составные ФИО могут быть введены с разными видами тире-дефиса

Да-да-да, а про запрет ввода неположенных символов вы, конечно, никогда не слышали?
Проблема высосана из пальца.
З.Ы. Я то думал что я так себе программист, а большинство местных - высоколобые мастера, а оказывается люди бьются над проблемами, которые решаются после прочтения первых ста страниц любого учебника "Delphi для чайников" и пары минут размышлений. Прав был мой учитель - программист, он должен головой уметь думать, а кто только язык хорошо знает это просто кодер.


 
Труп Васи Доброго ©   (2015-04-24 09:02) [15]


> будут игнорировать и тупо не вводить совсем

Конечно же запретить ввод записи без заполнения обязательного поля это такая большая программная проблема... (сарказм)


 
Ega23 ©   (2015-04-24 09:16) [16]


> Я пишу про РФ, здесь по закону фамилия есть у всех, вон
> у отца Шойгу тоже отчества не было, так присвоили. Сможешь
> найти паспорт РФ без фамилии - пришли скан.


Я тоже писал систему для режимных объектов. АЭС, например. Но потом выяснилось, что туда может и монгол придти, по своему паспорту, в составе дружественной делегации таких же монголов. И паспортами РФ там ваще не пахнет. Но с монголами проще, у них кириллица. А вот у немцев - латиница, причём с умляутами.


>  а вот если вводить всё в одно поле, то хрен догадаешься чего именно не хватает

А зачем всё в одно поле вводить? На три надо разбивать, это и ежу понятно. Просто нельзя требовать однозначного ввода во все три, нюансов очень много.


 
Ega23 ©   (2015-04-24 09:25) [17]


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


Шедеврально. Это до первого этнического азербайджанца, у которого отчество через "оглы" идёт, или до первого мусульманина, отец которого совершил хадж.


 
Труп Васи Доброго ©   (2015-04-24 09:33) [18]


> у которого отчество через "оглы"

Ну да, а у женщины через "кызы" и что? Вместо Ахмет-оглы и Авган-кызы записывается по правилам русского языка Ахметович и Авгановна, никаких претензий никогда не возникало.


 
Труп Васи Доброго ©   (2015-04-24 09:37) [19]


> отец которого совершил хадж.

ЕМНИП Кадырова в официальных сообщениях пишут так же Рамзат Ахматович и не более. Это когда его отца вспоминают, то говорят Ахмат-хаджи. Но это чисто религиозный обычай. В паспорте ничего не меняют.


 
Ega23 ©   (2015-04-24 10:33) [20]


> Ну да, а у женщины через "кызы" и что? Вместо Ахмет-оглы
> и Авган-кызы записывается по правилам русского языка Ахметович
> и Авгановна, никаких претензий никогда не возникало.


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


 
кгшзх ©   (2015-04-24 10:39) [21]

которые решаются после прочтения первых ста страниц

Что и требовалось доказать.
Непуганный, наивный пОгромист


 
Inovet ©   (2015-04-24 10:41) [22]

> [13] Ega23 ©   (24.04.15 08:36)
> Паспорт люди меняют.

Да, и при этом одинаковых паспортов не выдают, а при получении нового - менять надо и в базе. Но паспорт плохой идентификатор, СНИЛС в этом смысле больше годится, к тому же его собираются узаконить, как основной идентификатор личности. Но вот проблема - надо обязательно ввести человека, а СНИЛС и/или ИНН у него нет/забыл дома/ещё что-то, заносят без них, потом забывают внести, но это до первой отчётности.


 
Inovet ©   (2015-04-24 10:45) [23]

> [15] Труп Васи Доброго ©   (24.04.15 09:02)
> Конечно же запретить ввод записи без заполнения обязательного
> поля это такая большая программная проблема... (сарказм)

Читай предыдущий ответ. Запретить не проблема, а надо бывает.


 
Труп Васи Доброго ©   (2015-04-24 11:30) [24]


> Что и требовалось доказать.

Да, да ,да. Всё гамно, ничего сделать нельзя. Ты попытался и не смог, значит ни у кого тем более не получится. Я тебя услышал.

> Запретить не проблема, а надо бывает.

Знаю что бывает. Для этого используются стандартные значения-"заглушки", которые программа принимает. Потом отдел контроля периодически выгружает все записи с заглушками и с помощью умножения премии оператора на отрицательное число решает проблему "забытых" данных.
Всё решаемо, если решать. А потрындеть, что всё жутко сложно, это всегда можно, но не конструктивно.

> Во-вторых, претензий не возникало просто потому, что никто
> в суд не подал за то, что его родное имя (фамилия, отчество)
> были исковерканы

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


 
Ega23 ©   (2015-04-24 11:41) [25]


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


Ха три раза.
Впрочем, можешь продолжать упорствовать, дело твоё.


>  Ты попытался и не смог, значит ни у кого тем более не получится


Все когда-то это делали. Просто с опытом приходит понимание того, что это - мартышкин труд. Не формализуется ФИО. Никак.


 
Труп Васи Доброго ©   (2015-04-24 13:17) [26]


> Ха три раза.

Это уже уход от темы, но кроме смеха можешь привести статью закона, который нарушается при замене Умар-оглы на Умарович?


 
junglecat ©   (2015-04-24 13:22) [27]

Удалено модератором


 
кгшзх ©   (2015-04-24 13:43) [28]

да не разрушайте вы челу иллюзию.


 
Ega23 ©   (2015-04-24 15:08) [29]


> Это уже уход от темы, но кроме смеха можешь привести статью
> закона, который нарушается при замене Умар-оглы на Умарович?


В ГК есть статья по защите имени гражданина, далее - к юристам.
Исходя из личного общения со многими кадровыми службами многих объектов, прецеденты были. Чем закончилось - не в курсе, но знаю точно, что делопроизводитель бюро пропусков несёт персональную ответственность за то, что он пишет в пропуске поциэнта. И за то, что набивает на клаве - тоже.

А ещё я тебе приведу пример, когда мой бывший коллега Алексей, родившийся и до 21 года проживший в Тбилиси, когда уже в нэзалэжной Грузии пришёл получать паспорт, был в паспортном столе наречён Александром. Мотивировали это тем, что "такого имени у нас нет". Хорошо, что он вскоре из того дурдома свалил. Но проблем потом он поимел массу, когда свидетельство о рождении советского образца выписано на имя Алексей, а аттестат об окончании тбилисского универа - на имя Александр.
А всё потому, что тоже кто-то ID жестко забил. Ну либо ФМГ.
Повторюсь:
Впрочем, можешь продолжать упорствовать, дело твоё.


 
Kilkennycat ©   (2015-04-24 22:38) [30]

[Конституция] [Глава 2] [Статья 23]
1. Каждый имеет право на неприкосновенность частной жизни, личную и семейную тайну, защиту своей чести и доброго имени.

Семейный кодекс РФ
Глава 11. ПРАВА НЕСОВЕРШЕННОЛЕТНИХ ДЕТЕЙ
Статья 58. Право ребенка на имя, отчество и фамилию
1. Ребенок имеет право на имя, отчество и фамилию.
2. Имя ребенку дается по соглашению родителей, отчество присваивается по имени отца, если иное не предусмотрено законами субъектов Российской Федерации или не основано на национальном обычае.
3. Фамилия ребенка определяется фамилией родителей. При разных фамилиях родителей ребенку присваивается фамилия отца или фамилия матери по соглашению родителей, если иное не предусмотрено законами субъектов Российской Федерации.
4. При отсутствии соглашения между родителями относительно имени и (или) фамилии ребенка возникшие разногласия разрешаются органом опеки и попечительства.
5. Если отцовство не установлено, имя ребенку дается по указанию матери, отчество присваивается по имени лица, записанного в качестве отца ребенка (пункт 3 статьи 51 настоящего Кодекса), фамилия - по фамилии матери.

Википедия:
Право на имя — неотчуждаемое субъективное право, является личным неимущественным правом, возникает в основном у субъектов гражданского, авторского, семейного права.
Вред, причиненный гражданину в результате неправомерного использования его имени, подлежит возмещению в соответствии с Гражданским Кодексом РФ.
При искажении либо использовании имени гражданина способами или в форме, которые затрагивают его честь, достоинство или деловую репутацию, применяются правила, предусмотренные статьей 152 ГК РФ.


 
Ega23 ©   (2015-04-24 22:42) [31]

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


 
Дмитрий   (2015-04-27 17:26) [32]


> Подумал тут. По ИНН ориентируйся вопщем.

Начальство восприняло предложение положительно.


> По СНИЛС, можно паспорт ещё. Но! Сообщения "СНИЛС повторяется",
>  "ИНН повторяется" и т.п. будут игнорировать и тупо не вводить
> совсем, раз тупая программа не даёт ввести и пишёт чё-то
> там, а вот человека всё равно задвоят.


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


 
Rouse_ ©   (2015-04-27 19:11) [33]


> Труп Васи Доброго ©   (24.04.15 08:55) [14]
> Да-да-да, а про запрет ввода неположенных символов вы, конечно,
>  никогда не слышали?
> Проблема высосана из пальца.

Так и запишем - нет проблем :)
Но есть нюанс:

Если ты вот такое заявишь в любом паспортном столе, а тем более в посольстве (к примеру Киргизии):

> Труп Васи Доброго ©   (24.04.15 09:33) [18]
> Ну да, а у женщины через "кызы" и что? Вместо Ахмет-оглы
> и Авган-кызы записывается по правилам русского языка Ахметович
> и Авгановна, никаких претензий никогда не возникало.

Тебе укажут на дверь и забудут как тебя зовут.
Дело в том что "оглы" и "кызы" являются неотъемлемой частью имени которое пишется в паспорте (документ такой). Это я тебе как погранец говорю :)
И человека с твоими Ахметовичами -= никто через границу не пропустит, даже если морда в документе будет совпадать.
А ты вдруг предлагаешь все это поменять на по русски.
Впрочем, давай поменяем на вообще Литовский принцип написания. Вместо Андрея будет писать Андреус и т.п.


 
Rouse_ ©   (2015-04-27 19:53) [34]

Зы, до кучи, кызы - пишется именно вместо отчества.
Т.е. "Отынбекова Бегайым-кызы", это не значит что она Бегайимовна, она вполне изначально могла быть и "Отынбекова Бегайым Нурсултановна", но решила себе сделать именно "кызы" - кстати об этом отдельная повесть, зачем делается именно так.
Так вот: если писать так как ты предложил, то это не отчество, а какое-то матчество получится, наподобие "Найденовой Александры Натальевны" :)
Пруф: http://www.youtube.com/watch?v=Mpmay0dJcwo
:)


 
Rouse_ ©   (2015-04-27 20:01) [35]

ЗЗЫ: пардон с примером конечно напутал, более правильно будет "Бегайым Отынбек Кызы" :) Но сути не меняет :)


 
Inovet ©   (2015-04-27 20:09) [36]

Да ясно, что ерунда это - менять записанные в паспорте ФИО. И не в судах дело, а втом, что это несоответсвует документу. С иностранцами аналогично: написано латиницей в документе - латиницей и вводить.


 
Inovet ©   (2015-04-27 20:13) [37]

> [34] Rouse_ ©   (27.04.15 19:53)
> Пруф: http://www.youtube.com/watch?v=Mpmay0dJcwo

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


 
Rouse_ ©   (2015-04-27 20:14) [38]

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


 
Inovet ©   (2015-04-27 20:19) [39]

> [32] Дмитрий   (27.04.15 17:26)
> инн + фио прописывать код уже существующей записи без создания новой

А вот такую автоматизацию делать не стоит. Человеческие ошибки при вводе всегда есть: ФИО похожие, ИНН/СНИЛС другого человека взяли, у которого похожие, а программа взяла и поменяла на него. Разбираться в ошибках не забота программы, да и невозможно однозначно определить ошибка или нет, а вот выдать предупреждение и не позволить ввести одинаковые - дело программы, а оператор пусть ищет причину.


 
Ega23 ©   (2015-04-28 12:04) [40]

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


 
Труп Васи Доброго ©   (2015-04-28 13:34) [41]

Если пытаешься написать что-то универсальное, что подходит всем и везде - можешь даже не начинать. Что вы зациклились на каких-то киргизах, литовцах и иностранных гражданах с латинскими именами? Сразу пограничную службу приплели и прочие налоговые органы. Любая задача решается в меру требуемой точности. ТС же не сказал, что он базу для ФСБ пишет. Может это вообще база посетителей бани, а вы тут развели флуд про стобуквенные имена и прочие кызы. Судя по описанному им бардаку, там не то что точностью, там даже приблизительностью не пахнет.
Моя база предназначалась для хранения данных абонентов электросетей, и ФИО, там был не главным идентификатором и даже паспорт был не главным, главный это номер лицевого счёта. И повторяю, я говорил про РФ, а не про абстрактную страну. Ни один из азербайджанцев, к которому обращались "Ахметович" или "Ильшанович" ни разу не возмущался и не доказывал что его надо называть именно "оглы", так что не надо выдувать из мухи слона. Будет речь идти о БД ФМС, я первый буду ратовать за точное посимвольное внесение данных. И опять-же, в РФ существует система ФИО, значит и поля должно быть три. А пустословием можно зайти в тупик даже этапе внесения даты рождения. Мол у нанайцев дату через чёрточку вносят, у китайцев через слэш и с указанием цвета и материала года, а в эфиопии записывают только месяц по календарю шумеров.


 
кгшзх ©   (2015-04-28 13:54) [42]

в РФ существует система ФИО, значит и поля должно быть три.

не значит, но кажется


 
Ega23 ©   (2015-04-28 14:19) [43]


> Ни один из азербайджанцев, к которому обращались "Ахметович"
> или "Ильшанович" ни разу не возмущался и не доказывал что
> его надо называть именно "оглы", так что не надо выдувать
> из мухи слона.


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


> ТС же не сказал, что он базу для ФСБ пишет.


ТС уже согласился, что лучше на ИНН завязаться.

Кстати, ФИО можно сменить. И даже пол.


 
Inovet ©   (2015-04-28 14:51) [44]

> [43] Ega23 ©   (28.04.15 14:19)
> лучше на ИНН завязаться

На СНИЛС, ИНН вообще-то необязателен, хотя заводится на всех, как я тут недавно обнаружил, чуть ли не с рождения. С другой стороны у военных вроде бы СНИЛС нет.

> [43] Ega23 ©   (28.04.15 14:19)
> Кстати, ФИО можно сменить. И даже пол.

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

> [41] Труп Васи Доброго ©   (28.04.15 13:34)
> в РФ существует система ФИО, значит и поля должно быть три.

Отчества может и не быть.


 
Inovet ©   (2015-04-28 15:05) [45]

Ещё. Номер паспорта меняется при его замене, ИНН/СНИЛС остаются неизменными. Но, опять же, человеческие ошибки приводят к тому, что ФИО может быть разное в паспорте/ИНН/СНИЛС. Естественно ФИО надо брать с основного документа - паспорта, а для смены в остальных человек должен сходить в соответствующую организацию и подать заявление на изменение. Но кто же пойдёт, пока не коснётся. Насчёт ИНН не уверен, там, может, и без него поправят.

Итог. Автоматизировать невозможно, ибо много нюансов.


 
Kilkennycat ©   (2015-04-28 15:06) [46]

сделать одно поле. бить тех, кто вводит не в порядке очередности ФИОИТД. Сделать проверку с предупреждением: "Вы точно уверены, что Пупкинвасяоглы - это верно?"
Одно поле с предпроверкой не сильно увеличивает кол-во ошибок, сильно ускоряет ввод.


 
Kilkennycat ©   (2015-04-28 15:08) [47]

и вообще не привязываться к фио. программе пофиг.


 
Дмитрий   (2015-04-28 17:57) [48]

Таблица Предприятия ранее называлась Клиенты, до возникновения необходимости учитывать Партнеров и Поставщиков.
Персонал - представители Клиентов и Партнеров.
Есть клиенты в Бишкеке и прочих снг.
На моей памяти француз залетный делал заказ.

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

Про какой бардак заявлял труп васи?
Бардак несомненно присутствует, но несколько в другом месте.


 
Rouse_ ©   (2015-04-28 20:24) [49]


> Труп Васи Доброго ©   (28.04.15 13:34) [41]

Да я просто про то хотел сказать что у Монголов, к примеру фамилий нет, так-же как и отчеств у граждан дружественной нам пиндосии :)
Поэтому натягивать все это через призму трех ФИО полей не всегда актуально ;)


 
Dennis I. Komarov ©   (2015-04-28 21:35) [50]

А про более одного имени никто не вспомнил


 
Rouse_ ©   (2015-04-28 22:57) [51]

Как это? [38]


 
Труп Васи Доброго ©   (2015-04-29 01:32) [52]


> Про какой бардак заявлял труп васи?

Про полный. Если нет формализации и ключа у "персонала", то твоя задача нерешаема. Ибо нет закона, запрещающего быть двум и более Иван Иванычам в одной конторе. Как ты их отличать будешь? Если люди из разных страноконтинентов, то можно было сразу сказать, я же многократно уточнил, что я говорю про РФ, здесь у всех граджан имеется ФИО, а мне опять про монголов талдычат. В РФ есть отчества и у монголов, если они граждане РФ.
Тогда про какие нафиг ИНН и СНИЛС идёт речь, если там и нанайцы и китайцы с французами??? Сами себе противоречите, граждане. Значит отчеств у монголов нет, а СНИЛС российский есть... ну да и ИНН россиянский у француза.


 
Труп Васи Доброго ©   (2015-04-29 02:01) [53]

На всякий случай, если у кого опять монголы в голове всплывут, в РФ у ВСЕХ граждан есть отчество. Вот выписка из закона:
ОБ АКТАХ ГРАЖДАНСКОГО СОСТОЯНИЯ
Статья 18. Запись фамилии, имени и отчества ребенка при государственной регистрации рождения

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

Так доходчивее? В четвёртом пункте и кроются все "улы", "оглы", и прочие "кызы", но в любом случае отчество ОДНОЗНАЧНО имеется и указывается.


 
Kilkennycat ©   (2015-04-29 02:13) [54]


> Труп Васи Доброго ©   (29.04.15 02:01) [53]

Гражданство РФ можно получить не осуществляя свое рождение в РФ.


 
Inovet ©   (2015-04-29 02:22) [55]

> [52] Труп Васи Доброго ©   (29.04.15 01:32)
> В РФ есть отчества и у монголов, если они граждане РФ

Ещё раз. Отчества может не быть и в РФ.


 
Styx   (2015-04-29 07:59) [56]

А бывают люди с одним именем. Напрмер, Madonna, Cher и Govindjee.


 
Труп Васи Доброго ©   (2015-04-29 09:43) [57]


>  Отчества может не быть и в РФ.


> А бывают люди с одним именем. Напрмер, Madonna, Cher и Govindjee.

Не бывают. Это которые Мадонна Луиза Чикконе, Ше́рилин Саркися́н Лапье́р Бо́но О́ллмэн?
Это лишь слова. Докажите делом или законом. Выкладывайте скан реального паспорта гражданина РФ, родившегося в РФ, без фамилии, имени или отчества.

> Гражданство РФ можно получить не осуществляя свое рождение
> в РФ.

И что?
Как всё это (вместе с оглы и монголами) помешает системе ФИО из трёх полей????
Кто мешает оставить поле ПУСТЫМ??? Или как система трёх полей помешает записать в поле "имя" что то экзотическое, вроде Жерар-Ксавье или Жан-Поль?


 
Inovet ©   (2015-04-29 10:54) [58]

> [57] Труп Васи Доброго ©   (29.04.15 09:43)
> Как всё это (вместе с оглы и монголами) помешает системе ФИО из трёх полей

Для ФИО должно быть три поля, кто же спорит.


 
Ega23 ©   (2015-04-29 11:00) [59]


> Как всё это (вместе с оглы и монголами) помешает системе
> ФИО из трёх полей????


Речь не о трёх полях, а о коверканьи ФИО. В трёх полях или в одном - это вопрос исключительно удобства пользователей, если им не надо печатать пропуска/отчеты/карточки по шаблону, гда ФИО в трёх разных местах сидит, а также не надо часто по ФИО искать - можно всё в одном поле хранить.


 
Труп Васи Доброго ©   (2015-04-29 11:35) [60]


> можно всё в одном поле хранить.

Ну да, чтобы потом спрашивать: "Как отличить Иванова Ивана от Ивана Иванова".


 
Styx   (2015-04-29 11:54) [61]


> Govindjee

У него ставят в качестве имени FNU - first name unknown. Хотя по факту это именно первое имя, а от last он отказался (почему - можете найти в сети). И у тех двух девушек, насколько я знаю, стоит одно имя - по информации от, собственно, Govindgee - он очень любит рассквзывать, что рн - один из трёх людей ы Штатах с одним именем. :)


 
Ega23 ©   (2015-04-29 12:11) [62]


> Ну да, чтобы потом спрашивать: "Как отличить Иванова Ивана от Ивана Иванова".


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


 
Inovet ©   (2015-04-29 13:14) [63]

После озвучивания реальной задачи делаем вывод - задача ещё более неразрешимая. Отличаются ли степени неразрешимости? Нет. А вот степени возможностей контроля различаются - ИНН/СНИЛС у одних есть у других нет, а документ удостоверяющий личность у всех должен быть. Хуже, но хоть как-то можно ПРИ ВВОДЕ проконтролировать задвоение. Хуже тем, что через год этот же человек придёт с новым паспортом - поменял по возрасту, сменил фамилию, потерял старый, его вносят повторно и никак не проверить был ли он уже внесён, особенно в случае смены ФИО. Ни программа не проверит, ни оператор.


 
Труп Васи Доброго ©   (2015-04-29 14:12) [64]

Сканировать отпечатки пальцев, рисунок сетчатки и стоматологическую карту. Редких двойников расстреливать на месте и кремировать останки. Это единственный способ. Решение любой задачи требует каких-то допущений, иначе ничего невозможно сделать. Если 99,99999% пациентов имеют ФИО, то и базу надо под них проектировать, а пришедщего Остапа Ибрагима Сулеймана Берта Марию Бендер-бея внести в БД просто как Остапа Ибрагимовича Бендера. Объяснить человеку, если потребуется, что в программе такие ограничения и ничего нельзя поделать. Вот и всё.


 
Kilkennycat ©   (2015-04-29 14:20) [65]


> Сканировать отпечатки пальцев, рисунок сетчатки и стоматологическую
> карту

днк из позвоночника


 
Ega23 ©   (2015-04-29 14:55) [66]


> Сканировать отпечатки пальцев, рисунок сетчатки


Угу. Ещё взвешивали. Было дело.


 
Дмитрий   (2015-04-29 18:33) [67]


> Труп Васи Доброго ©   (29.04.15 01:32) [52]
> > Про какой бардак заявлял труп васи?Про полный. Если нет
> формализации и ключа у "персонала", то твоя задача нерешаема.
>


Бардак начинается, когда вы, не внимательно прочитав, делаете поспешные выводы.
Вы также не различаете "задачу не решаемую", "не решаемую автоматически", "не решаемую в теории", и "задачу имеющую удовлетворительное решение"

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


 
brother ©   (2015-04-29 18:56) [68]

> Чтобы оператор решал по месту, создавать новую запись или
> привязаться к уже существующей.

> Чтобы оператор решал по месту, создавать новую запись или
> привязаться к уже существующей.

те потом будет что анализировать оператор? имхо: день рождения, адрес проживания, снилс...
2.


 
Германн ©   (2015-04-30 02:07) [69]


> Дмитрий   (29.04.15 18:33) [67]
>
>
> > Труп Васи Доброго ©   (29.04.15 01:32) [52]
> > > Про какой бардак заявлял труп васи?Про полный. Если
> нет
> > формализации и ключа у "персонала", то твоя задача нерешаема.
>
> >
>
>
> Бардак начинается, когда вы, не внимательно прочитав, делаете
> поспешные выводы.
> Вы также не различаете "задачу не решаемую", "не решаемую
> автоматически", "не решаемую в теории", и "задачу имеющую
> удовлетворительное решение"
>
> Меня вполне устроит показать оператору список записей уже
> зарегистрированных персоналей, схожих с создаваемой.

Вопрос в том устроит ли такое решение твоего работодателя.


 
Юрий Зотов ©   (2015-04-30 14:35) [70]

> Дмитрий   (29.04.15 18:33) [67]

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


Недавно решал ту же задачу.

Параметры поиска были разбиты на 2 группы - обязательные и необязательные. Результаты поиска получились в трех категориях:
1. Полное соответствие (совпали все параметры)
2. Частичное соответствие (совпали обязательные параметры, но не совпал хотя бы один необязательный).
3. Не найдено (не совпал хотя бы один обязательный параметр).

По категории 1 программа может сделать нужные действия автоматически. По категории 2 решение принимает оператор. По категории 3 не делается ничего.

Такое решение всех устроило (да и возможно ли другое?). Надо только хорошо продумать критерии поиска (какие параметры обязательные, а какие - нет). И еще надо иметь в виду, что одна входная запись может породить не одну, а несколько выходных записей в категории 2.


 
Юрий Зотов ©   (2015-04-30 15:14) [71]

И что касается собственно поиска по ФИО.

1. В экранном интерфейсе есть птичка - различать Е и Ё, или не различать. Оператор ставит эту птичку как ему надо. Если не различать, то в тексте запроса к БД используем TRANSLATE (замена Ё на Е), а в параметрах запроса - ReplaceAll (та же замена). И в любом случае используем UPPER.

2. Жаль, конечно, что на входе атрибуты в ФИО могут меняться местами, но это можно обойти простым перебором (и искать сцепленное ФИО).

Допустим, на входе имеем: Мусик Пусик. Мы не знаем, где тут фамилия, где имя, а где отчество. Запрос примерно такой:

select ... from ... where
(LastName || FirstName || Patronymic)  =  "МусикПусик"
or
(LastName || Patronymic || FirstName)  =  "МусикПусик"
or
... -- остальные 4 варианта


Запрос, конечно, не самый лучший, но суть он показывает.


 
Юрий Зотов ©   (2015-04-30 15:17) [72]

Вдогонку - и про TRIM не забываем, а то понагонят пробелов в БД...


 
Юрий Зотов ©   (2015-04-30 15:24) [73]

Нечеткое сравнение строк:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=722


 
Дмитрий   (2015-04-30 17:28) [74]


> Юрий Зотов ©   (30.04.15 14:35) [70]
>  Недавно решал ту же задачу.Параметры
> поиска были разбиты на 2 группы - обязательные и необязательные.
>  Результаты поиска получились в трех категориях:1. Полное
> соответствие (совпали все параметры)2. Частичное соответствие
> (совпали обязательные параметры, но не совпал хотя бы один
> необязательный).3. Не найдено (не совпал хотя бы один обязательный
> параметр).По категории 1 программа может сделать нужные
> действия автоматически. По категории 2 решение принимает
> оператор. По категории 3 не делается ничего.


Именно так, кроме п.3
Если никаких совпадений не найдено, создается новая запись, ссылку на которую и помещаем в Персонал.


 
Юрий Зотов ©   (2015-04-30 18:54) [75]

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


Это опасно. Допустим в БД - МихаЙлович, на входе - МихаИлович, а остальные атрибуты совпадают. То есть, это один и тот же человек, который при строгом сравнении будет продублирован  и мы получим грязь в базе.

Я бы использовал нечеткое сравнение и автоматически создавал новую запись только при совпадении 100%, а если меньше - то на откуп оператору.


 
Дмитрий   (2015-04-30 19:25) [76]

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


 
Игорь Шевченко ©   (2015-05-01 10:50) [77]

а как оператор узнает ?


 
Дмитрий   (2015-05-05 14:53) [78]

При обнаружении похожих записей ему будет показан список этих записей с возможностью открыть форму Персоны


 
Edgar_Wine   (2015-05-05 17:43) [79]

> бонусы при смене места работы

При смене? Бонусы? Отрицательные что ли? %)

У нас как бы различие персонала завязано на логин пользователя, уникальный, без пробелов и спец-символов, большинство предпочитают регистрироваться под числами типа 245, 1100.
То есть есть id записи (счётчик) и логин - основные поля. А опционально есть три необязательных поля Ф/И/О и одно вычисляемое, склеивающее их через пробелы. Заполняй, не заполняй, пиши любой текст. И люди при регистрации (в том числе киргизы и прочие) сами заполняют эти поля.

> похожих фио

Странный термин. Имя "Попугай" и имя "йагупоП" это как считать, похожие? С:


 
Ega23 ©   (2015-05-05 18:42) [80]


> У нас как бы различие персонала завязано на логин пользователя


База персонала и база пользователей некой системы - это совершенно разные вещи. Иногда они могут совпадать, но это только иногда.


 
Edgar_Wine   (2015-05-05 21:01) [81]

Это само собою, но вот решили не разделять - и всё вполне хорошо.


 
Ega23 ©   (2015-05-06 00:09) [82]


> Это само собою, но вот решили не разделять - и всё вполне хорошо.


Вот есть концерн, например - РосЭнергоАтом. Вот у него всякого персоналу - тыщ 200 человек. Они разбросаны по разным предприятиям, а некоторые вообще в субподрядных организациях состоят. Там всякие электрики, монтажники, водители, пожарные, охранники, охранники охранников, слесари, уборщицы, маляры, бухгалтеры, особисты, делопроизводители отдела кадров, повара в столовой, инженера, главные инженера, профсоюзные работники и крановщики. Даже несколько плотников есть. И всё это на десятке АЭС, нескольких предприятиях по обслуживанию этих АЭС, а порой - даже на соседних блоках одной АЭС.
Ты реально думаешь, что вот каждый из них имеет некий волшебный логин в некую общую росэнергоатомовскую программу???


 
Игорь Шевченко ©   (2015-05-06 10:22) [83]

Дмитрий   (05.05.15 14:53) [78]

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

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


 
Edgar_Wine   (2015-05-06 14:52) [84]

Я думаю что всё надо решать по ситуации. Просто предложил ТС, как вариант. Не думаю что у него АЭС.
От ~20 до ~1500 более чем нормально себя показал вариант, за больше сказать не могу, пока не требовалось столько. А дальше пусть он сам оценивает подходит под его ситуацию или нет.


 
Дмитрий   (2015-05-06 17:21) [85]


> Игорь Шевченко ©   (06.05.15 10:22) [83]
> если есть какие-то дополнительные данные отображаемые
> в форме персоны, то их и надо использовать для уникальности/неуникальности,
>  а если данных нет, то оператору бессмысленно показывать
> список, он силой мысли не установит, это повторение ввода
> или новый уникальная личность.


Всегда есть какой-то перехлест/различие информации
Телефон поменялся, уже автоматом решение принять сложно
При необходимости оператор уточняет информацию и действует соответственно.
При этом всегда существует вероятность ошибок идентификации и первого рода, и второго.
И результат лени операторов.
Удасться снизить, так и хорошо.


> Ega23 ©   (05.05.15 18:42) [80]
> > У нас как бы различие персонала завязано на логин пользователяБаза
> персонала и база пользователей некой системы - это совершенно
> разные вещи. Иногда они могут совпадать, но это только иногда.
>

Таблица Персонал вообще не означает "наш персонал", а привязку разных Персон к разным Предприятиям
Среди разных несколько наших
Таблица Логинов с Персоналом напрямую не связана


 
Edgar_Wine   (2015-05-06 17:55) [86]

м.. Вот тогда видно что к данному случаю не подходит.
Возможно оставить "задвоение" на совести операторов (но история операций пригодится), и просто разработать функционал аля "Merge Персон"?
Указываем что мол этот и этот есть одно и то же, а система пусть оставит одного, второго грохнет (с учётом всех нюансов связей).


 
Ega23 ©   (2015-05-06 19:24) [87]


> Вот тогда видно что к данному случаю не подходит.


Это из первого поста было видно.


>  а система пусть оставит одного, второго грохнет (с учётом
> всех нюансов связей).


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


 
Игорь Шевченко ©   (2015-05-06 21:42) [88]

Дмитрий   (06.05.15 17:21) [85]

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


 
Ega23 ©   (2015-05-06 22:00) [89]


> Игорь Шевченко ©   (06.05.15 21:42) [88]

Угу, я бы тоже так же делал


 
Edgar_Wine   (2015-05-06 23:26) [90]

Приходилось. В нераспределённых/облачных правда, обычных. А при восстановлении бэкапа поля "удалено" не сотрутся что ли? Просто всё откатится "как было до удаления".
Как можно восстановить bak чтоб удалённые записи не восстановились, а в поле "удалено" осталось новое значение?

А чем моё [86] "Merge" отличается от [88] "Слияние"? Это и переводится как слияние. %)


 
Ega23 ©   (2015-05-06 23:41) [91]


> А при восстановлении бэкапа поля "удалено" не сотрутся что
> ли? Просто всё откатится "как было до удаления".


Не "восстановление из бэкапа", а разворачивание из актуального бэкапа параллельной БД, с последующим переносом ошибочно удалённых данных в боевую базу. Ручками.
Ещё тот гемор.


> А чем моё [86] "Merge" отличается от [88] "Слияние"?


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


 
имя   (2015-10-20 18:00) [92]

Удалено модератором


 
имя   (2015-10-20 20:07) [93]

Удалено модератором


 
имя   (2015-10-20 20:39) [94]

Удалено модератором


 
имя   (2015-10-20 20:41) [95]

Удалено модератором


 
имя   (2015-10-20 20:50) [96]

Удалено модератором



Страницы: 1 2 3 вся ветка

Форум: "Начинающим";
Текущий архив: 2017.09.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.77 MB
Время: 0.004 c
2-1429285414
Дмитрий
2015-04-17 18:43
2017.09.10
алгоритмы выборки похожих фио


2-1443147790
dmk
2015-09-25 05:23
2017.09.10
TEdit не хочет перерисовываться





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский