powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Первичный ключ для человека
25 сообщений из 77, страница 1 из 4
Первичный ключ для человека
    #38832162
Владимир37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, мне требуется помощь или, скорее всего, просто совет. Я разработал 2 программы клиентская (стоит в районах) и общая. Данные вводятся в районах, затем выгружаются в файл xml и загружаются в общую. Так вот, в обеих базах есть таблица с людьми (ФИО, дата рождения, СНИЛС, адрес и др). Вопрос в том, как уникально идентифицировать человека (построить первичный ключ). Теоретически один человек может быть заведен сначала в одном районе и загружен в общую. Потом человека могут завести в другом районе и при загрузке в общую базу его надо найти. Первоначально я думал использовать СНИЛС для идентификации человека, но потом выяснилось, что СНИЛС может и не быть (иностранцы, беженцы). Тогда как построить первичный ключ. Альтернативный вариант: использовать ФИО и дату рождения. Но это не вариант. Были у нас в области разные люди, у который полностью совпадали ФИО и ДР. Плюс еще одна проблема: нашли ошибку, например, в имени. Исправили и все, ключ изменился, при загрузке в общую базу будет создан новый человек.
Может, посоветуете, как все-таки построить первичный ключ.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832177
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир37,
Отличить одного человека от другого в общем случае нетривиальная задача. С технической точки зрения используйте в качестве первичного ключа целочисленное поле с автоинкрементом (не надо тут мудрить). Что касается слияния, то тут панацеи быть не может. Вы можете точно сказать, что если у человека совпадает снилс или серия и номер паспорта, то один и тот же человек. Но во всех остальных случаях надо либо вручную решать новый это пользователь или старый, либо какой-то маркер на клиентах хранить, который будет установлен, если данные уже ранее импортировались в общую базу и не установлен в обратном случае (тогда можно будет хоть какие-то вероятностные предположения делать о том, является ли пользователь искомым или он точно новый). Но это тоже в общем случае не решит проблемы на 100%. Придется ручками разруливать пользователей, поменявших паспорт и т.д.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832181
Владимир37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JeStone,

Вот насчет маркера - хорошая идея. Спасибо.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832188
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир37Может, посоветуете, как все-таки построить первичный ключ.
Первичный ключ для этого не годится. Я в своё время расписывал алгоритм сопоставления людей для бюро кредитных историй, это было три страницы в ворде. Если грубо, смысл в том, что почти любой признак человека может поменяться и в любом может быть ошибка. Скажем, Мария Ивановна Петрова взяла кредит в одном банке, потом вышла замуж, стала Марией Ивановной Сидоровой, поменяла паспорт и пришла за кредитом в другой банк.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832196
Владимир37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerВладимир37Может, посоветуете, как все-таки построить первичный ключ.
Первичный ключ для этого не годится. Я в своё время расписывал алгоритм сопоставления людей для бюро кредитных историй, это было три страницы в ворде. Если грубо, смысл в том, что почти любой признак человека может поменяться и в любом может быть ошибка. Скажем, Мария Ивановна Петрова взяла кредит в одном банке, потом вышла замуж, стала Марией Ивановной Сидоровой, поменяла паспорт и пришла за кредитом в другой банк.
Ну как вы сопоставляли таких людей?
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832211
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир37, Вы хотите, чтобы я сходу ещё раз написал те три страницы? Смотрел для всех атрибутов совпадают - не совпадают - неизвестно. Если набиралось достаточное по весу количество совпадений и не было несовпадений, считал одним человеком (это разные вещи, потому что например в одной записи может быть СНИЛС и не быть ИНН, во второй - наоборот). Если было, кажется, одиночное несовпадение при похожести данных - считал одним человеком и индицировал ошибку ввода. Если было достаточное по весу количество различий, считал разными людьми, при этом при наличии совпадений сообщал об этом, и в банки шли запросы на тему проверить ещё раз и ввести правильные реквизиты. Отрабатывал вот этот вариант со сменой фамилии из-за семейного положения. Проверял номера не только по текущим реквизитам, а и по старым (например, человек уже поменял паспорт, а из банка продолжают приходить его выплаты со старыми реквизитами). Ну а сомнительные случаи отправлял на ручной разбор, тот чаще всего заключался в звонках в банк и в выяснении ситуации.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832359
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир37Может, посоветуете, как все-таки построить первичный ключ.
Формально "по закону" люди отличаются друг от друга по паспорту, даже не по паспортным данным, т.к. они могут совпадать.
У нас в РК для каждого жителя вводиться ИИН.
Он же является уникальным ключём.
В рамках предприятия обычно хватает полное ФИО и дата рождения.
Если количество полных тезек возможно будет мало, то можно ограничиться ФИО+дата рождения.
Если же нужно точно отличать, то смотрел бы на удостоверяющий документ (паспорт).
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832529
prog123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир37Народ, мне требуется помощь или, скорее всего, просто совет. Я разработал 2 программы клиентская (стоит в районах) и общая. Данные вводятся в районах, затем выгружаются в файл xml и загружаются в общую. Так вот, в обеих базах есть таблица с людьми (ФИО, дата рождения, СНИЛС, адрес и др). Вопрос в том, как уникально идентифицировать человека (построить первичный ключ). Теоретически один человек может быть заведен сначала в одном районе и загружен в общую. Потом человека могут завести в другом районе и при загрузке в общую базу его надо найти. Первоначально я думал использовать СНИЛС для идентификации человека, но потом выяснилось, что СНИЛС может и не быть (иностранцы, беженцы). Тогда как построить первичный ключ. Альтернативный вариант: использовать ФИО и дату рождения. Но это не вариант. Были у нас в области разные люди, у который полностью совпадали ФИО и ДР. Плюс еще одна проблема: нашли ошибку, например, в имени. Исправили и все, ключ изменился, при загрузке в общую базу будет создан новый человек.
Может, посоветуете, как все-таки построить первичный ключ.

