|
|
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
Народ, мне требуется помощь или, скорее всего, просто совет. Я разработал 2 программы клиентская (стоит в районах) и общая. Данные вводятся в районах, затем выгружаются в файл xml и загружаются в общую. Так вот, в обеих базах есть таблица с людьми (ФИО, дата рождения, СНИЛС, адрес и др). Вопрос в том, как уникально идентифицировать человека (построить первичный ключ). Теоретически один человек может быть заведен сначала в одном районе и загружен в общую. Потом человека могут завести в другом районе и при загрузке в общую базу его надо найти. Первоначально я думал использовать СНИЛС для идентификации человека, но потом выяснилось, что СНИЛС может и не быть (иностранцы, беженцы). Тогда как построить первичный ключ. Альтернативный вариант: использовать ФИО и дату рождения. Но это не вариант. Были у нас в области разные люди, у который полностью совпадали ФИО и ДР. Плюс еще одна проблема: нашли ошибку, например, в имени. Исправили и все, ключ изменился, при загрузке в общую базу будет создан новый человек. Может, посоветуете, как все-таки построить первичный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 10:06 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
Владимир37, Отличить одного человека от другого в общем случае нетривиальная задача. С технической точки зрения используйте в качестве первичного ключа целочисленное поле с автоинкрементом (не надо тут мудрить). Что касается слияния, то тут панацеи быть не может. Вы можете точно сказать, что если у человека совпадает снилс или серия и номер паспорта, то один и тот же человек. Но во всех остальных случаях надо либо вручную решать новый это пользователь или старый, либо какой-то маркер на клиентах хранить, который будет установлен, если данные уже ранее импортировались в общую базу и не установлен в обратном случае (тогда можно будет хоть какие-то вероятностные предположения делать о том, является ли пользователь искомым или он точно новый). Но это тоже в общем случае не решит проблемы на 100%. Придется ручками разруливать пользователей, поменявших паспорт и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 10:23 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
JeStone, Вот насчет маркера - хорошая идея. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 10:26 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
Владимир37Может, посоветуете, как все-таки построить первичный ключ. Первичный ключ для этого не годится. Я в своё время расписывал алгоритм сопоставления людей для бюро кредитных историй, это было три страницы в ворде. Если грубо, смысл в том, что почти любой признак человека может поменяться и в любом может быть ошибка. Скажем, Мария Ивановна Петрова взяла кредит в одном банке, потом вышла замуж, стала Марией Ивановной Сидоровой, поменяла паспорт и пришла за кредитом в другой банк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 10:31 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
softwarerВладимир37Может, посоветуете, как все-таки построить первичный ключ. Первичный ключ для этого не годится. Я в своё время расписывал алгоритм сопоставления людей для бюро кредитных историй, это было три страницы в ворде. Если грубо, смысл в том, что почти любой признак человека может поменяться и в любом может быть ошибка. Скажем, Мария Ивановна Петрова взяла кредит в одном банке, потом вышла замуж, стала Марией Ивановной Сидоровой, поменяла паспорт и пришла за кредитом в другой банк. Ну как вы сопоставляли таких людей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 10:36 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
Владимир37, Вы хотите, чтобы я сходу ещё раз написал те три страницы? Смотрел для всех атрибутов совпадают - не совпадают - неизвестно. Если набиралось достаточное по весу количество совпадений и не было несовпадений, считал одним человеком (это разные вещи, потому что например в одной записи может быть СНИЛС и не быть ИНН, во второй - наоборот). Если было, кажется, одиночное несовпадение при похожести данных - считал одним человеком и индицировал ошибку ввода. Если было достаточное по весу количество различий, считал разными людьми, при этом при наличии совпадений сообщал об этом, и в банки шли запросы на тему проверить ещё раз и ввести правильные реквизиты. Отрабатывал вот этот вариант со сменой фамилии из-за семейного положения. Проверял номера не только по текущим реквизитам, а и по старым (например, человек уже поменял паспорт, а из банка продолжают приходить его выплаты со старыми реквизитами). Ну а сомнительные случаи отправлял на ручной разбор, тот чаще всего заключался в звонках в банк и в выяснении ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 10:51 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
Владимир37Может, посоветуете, как все-таки построить первичный ключ. Формально "по закону" люди отличаются друг от друга по паспорту, даже не по паспортным данным, т.к. они могут совпадать. У нас в РК для каждого жителя вводиться ИИН. Он же является уникальным ключём. В рамках предприятия обычно хватает полное ФИО и дата рождения. Если количество полных тезек возможно будет мало, то можно ограничиться ФИО+дата рождения. Если же нужно точно отличать, то смотрел бы на удостоверяющий документ (паспорт). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 12:57 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
Владимир37Народ, мне требуется помощь или, скорее всего, просто совет. Я разработал 2 программы клиентская (стоит в районах) и общая. Данные вводятся в районах, затем выгружаются в файл xml и загружаются в общую. Так вот, в обеих базах есть таблица с людьми (ФИО, дата рождения, СНИЛС, адрес и др). Вопрос в том, как уникально идентифицировать человека (построить первичный ключ). Теоретически один человек может быть заведен сначала в одном районе и загружен в общую. Потом человека могут завести в другом районе и при загрузке в общую базу его надо найти. Первоначально я думал использовать СНИЛС для идентификации человека, но потом выяснилось, что СНИЛС может и не быть (иностранцы, беженцы). Тогда как построить первичный ключ. Альтернативный вариант: использовать ФИО и дату рождения. Но это не вариант. Были у нас в области разные люди, у который полностью совпадали ФИО и ДР. Плюс еще одна проблема: нашли ошибку, например, в имени. Исправили и все, ключ изменился, при загрузке в общую базу будет создан новый человек. Может, посоветуете, как все-таки построить первичный ключ. Задача простая и вы, если подумаете, решите ее без форумных советчиков. Нужно добавить к "идентификатору" человека, т.е. его ФИО, еще и место и время его рождения. Если мало, то задать одного или обоих родителей. Такая информация хранится например в базах МВД и никогда никаких проблем, в отличие от софтварера:), не наблюдалось. Фамилия, Имя, Отчество + место рождения + дата рождения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 14:56 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
softwarerВладимир37, Вы хотите, чтобы я сходу ещё раз написал те три страницы? Смотрел для всех атрибутов совпадают - не совпадают - неизвестно. Если набиралось достаточное по весу количество совпадений и не было несовпадений, считал одним человеком (это разные вещи, потому что например в одной записи может быть СНИЛС и не быть ИНН, во второй - наоборот). Если было, кажется, одиночное несовпадение при похожести данных - считал одним человеком и индицировал ошибку ввода. Если было достаточное по весу количество различий, считал разными людьми, при этом при наличии совпадений сообщал об этом, и в банки шли запросы на тему проверить ещё раз и ввести правильные реквизиты. Отрабатывал вот этот вариант со сменой фамилии из-за семейного положения. Проверял номера не только по текущим реквизитам, а и по старым (например, человек уже поменял паспорт, а из банка продолжают приходить его выплаты со старыми реквизитами). Ну а сомнительные случаи отправлял на ручной разбор, тот чаще всего заключался в звонках в банк и в выяснении ситуации. А вы ведь коллега лет 10 уже здесь тусите?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 14:59 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
prog123Такая информация хранится например в базах МВД и никогда никаких проблем, в отличие от софтварера:), не наблюдалось. Люблю стратегов (тех, которые из известного анекдота про ёжиков). Если мне не изменяет память, согласно инструкциям ЦБ у нас в стране есть 24 типа документов, удостоверяющих личность [то есть тех, которые могут быть предъявлены человеком в банке]. Домашнее задание: выяснить, в скольких из них указываются имя при рождении, место рождения и время рождения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 15:35 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
prog123А вы ведь коллега лет 10 уже здесь тусите?:) В профиле есть поле "дата регистрации", а поиском по нику можно примерно выяснить, сколько времени я присутствовал здесь до регистрации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 15:36 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
А вы ведь коллега лет 10 уже здесь тусите?:) тамбовский волк вамбе коллега, всех любителей естественных ключей для персон -- строго в биореактор только суррогат и только процедуры поиска претендентов на дубли. а по частичным уникъю (снилс, INN) -- nullable уникъю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 15:38 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
prog123Задача простая и вы, если подумаете, решите ее без форумных советчиков. Нужно добавить к "идентификатору" человека, т.е. его ФИО, еще и место и время его рождения. Если мало, то задать одного или обоих родителей. Такая информация хранится например в базах МВД и никогда никаких проблем, в отличие от софтварера:), не наблюдалось. Фамилия, Имя, Отчество + место рождения + дата рождения. МВД действительно так идентифицирует человека, но проблемы, таки, иногда наблюдаются. В городах с миллионным населением за день рождается немало детей, и вероятность появления среди них полных тезок отличается от 0. Про базы МВД, в которых хранятся данные о родителях - ваши фантазии. Это епрахия органов ЗАГС. Любопытно, как ТС будет налаживать с ними взаимодействие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 15:47 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
baracsМВД действительно так идентифицирует человека, но проблемы, таки, иногда наблюдаются. С год назад у нас на форуме упоминалась замечательная история. Кратко - дама пару лет воюет с приставами, вынесшими её квартиру. Вынесли они на основании судебного решения, принятого в отсутствие ответчика. Решение было принято из-за кредита, взятого и не возвращённого её тёзкой. Причём факт "кредит брала не она" доказан и в общем-то сомнению не подлежит, но органы занимают позицию "судебное решение вынесено именно в её адрес, пересматривать оснований нет". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 16:04 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
softwarerbaracsМВД действительно так идентифицирует человека, но проблемы, таки, иногда наблюдаются. С год назад у нас на форуме упоминалась замечательная история. Кратко - дама пару лет воюет с приставами, вынесшими её квартиру. Вынесли они на основании судебного решения, принятого в отсутствие ответчика. Решение было принято из-за кредита, взятого и не возвращённого её тёзкой. Причём факт "кредит брала не она" доказан и в общем-то сомнению не подлежит, но органы занимают позицию "судебное решение вынесено именно в её адрес, пересматривать оснований нет". OffTopФормально приставы правы - не они выносили решение, не им его и отменять. Если факт "кредит брала не она" доказан, по логике, должно появиться судебное решение, отменяющее предыдущее. К счастью, я не знаком с практикой возврата отобранного приставами имущества, поэтому не знаю, что дальше делать с этим решением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 17:45 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
baracsprog123Задача простая и вы, если подумаете, решите ее без форумных советчиков. Нужно добавить к "идентификатору" человека, т.е. его ФИО, еще и место и время его рождения. Если мало, то задать одного или обоих родителей. Такая информация хранится например в базах МВД и никогда никаких проблем, в отличие от софтварера:), не наблюдалось. Фамилия, Имя, Отчество + место рождения + дата рождения. МВД действительно так идентифицирует человека, но проблемы, таки, иногда наблюдаются. В городах с миллионным населением за день рождается немало детей, и вероятность появления среди них полных тезок отличается от 0. Про базы МВД, в которых хранятся данные о родителях - ваши фантазии. Это епрахия органов ЗАГС. Любопытно, как ТС будет налаживать с ними взаимодействие. Подтверждаю. При мне человек в отделение милиции приходил жаловаться, что на каждом стационарном посту ГАИ на МКАД его тормозят и задерживают. Смысл был в том, что в розыске был его полный тезка, причем совпадали даже даты рождения (место отличалось). Ну и Поток по номеру пробивал владельца, владелец определялся как розыскник, со всеми сопутствующими последствиями. К сожалению, просто на ФИО ориентироваться бессмысленно. Про банальный случай смены фамилии писать нет смысла. Но через ЗАГС легко меняется и имя. Знаю девушку, которой не понравилось свое имя, и она его сменила. Или вот еще пример: как дубль определились близнецы, у которых фамилия и отчество совпали, дата и место рождения тоже. Папа имена дал им очень похожие (разница в одной букве). Система посчитала это за опечатку. Задача поиска дублей очень нетривиальная, есть системы очистки данных, поиска таких дублей и тп, например Фактор . По хорошему нужно несколько сценариев определения дубликатов, и все равно, 100% точности это не гарантирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 17:46 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
Владимир37Народ, мне требуется помощь или, скорее всего, просто совет. Я разработал 2 программы клиентская (стоит в районах) и общая. Данные вводятся в районах, затем выгружаются в файл xml и загружаются в общую. Так вот, в обеих базах есть таблица с людьми (ФИО, дата рождения, СНИЛС, адрес и др). Вопрос в том, как уникально идентифицировать человека (построить первичный ключ). Теоретически один человек может быть заведен сначала в одном районе и загружен в общую. Потом человека могут завести в другом районе и при загрузке в общую базу его надо найти. Первоначально я думал использовать СНИЛС для идентификации человека, но потом выяснилось, что СНИЛС может и не быть (иностранцы, беженцы). Тогда как построить первичный ключ. Альтернативный вариант: использовать ФИО и дату рождения. Но это не вариант. Были у нас в области разные люди, у который полностью совпадали ФИО и ДР. Плюс еще одна проблема: нашли ошибку, например, в имени. Исправили и все, ключ изменился, при загрузке в общую базу будет создан новый человек. Может, посоветуете, как все-таки построить первичный ключ. Мне нравятся суррогатные ключи. И я бы для клиентов выбрал GUID, а не автоинкремент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 17:49 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
Эти смешные проблемы возникают, когда вместо баз данных используется "реляционная технология")) Суррогатный ключ - это точно такое же свойство сущности, как и фамилия - то есть, это тоже атрибут отношения. А в базах данных используются идентификаторы. Идентификатор принципиально не является свойством сущности (и "находится" вне свойств), и отражает факт существования сущности независимо от ее свойств. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 17:55 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
baracs OffTopФормально приставы правы - не они выносили решение, не им его и отменять. Если факт "кредит брала не она" доказан, по логике, должно появиться судебное решение, отменяющее предыдущее. К счастью, я не знаком с практикой возврата отобранного приставами имущества, поэтому не знаю, что дальше делать с этим решением. OffTopПо приставам понятно, хотя они могли бы притормозить. Но там была целая эпопея, поскольку суд тоже отказывался пересматривать решение. В общем, её упорно пытались заворачивать по формальным критериям, а в банке ей просто прямо заявили "мы хотим получить наши деньги и нам наплевать, с кого". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 18:09 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
Arm79Мне нравятся суррогатные ключи. И я бы для клиентов выбрал GUID, а не автоинкремент GUID безсмысленно расходует место в индексе. И его возможности выходят за рамки обычного sequence. Это факт. Но вы эти возможности собираетесь использовать? Или GUID просто берете для "красоты"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 19:22 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
Arm79Мне нравятся суррогатные ключи. И я бы для клиентов выбрал GUID, а не автоинкремент Суррогатные ключи всем нравятся, но здесь это не поможет. Ведь вопрос у ТС в том, что один человек может зарегистрироваться в двух районах, эти учетки получат разный GUID (или автоинкремент), а нужно как раз понять, что это один и тот же человек. Здесь нужно различать сущности "человек" и его "учетные записи". Человеков много, учеток много, и с некоторой вероятностью, по некоторому алгоритму, мы можем сопоставлять людей с учетками (или учетки между собой). В большинстве случаев - с вероятностью, близкой к 100%, но иногда с меньшей, что влечет определенные последствия для различных видов бизнеса. Для одних случаев на возможные ошибки можно наплевать, в других, наоборот, в них самый сок. Для конструктивного развития темы вопрос к ТС : какова цена ошибок - ошибочного сопоставления разных людей, либо, наоборот, разделения одной личности? Какие возможности исправления ошибок? Какие интересы бизнеса и клиентов по исправлению/сокрытию ошибок? Тогда можно что-то советовать дальше. Универсальных рецептов нет, но конкретные могут быть полезны. 100% надежно человека идентифицировать невозможно, но мир от этого не рухнул. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 19:48 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
mayton, Возможно имелась ввиду такая характеристика GUID, как глобальная уникальность? Хотя не понятно как в контексте задачи ТС можно такое свойство использовать. Вот если бы не авторТеоретически один человек может быть заведен сначала в одном районе ... Потом человека могут завести в другом районе то смысл был бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 19:51 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
JeStonemayton, Возможно имелась ввиду такая характеристика GUID, как глобальная уникальность? Хотя не понятно как в контексте задачи ТС можно такое свойство использовать. Вот если бы не авторТеоретически один человек может быть заведен сначала в одном районе ... Потом человека могут завести в другом районе то смысл был бы Нет, про GUID имелось ввиду следующее. Если программа установлена много где, и вполне может применяться по схеме головной офис - филиалы. Тогда возникает вопрос репликации. Только лишь из-за этого, разумеется, вопрос с определением дубликатов guid никак не решает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 20:06 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
baracsprog123Задача простая и вы, если подумаете, решите ее без форумных советчиков. Нужно добавить к "идентификатору" человека, т.е. его ФИО, еще и место и время его рождения. Если мало, то задать одного или обоих родителей. Такая информация хранится например в базах МВД и никогда никаких проблем, в отличие от софтварера:), не наблюдалось. Фамилия, Имя, Отчество + место рождения + дата рождения. МВД действительно так идентифицирует человека, но проблемы, таки, иногда наблюдаются. В городах с миллионным населением за день рождается немало детей , и вероятность появления среди них полных тезок отличается от 0. Про базы МВД, в которых хранятся данные о родителях - ваши фантазии. Это епрахия органов ЗАГС. Любопытно, как ТС будет налаживать с ними взаимодействие. Требуйте указания адреса рождения и тема закрыта. Так сказать место возникновения события "рождение" субьекта. Место, это не значит только город, люди не на вокзале рождаются:) Таким образом: Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 04:48 |
|
||
|
Первичный ключ для человека
|
|||
|---|---|---|---|
|
#18+
prog123baracsпропущено... МВД действительно так идентифицирует человека, но проблемы, таки, иногда наблюдаются. В городах с миллионным населением за день рождается немало детей , и вероятность появления среди них полных тезок отличается от 0. Про базы МВД, в которых хранятся данные о родителях - ваши фантазии. Это епрахия органов ЗАГС. Любопытно, как ТС будет налаживать с ними взаимодействие. Требуйте указания адреса рождения и тема закрыта. Так сказать место возникновения события "рождение" субьекта. Место, это не значит только город, люди не на вокзале рождаются:) Таким образом: Код: sql 1. 2. Для альтернативно одарённых: ФИО - разумеется на дату рождения:) , Названия элементов адреса рождения - тоже, т.е всё с соответствующих документов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 04:53 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=24&tid=1540704]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 416ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...