Задача простая и вы, если подумаете, решите ее без форумных советчиков. Нужно добавить к "идентификатору" человека, т.е. его ФИО, еще и место и время его рождения. Если мало, то задать одного или обоих родителей. Такая информация хранится например в базах МВД и никогда никаких проблем, в отличие от софтварера:), не наблюдалось.

Фамилия, Имя, Отчество + место рождения + дата рождения.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832532
prog123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerВладимир37, Вы хотите, чтобы я сходу ещё раз написал те три страницы? Смотрел для всех атрибутов совпадают - не совпадают - неизвестно. Если набиралось достаточное по весу количество совпадений и не было несовпадений, считал одним человеком (это разные вещи, потому что например в одной записи может быть СНИЛС и не быть ИНН, во второй - наоборот). Если было, кажется, одиночное несовпадение при похожести данных - считал одним человеком и индицировал ошибку ввода. Если было достаточное по весу количество различий, считал разными людьми, при этом при наличии совпадений сообщал об этом, и в банки шли запросы на тему проверить ещё раз и ввести правильные реквизиты. Отрабатывал вот этот вариант со сменой фамилии из-за семейного положения. Проверял номера не только по текущим реквизитам, а и по старым (например, человек уже поменял паспорт, а из банка продолжают приходить его выплаты со старыми реквизитами). Ну а сомнительные случаи отправлял на ручной разбор, тот чаще всего заключался в звонках в банк и в выяснении ситуации.

А вы ведь коллега лет 10 уже здесь тусите?:)
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832587
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog123Такая информация хранится например в базах МВД и никогда никаких проблем, в отличие от софтварера:), не наблюдалось.
Люблю стратегов (тех, которые из известного анекдота про ёжиков). Если мне не изменяет память, согласно инструкциям ЦБ у нас в стране есть 24 типа документов, удостоверяющих личность [то есть тех, которые могут быть предъявлены человеком в банке]. Домашнее задание: выяснить, в скольких из них указываются имя при рождении, место рождения и время рождения.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832594
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog123А вы ведь коллега лет 10 уже здесь тусите?:)
В профиле есть поле "дата регистрации", а поиском по нику можно примерно выяснить, сколько времени я присутствовал здесь до регистрации.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832600
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вы ведь коллега лет 10 уже здесь тусите?:)
тамбовский волк вамбе коллега,


всех любителей естественных ключей для персон -- строго в биореактор
только суррогат
и только процедуры поиска претендентов на дубли.
а по частичным уникъю (снилс, INN) -- nullable уникъю
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832613
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog123Задача простая и вы, если подумаете, решите ее без форумных советчиков. Нужно добавить к "идентификатору" человека, т.е. его ФИО, еще и место и время его рождения. Если мало, то задать одного или обоих родителей. Такая информация хранится например в базах МВД и никогда никаких проблем, в отличие от софтварера:), не наблюдалось.

Фамилия, Имя, Отчество + место рождения + дата рождения. МВД действительно так идентифицирует человека, но проблемы, таки, иногда наблюдаются. В городах с миллионным населением за день рождается немало детей, и вероятность появления среди них полных тезок отличается от 0.

Про базы МВД, в которых хранятся данные о родителях - ваши фантазии. Это епрахия органов ЗАГС.
Любопытно, как ТС будет налаживать с ними взаимодействие.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832652
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baracsМВД действительно так идентифицирует человека, но проблемы, таки, иногда наблюдаются.
С год назад у нас на форуме упоминалась замечательная история. Кратко - дама пару лет воюет с приставами, вынесшими её квартиру. Вынесли они на основании судебного решения, принятого в отсутствие ответчика. Решение было принято из-за кредита, взятого и не возвращённого её тёзкой. Причём факт "кредит брала не она" доказан и в общем-то сомнению не подлежит, но органы занимают позицию "судебное решение вынесено именно в её адрес, пересматривать оснований нет".
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832834
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerbaracsМВД действительно так идентифицирует человека, но проблемы, таки, иногда наблюдаются.
С год назад у нас на форуме упоминалась замечательная история. Кратко - дама пару лет воюет с приставами, вынесшими её квартиру. Вынесли они на основании судебного решения, принятого в отсутствие ответчика. Решение было принято из-за кредита, взятого и не возвращённого её тёзкой. Причём факт "кредит брала не она" доказан и в общем-то сомнению не подлежит, но органы занимают позицию "судебное решение вынесено именно в её адрес, пересматривать оснований нет".
OffTopФормально приставы правы - не они выносили решение, не им его и отменять. Если факт "кредит брала не она" доказан, по логике, должно появиться судебное решение, отменяющее предыдущее.
К счастью, я не знаком с практикой возврата отобранного приставами имущества, поэтому не знаю, что дальше делать с этим решением.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832835
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baracsprog123Задача простая и вы, если подумаете, решите ее без форумных советчиков. Нужно добавить к "идентификатору" человека, т.е. его ФИО, еще и место и время его рождения. Если мало, то задать одного или обоих родителей. Такая информация хранится например в базах МВД и никогда никаких проблем, в отличие от софтварера:), не наблюдалось.

Фамилия, Имя, Отчество + место рождения + дата рождения. МВД действительно так идентифицирует человека, но проблемы, таки, иногда наблюдаются. В городах с миллионным населением за день рождается немало детей, и вероятность появления среди них полных тезок отличается от 0.

Про базы МВД, в которых хранятся данные о родителях - ваши фантазии. Это епрахия органов ЗАГС.
Любопытно, как ТС будет налаживать с ними взаимодействие.
Подтверждаю. При мне человек в отделение милиции приходил жаловаться, что на каждом стационарном посту ГАИ на МКАД его тормозят и задерживают. Смысл был в том, что в розыске был его полный тезка, причем совпадали даже даты рождения (место отличалось). Ну и Поток по номеру пробивал владельца, владелец определялся как розыскник, со всеми сопутствующими последствиями.

К сожалению, просто на ФИО ориентироваться бессмысленно. Про банальный случай смены фамилии писать нет смысла. Но через ЗАГС легко меняется и имя. Знаю девушку, которой не понравилось свое имя, и она его сменила.

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

Задача поиска дублей очень нетривиальная, есть системы очистки данных, поиска таких дублей и тп, например Фактор . По хорошему нужно несколько сценариев определения дубликатов, и все равно, 100% точности это не гарантирует.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832836
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир37Народ, мне требуется помощь или, скорее всего, просто совет. Я разработал 2 программы клиентская (стоит в районах) и общая. Данные вводятся в районах, затем выгружаются в файл xml и загружаются в общую. Так вот, в обеих базах есть таблица с людьми (ФИО, дата рождения, СНИЛС, адрес и др). Вопрос в том, как уникально идентифицировать человека (построить первичный ключ). Теоретически один человек может быть заведен сначала в одном районе и загружен в общую. Потом человека могут завести в другом районе и при загрузке в общую базу его надо найти. Первоначально я думал использовать СНИЛС для идентификации человека, но потом выяснилось, что СНИЛС может и не быть (иностранцы, беженцы). Тогда как построить первичный ключ. Альтернативный вариант: использовать ФИО и дату рождения. Но это не вариант. Были у нас в области разные люди, у который полностью совпадали ФИО и ДР. Плюс еще одна проблема: нашли ошибку, например, в имени. Исправили и все, ключ изменился, при загрузке в общую базу будет создан новый человек.
Может, посоветуете, как все-таки построить первичный ключ.
Мне нравятся суррогатные ключи. И я бы для клиентов выбрал GUID, а не автоинкремент
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832841
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эти смешные проблемы возникают, когда вместо баз данных используется "реляционная технология")) Суррогатный ключ - это точно такое же свойство сущности, как и фамилия - то есть, это тоже атрибут отношения. А в базах данных используются идентификаторы. Идентификатор принципиально не является свойством сущности (и "находится" вне свойств), и отражает факт существования сущности независимо от ее свойств.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832856
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baracs
OffTopФормально приставы правы - не они выносили решение, не им его и отменять. Если факт "кредит брала не она" доказан, по логике, должно появиться судебное решение, отменяющее предыдущее.
К счастью, я не знаком с практикой возврата отобранного приставами имущества, поэтому не знаю, что дальше делать с этим решением.

OffTopПо приставам понятно, хотя они могли бы притормозить. Но там была целая эпопея, поскольку суд тоже отказывался пересматривать решение. В общем, её упорно пытались заворачивать по формальным критериям, а в банке ей просто прямо заявили "мы хотим получить наши деньги и нам наплевать, с кого".
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832908
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Мне нравятся суррогатные ключи. И я бы для клиентов выбрал GUID, а не автоинкремент
GUID безсмысленно расходует место в индексе. И его возможности выходят за рамки обычного
sequence. Это факт. Но вы эти возможности собираетесь использовать?

Или GUID просто берете для "красоты"?
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832924
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Мне нравятся суррогатные ключи. И я бы для клиентов выбрал GUID, а не автоинкремент

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

Здесь нужно различать сущности "человек" и его "учетные записи". Человеков много, учеток много, и с некоторой вероятностью, по некоторому алгоритму, мы можем сопоставлять людей с учетками (или учетки между собой). В большинстве случаев - с вероятностью, близкой к 100%, но иногда с меньшей, что влечет определенные последствия для различных видов бизнеса. Для одних случаев на возможные ошибки можно наплевать, в других, наоборот, в них самый сок.

Для конструктивного развития темы вопрос к ТС : какова цена ошибок - ошибочного сопоставления разных людей, либо, наоборот, разделения одной личности? Какие возможности исправления ошибок? Какие интересы бизнеса и клиентов по исправлению/сокрытию ошибок? Тогда можно что-то советовать дальше. Универсальных рецептов нет, но конкретные могут быть полезны.

100% надежно человека идентифицировать невозможно, но мир от этого не рухнул.
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832926
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Возможно имелась ввиду такая характеристика GUID, как глобальная уникальность? Хотя не понятно как в контексте задачи ТС можно такое свойство использовать. Вот если бы не
авторТеоретически один человек может быть заведен сначала в одном районе ... Потом человека могут завести в другом районе

то смысл был бы
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38832936
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JeStonemayton,
Возможно имелась ввиду такая характеристика GUID, как глобальная уникальность? Хотя не понятно как в контексте задачи ТС можно такое свойство использовать. Вот если бы не
авторТеоретически один человек может быть заведен сначала в одном районе ... Потом человека могут завести в другом районе

то смысл был бы

Нет, про GUID имелось ввиду следующее. Если программа установлена много где, и вполне может применяться по схеме головной офис - филиалы. Тогда возникает вопрос репликации. Только лишь из-за этого, разумеется, вопрос с определением дубликатов guid никак не решает
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38833020
prog123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baracsprog123Задача простая и вы, если подумаете, решите ее без форумных советчиков. Нужно добавить к "идентификатору" человека, т.е. его ФИО, еще и место и время его рождения. Если мало, то задать одного или обоих родителей. Такая информация хранится например в базах МВД и никогда никаких проблем, в отличие от софтварера:), не наблюдалось.

Фамилия, Имя, Отчество + место рождения + дата рождения. МВД действительно так идентифицирует человека, но проблемы, таки, иногда наблюдаются. В городах с миллионным населением за день рождается немало детей , и вероятность появления среди них полных тезок отличается от 0.

Про базы МВД, в которых хранятся данные о родителях - ваши фантазии. Это епрахия органов ЗАГС.
Любопытно, как ТС будет налаживать с ними взаимодействие.

Требуйте указания адреса рождения и тема закрыта. Так сказать место возникновения события "рождение" субьекта. Место, это не значит только город, люди не на вокзале рождаются:)

Таким образом:

Код: sql
1.
2.
PRIMARY KEY(ID_Person),
UNIQUE(PersonIdSummary) -- ФИО+Детальное место рождения+дата рождения
...
Рейтинг: 0 / 0
Первичный ключ для человека
    #38833021
prog123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
prog123baracsпропущено...
МВД действительно так идентифицирует человека, но проблемы, таки, иногда наблюдаются. В городах с миллионным населением за день рождается немало детей , и вероятность появления среди них полных тезок отличается от 0.

Про базы МВД, в которых хранятся данные о родителях - ваши фантазии. Это епрахия органов ЗАГС.
Любопытно, как ТС будет налаживать с ними взаимодействие.

Требуйте указания адреса рождения и тема закрыта. Так сказать место возникновения события "рождение" субьекта. Место, это не значит только город, люди не на вокзале рождаются:)

Таким образом:

Код: sql
1.
2.
PRIMARY KEY(ID_Person),
UNIQUE(PersonIdSummary) -- ФИО+Детальное место рождения+дата рождения



Для альтернативно одарённых: ФИО - разумеется на дату рождения:) , Названия элементов адреса рождения - тоже, т.е всё с соответствующих документов.
...
Рейтинг: 0 / 0
25 сообщений из 77, страница 1 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Первичный ключ для человека
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]