powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД о населении
111 сообщений из 111, показаны все 5 страниц
Проектирование БД о населении
    #34979485
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть задача - создать БД для хранения информации по населению. Задача известна давно, подкупает своей простотой, но при ближайшем рассмотрении оказывается не такой тривиальной.

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

Проектируемая структура БД должна отражать события:
- рождение гражданина
- первое получение паспорта
- смену документа
- перемену ФИО
- прибытие
- убытие
- смерть

Т.е. структура БД должна позволять получать отчеты за опр. период времени с данными граждан по отдельным событиям выше.

Ваши предложения?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979488
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, что должна быть таблица с ключом kodli и полями фамилия, имя, отчество, дата рождения, пол, место рождения
Может быть вторая таблица документа с полями kodli, датой документа, его реквизитами, кодом события (первое получение, замена), причиной получения/замены
Может быть третья таблица регистрации с полями kodli, датой регистрации, дата снятия с регистрации, адрес регистрации, причина регистрации/снятия с регистрации

Но как тогда хранить данные по событиям смена фио, смерть гражданина?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979491
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98Есть задача - создать БД для хранения информации по населению. Задача известна давно, подкупает своей простотой, но при ближайшем рассмотрении оказывается не такой тривиальной.

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

Проектируемая структура БД должна отражать события:
- рождение гражданина
- первое получение паспорта
- смену документа
- перемену ФИО
- прибытие
- убытие
- смерть

Т.е. структура БД должна позволять получать отчеты за опр. период времени с данными граждан по отдельным событиям выше.

Ваши предложения?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979494
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98 michael_is_98Есть задача - создать БД для хранения информации по населению. Задача известна давно, подкупает своей простотой, но при ближайшем рассмотрении оказывается не такой тривиальной.

Исходные Данные:
- гражданин: фамилия, имя, отчество, дата рождения, пол, место рождения
- документ, удостоверяющий личность (паспорт РФ, паспорт СССР, свидетельство о рождении):
дата выдачи, серия, номер, кем выдан
- листок прибытия/убытия: дата регистрации, дата снятия, адрес куда прибыл, адрес куда убыл, причина прибытия, причина убытия
- запись акта ЗАГС (о смерти, о перемене ФИО, о браке, о расторжении брака): дата актовой записи, номер актовой записи

Регистрируемые события:
-Рождение: запись акта о рождении, сообщение о рождении ребенка
-Получение паспорта: листок прибытия с данными документа, удостоверяющего личность
-Прибытие: листок прибытия с данными по регистрации прибытия
-Перемена ФИО: листок прибытия, запись акта перемены ФИО, запись акта о браке, запись акта о расторжении брака, внесение изменений в запись акта о рождении
-Смена документа:листок прибытия
-Убытие: листок убытия, сообщение об убытии
-Смерть: листок убытия, запись акта о смерти

Проектируемая структура БД должна отражать эти события и получать отчеты за опр. период времени с данными граждан и события по отдельным событиям выше.

Ваши предложения?
Так ближе к ГАС "Выборы" - лучше ориентироваться на этот пост
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979497
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Ваши предложения?

Традиционные, дружище: наймите нормального архитектора, который умеет решать такие задачи.

Опционально: попробуйте понять, что "осваивать бабло" и "квалификация" - взаимоисключающие понятия.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979503
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу найма архитекторов, "осваивания бабло" - не ко мне.
Предлагаю модератору подобные высказывания удалять без предупреждения.

интересует возможная схема БД и конкретные ответы на вопросы.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979578
Фотография The Dwarf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На днях крутил базу данных населения кем-то скачаную давным давно. Позлился с того, что на имя-фамилия-отчество и место жительства было выделено по 1 полю. Так что рекомендую адрес тоже раздробить на поля, чтоб не было проблем с поиском или, как у одного товарища здесь, вырезанием почтового индекса из адресной строки.
Я бы сделал отдельно таблицу городов и таблицу улиц и прочих часто повторяющихся данных.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979580
Фотография The Dwarf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этому форуму очень не хватает возможности редактировать своё сообщение. Приходится писать ещё одно если хочешь что-нибудь добавить или изменить.
З.Ы. Автор а вы откуда и на кого работаете?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979642
A grumbler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы сделал таблицу событий: id события, id гражданина (ваш kodli), тип события (рождение, смена ФИО, смерть), дата актовой записи, номер актовой записи.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979658
Paul Sacks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Ваши предложения?

Традиционные, дружище: наймите нормального архитектора, который умеет решать такие задачи.



Поддерживаю на 100%. Не лечите нос у гинеколога...
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979659
Konstantin~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверно имеет смысл хранить данные в двух таблицах, позволяющие только SELECT и INSERT:

гражданин (
(id,timestamp), -- PK
документ, -- FK (документ.id)
имя,
фамилия ,
дата_рождения,
дата_смерти,
...
кто_менял_запись
)


документ (
id, -- PK
тип_документа,
дата выдачи,
...
кто_менял_запись,
timestamp
)


идея 1 в том что для внесения записи в гражданин надо сначала заполнить документ на основании которого делается запись. (типа новый чел --> надо свидетельство о рождении, документ прописки и тд)

идея 2 в том что записи нельзя стирать или исправлять; правильной считается текущая запись.

нормализация, индексы, справочники -- по вкусу.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979735
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98<...>
Ваши предложения?
Поточнее сформулировать требования: списки событий и документов, требования к производительности, количеству пользователей, перечень доступных аппаратных и программных платформ. Т.к. задача очень серьёзная, БД населения страны - не БД отдела кадров небольшой конторки. А вы начинаете решать её "нахрапом", не с начала, а с середины. Что требует очень универсальных, а значит - менее эффективных, решений.
------------------------------------------
Классы: гражданин - событие - документ

"Документ" и "событие" - с большим кол-вом подклассов, укладывать в БД в виде EAV- или ROT-структур, с хранением истории изменений.

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

Возможно, поддерживать 2 БД, "оперативную" и "историческую" (возможно с OLAP и ETL).

Организовать проверку корректности и "очистку" информации, интегрироваться с КЛАДРом.

Выбрать подходы по результатам исследования производительности для 150*10^9 граждан, 150*10^11 событий, 150*10^12 документов, оптимистический размер БД 150 Пб (150*10^15 байт, 150*10^3 Тб). Потянете задачку?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979814
novise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven
"Гражданин" - имеет только искусственный идентификатор...
Не согласен.
ФИО+дата рождения+родители+место рождения - прикинь вероятность совпадений.
Ну и опять же извиняйте, ежели что. Мы ж ить академиев не кончали
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979900
hhhhhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Novise AlexTheRaven
"Гражданин" - имеет только искусственный идентификатор...
Не согласен.
ФИО+дата рождения+родители+место рождения - прикинь вероятность совпадений.
Ну и опять же извиняйте, ежели что. Мы ж ить академиев не кончали

А если один из родителей неизвестен (NULL), как тогда быть?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979932
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Novise AlexTheRaven
"Гражданин" - имеет только искусственный идентификатор...
Не согласен.
ФИО+дата рождения+родители+место рождения - прикинь вероятность совпадений.
Ну и опять же извиняйте, ежели что. Мы ж ить академиев не кончали
Кстати, сколько у нас приезжих, сирот, подкидышей, беспризорных, детей, появляющихся у бомжей, беженцев, сектантов, в глухих деревеньках, в дороге?
ФИО на момент рождения? А если усыновление, отказ, свадьба, развод или какая-нибудь программа защиты свидетелей?
Я считаю, что "присвоенные" человеку характеристики ненадёжны, а биометрические - пока не реализуемы, да и... сетчатка глаза или отпечатки пальцев - а если глаза или пальцы повреждены? ДНК - а если ретровирусы?
Вероятность совпадений среди персонала даже довольно крупной компании пренебрежимо мала, среди населения страны - думаю, тысячи случаев. И каждый такой случай чреват. Ну, например, наследство или срок могут дать не тому :) .
В общем, тема многократно поднималась на форуме, не хочется начинать новый holy war :) .
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34979962
novise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven
А если усыновление, отказ, свадьба, развод или какая-нибудь программа защиты свидетелей?
Вероятность совпадений среди персонала даже довольно крупной компании пренебрежимо мала, среди населения страны - думаю, тысячи случаев. И каждый такой случай чреват. Ну, например, наследство или срок могут дать не тому :) .
В общем, тема многократно поднималась на форуме, не хочется начинать новый holy war :) .
Одно время я актуализировал ГАС ВЫБОРЫ в Москве. Статистика - на 150 тыс населения - 0 повторов по ФИО+дата рождения в течение 6 месяцев. Дальше не проверял - надоело быть машинисткой.

AlexTheRaven
А если усыновление, отказ, свадьба, развод или какая-нибудь программа защиты свидетелей ?
В общем, тема многократно поднималась на форуме, не хочется начинать новый holy war :) .
Особые случаи нужно предусмотреть и обрабатывать особо. Но я не собираюсь давать решение. Приведенные примеры - это примеры истории изменения учетных параметров, не более того.

to hhhhhh:
>А если один из родителей неизвестен (NULL), как тогда быть?
Ну и где проблема? Ваша БД не допускает Null в ключе? Это не влияет на задачу.
Вот такое, брат IMHO.
PS: пора пиво пить. А топикстартер - поднял тему для пятницы. (Понедельник начинается в cубботу!)
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34980089
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу хранения адреса могу сказать следующее - это отдельная тема. Не будем ее здесь поднимать. Т.к. задача решается на массиве данных 300-400 тыс. человек (население небольшого города), пусть для простоты будем считать, что адрес человека определяется кодом дома по городу (идентификатор дома в городе), номером квартиры и номером нанимателя (имеет смысл для коммунальной квартиры).
ФИО нужно хранить в 3-х разных полях. Что касается идентификатора личности, то в нашем городе не встречается двух людей с одинаковой ФИО,датой рождения. Этого достаточно. Как это делается в масштабах страны - также не будем вдаваться (скорее всего, добавляется еще место рождения или еще что-то).

В администрации небольшого города работаю я. Стоит здесь у 27 паспортистов система на SQL Server 2000, но ошибки идут, исправить программу невозможно. Собственно на уровне БД система проработана более-менее хорошо, но клиентская часть недоработана...
Есть еще требование получать события (список привел) за определенный период. А система сделать это не позволяет. Вот и нужно думать о новой системе (СУБД, язык программирования пока не определены).
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34980873
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Konstantin~наверно имеет смысл хранить данные в двух таблицах, позволяющие только SELECT и INSERT:

гражданин (
(id,timestamp), -- PK
документ, -- FK (документ.id)
имя,
фамилия ,
дата_рождения,
дата_смерти,
...
кто_менял_запись
) паспорт можно поменять. вместе в ФИО/полом/др (если найдется ошибка в записях загса) и т.п.

так что у гражданина только id. остальное - в истории этого гражданина.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34982359
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98Что касается идентификатора личности, то в нашем городе не встречается двух людей с одинаковой ФИО,датой рождения. Этого достаточно.Совершенно принципиально неправильное решение.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34982978
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98
ФИО нужно хранить в 3-х разных полях. Что касается идентификатора личности, то в нашем городе не встречается двух людей с одинаковой ФИО,датой рождения.

имхо - у вас мало опыта не только в проектировании, но и предметной области.
1. узнайте ЧТО может меняться в данных одного человека
2. ЧТО может происходить при смене данных одного человека
3. в ваш маленький город может приехать человек из любого города России и слабо вериться в реальность UI = {Ф+И+О+дата_рождения}
4. Ф, И, О меняется - так что лучше всеже иметь pk = {автоинкрементный id}
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34982989
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98 , дружище, начни с изучения законодательства по этому вопросу, а то такого напроектируешь, что потом переделывать будешь. А переделывать действующую БД это жуткий гемор - я сам проходил.
Например, по закону, я точно знаю, место рождения указывается то, которое было на момент рождения! И закон не интересует, что это место уже переименовано.
Был г. Горький теперь это г. Нижний Новгород, а в своей БД ты обязан хранить их как два неселённых пункта - математически разных, а логически одинаковых. И у людей рождённых в разное время, указывать разное место рождения (даже если паспорт поменялся).

Короче, читай закон - там всё написано. Потом проектировать будешь.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34983034
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и в догонку.
Населённых пункта два, а в зависимости от SQL запроса, например для статистики надо оба считать как один, а для юридических дел либо как один либо как два.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34983617
novise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На первый взгляд так может проехать

1. Гражданин: айди , Ф.И.О., Дата_рождения, Место рождения - справочник, дата_регистрации, (рождение/прибытие), Дата_убытия, (смерть,убытие)
2. Событие: айди_события, айди , Дата_события, (1 получение паспорта, смена паспорта, перемена фио, и т.д - справочник)
3. Параметры события: айди_события,.....

А на второй - пусть скажут более опытные.
Вроде локальная история гражданина в эту схему ложится.

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

Замечание Змейше по поводу городов - оч хор!
И улиц - точно так же! И номеров домов.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34983757
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правила регистрации населения не прописаны четко в законах РФ, в том-то и дело.
У меня предложение. Давайте не будем вдаваться в детали. Да, действительно место рождение может именоваться по-разному, но указывать на один город. Могу даже так сказать - пусть место рождения записывается одной строкой (хотя я знаю, что это заведомо неправильно), пусть ФИО+дата рождения не повторяются (хотя есть примеры когда разные люди имеют одинаковое ФИО+дата рождения).
Интересует именно структура БД, по которой можно получать список внесенных паспортистом изменений в данные в виде событий. Список событий привел и его можно считать исчерпывающим для задачи.
[quote]
-Рождение: запись акта о рождении, сообщение о рождении ребенка
-Получение паспорта: листок прибытия с данными документа, удостоверяющего личность
-Прибытие: листок прибытия с данными по регистрации прибытия
-Перемена ФИО: листок прибытия, запись акта перемены ФИО, запись акта о браке, запись акта о расторжении брака, внесение изменений в запись акта о рождении
-Смена документа:листок прибытия
-Убытие: листок убытия, сообщение об убытии
-Смерть: листок убытия, запись акта о смерти
[/quote]

Просто каждое изменение (событие) происходит на определенных основаниях. Основания я указал после каждого события через ":". Данные документа-основания должны храниться в БД (и опять-таки не будем вдаваться в подробности, как хранить адрес регистрации/снятия с регистрации).

Список документов-оснований:
- листок прибытия/убытия: дата регистрации, дата снятия, адрес куда прибыл, адрес куда убыл, причина прибытия, причина убытия, реквизиты документа, удостоверяющего личность, гражданин
- запись акта ЗАГС (о смерти, о перемене ФИО, о браке, о расторжении брака): дата актовой записи, номер актовой записи, гражданин

При этом есть 2 сущности с реквизитами:
- гражданин: фамилия, имя, отчество, дата рождения, пол, место рождения
- документ, удостоверяющий личность (паспорт РФ, паспорт СССР, свидетельство о рождении):
дата выдачи, серия, номер, кем выдан
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34983760
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное 3 сущности:
-третьей является адрес в виде кода дома по городу, квартиры и номера нанимателя (для коммунальной квартиры)
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34983969
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98При этом есть 2 сущности с реквизитами:
- гражданин: фамилия, имя, отчество, дата рождения, пол, место рождения
- документ, удостоверяющий личность (паспорт РФ, паспорт СССР, свидетельство о рождении):
дата выдачи, серия, номер, кем выдан
Такое ощущение, что Вы просто не желаете слушать оппонентов.
Среди перечисленных Вами реквизитов гражданина нет ни одного такового. Это все перечисленны реквизиты документов конкретного гражданина, которыми он может подтвердить (или опровергнуть) некоторые факты о себе.
Почему Вы считаете совет от guest_20040621 неприемлемым?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34984027
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, так

Таблица "гражданин"
код гражданина, фИО, дата рождения, пол, место рождения

Таблица "документ"
код документа,вид документа, серия, номер, кем выдан

Таблица "адрес места жительства"
код адреса, адрес

Таблица "карточка" - регистрирует все события, которые произошли с гражданином
код гражданина
код события (выбирается из справочника)
код документа (возможно NULL-значение)
код адреса
дата_события_породившее_карточку
дата_события_породившее_следующую_карточку

похоже на решение Novise.
Но что-то сильно просто
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34984041
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу советов от guest_20040621
хотя я и работаю в мун. конторе, я не занимаюсь бюджетом.
Да и зачем подниматься здесь тему управления проектам, которые разработчики готовы решать за деньги?
Неужели нельзя рассмотреть эту задачу в чистом виде, как, например, множество других задач, которые обсуждаются на форуме?

Слушаю, спрашиваю, высказываю свое мнение...
И готов это делать по теме, которую создал...
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34984101
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если эту задачу делать как дипломный проект или диссертацию, то форума вполне хватит.
А если это внедрять на практике, то нужна команда профи, в которой есть технологи, постановщики задачи, юристы, экономисты, программисты и .т.д.
Иначе подобные эксперименты над населением закончатся походами в прокуратуру.
Даже при наличие такой команды - раз в год, а то и два раза мне приходится отвечать на прокурорские запросы, а юристу посещать прокурора лично.
Даже целая команда не в состоянии простчитать все выкрутасы, которые жизнь подкидывает.
Лично я, в одиночку, не рискну заниматься этой задачей, несмотря на наличие нехилого опыта.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34984130
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы будете очень удивлены, но системы о населении, которые используются в реальности - некачественны. Ни в УФМС, ни в ЖЭО я не видел КАЧЕСТВЕННОЙ системы (по крайней мере, в нашем городе). Везде какие-то недочеты, от которых порой становится очень жаль эту отрасль.
В России есть "ИНСОФТ", который занимается отраслью персонального учета населения.
Кстати,у вас в Нижнем Новгороде внедряется система персонального учета населения, поэтому у вас, возможно, ситуация получше.

Скорее всего, на уровне АИС пенсионного фонда, ГАС "Выборы", АИС банков ситуация лучше, но опять же это не первоисточники персональных данных.

Все, давайте, не будем поднимать праздные вопросы (не по теме). Все равно проблему регистрации населения нужно решать на ином уровне.

Похоже хранить список событий по гражданину нужно примерно так, как писал Novise и чуть позже я. Если есть другие мнения - пожалуйста,высказывайте
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34984148
Konstantin~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNose Konstantin~наверно имеет смысл хранить данные в двух таблицах, позволяющие только SELECT и INSERT:

гражданин (
(id,timestamp), -- PK
документ, -- FK (документ.id)
имя,
фамилия ,
дата_рождения,
дата_смерти,
...
кто_менял_запись
) паспорт можно поменять. вместе в ФИО/полом/др (если найдется ошибка в записях загса) и т.п.

так что у гражданина только id. остальное - в истории этого гражданина.

не вижу связи что у гражданина только id. и тем что пасспорт/ФИО/етц можно поменять. В вышеприведённой схеме PK составной (id,timestamp), в случае замены ФИО добавляется новая запись с тем-же id но новым timestamp (ака datetime) .

Tекущая запись достается SELECTом с ... WHERE ROWNUM <=1 ODER BY timestamp, a предыдущие остаются в качестве истории.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34984206
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98Вы будете очень удивлены, ... . Ни в УФМС ...
Не буду. Я это всё знаю. Ежедневно с их гемороями сталкиваюсь. А разработчиков софта для Нижегородской соц.защиты я бы вообще к стенке поставил.
Сидят там бабушки в платках и ничего кроме foxpro слышать не желают. Каким-то сакральным умом решили, что № лицевого счёта не может быть больше CHAR(9). А у нас после введения единой централизованной БД он NUMERIC(10, 0) т.е. int64 так они блажью визжат, что наша БД неправильная. О как!

michael_is_98... ни в ЖЭО ...
А вот с этим намного лучше. Этот кусок моей конторе удалось под себя забрать.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34984947
Volokola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
michael_is_98
В администрации небольшого города работаю я. Стоит здесь у 27 паспортистов система на SQL Server 2000, но ошибки идут, исправить программу невозможно. Собственно на уровне БД система проработана более-менее хорошо, но клиентская часть недоработана...
Есть еще требование получать события (список привел) за определенный период. А система сделать это не позволяет. Вот и нужно думать о новой системе (СУБД, язык программирования пока не определены).
Если основа действующуй базы данных проработана хорошо, зачем проектировать заного?
Дополнить функционал, переработать клиента...
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34985645
novise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZmeisheЕсли эту задачу делать как дипломный проект или диссертацию, то форума вполне хватит.
А если это внедрять на практике, то нужна команда профи, в которой есть технологи, постановщики задачи, юристы, экономисты, программисты и .т.д.
Иначе подобные эксперименты над населением закончатся походами в прокуратуру.
Даже при наличие такой команды - раз в год, а то и два раза мне приходится отвечать на прокурорские запросы, а юристу посещать прокурора лично.
Даже целая команда не в состоянии простчитать все выкрутасы, которые жизнь подкидывает.
Лично я, в одиночку, не рискну заниматься этой задачей, несмотря на наличие нехилого опыта.
+1
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34985652
novise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volokola michael_is_98
В администрации небольшого города работаю я. Стоит здесь у 27 паспортистов система на SQL Server 2000, но ошибки идут, исправить программу невозможно. Собственно на уровне БД система проработана более-менее хорошо, но клиентская часть недоработана...
Есть еще требование получать события (список привел) за определенный период. А система сделать это не позволяет. Вот и нужно думать о новой системе (СУБД, язык программирования пока не определены).
Если основа действующуй базы данных проработана хорошо, зачем проектировать заного?
Дополнить функционал, переработать клиента...
+2
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34986922
Nosorog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
совет чайника :
я бы ввел поле СТАТУС гражданина
1. жив
2. умер
3. в розыске
и т.д.
имхо конечно же...
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34987149
Фотография Short Circuit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZmeisheЯ это всё знаю. Ежедневно с их гемороями сталкиваюсь. А разработчиков софта для Нижегородской соц.защиты я бы вообще к стенке поставил.
Сидят там бабушки в платках и ничего кроме foxpro слышать не желают. Каким-то сакральным умом решили, что № лицевого счёта не может быть больше CHAR(9). А у нас после введения единой централизованной БД он NUMERIC(10, 0) т.е. int64 так они блажью визжат, что наша БД неправильная. О как!
УСЗН - это вообще отдельная песня. даже под одним управлением, у каждой свой софт и свои правила предоставления ей цифровых данных по населению, согласно закона об оказании ком.услуг: подстраиваться приходиться под каждую.
почему нет единообразных требований и ПО - спросить тоже не у кого.
нет стратегии ИТ в данной сфере. (((
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34987516
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Short Circuitпочему нет единообразных требований и ПО - спросить тоже не у кого.
нет стратегии ИТ в данной сфере. (((

а там где есть эти "единообразные требования" и "стратегия ИТ" - от них просто блевать хочется.

все что законодатель или его сателлиты пытаются регулировать или стандартизировать они делают строго через жопу,

привлекая к решениям и консультациям самых тупых и бездарных "специалистов" в IT отрасли.

тьма тому примеров -
лучше пусть сидят себе по лавкам и в носу ковыряют чем стратегии и требования пишут
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34992719
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Konstantin~не вижу связи что у гражданина только id. и тем что пасспорт/ФИО/етц можно поменять. В вышеприведённой схеме PK составной (id,timestamp), в случае замены ФИО добавляется новая запись с тем-же id но новым timestamp (ака datetime) .

Tекущая запись достается SELECTом с ... WHERE ROWNUM <=1 ODER BY timestamp, a предыдущие остаются в качестве истории. для размера бд может иметь существенное значение
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34992722
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Short CircuitУСЗН - это вообще отдельная песня. даже под одним управлением, у каждой свой софт и свои правила предоставления ей цифровых данных по населению, согласно закона об оказании ком.услуг: подстраиваться приходиться под каждую.
почему нет единообразных требований и ПО - спросить тоже не у кого.
нет стратегии ИТ в данной сфере. ((( +1
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34992823
Konstantin~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNose Konstantin~
.... скип ...
Tекущая запись достается SELECTом с ... WHERE ROWNUM <=1 ODER BY timestamp, a предыдущие остаются в качестве истории. для размера бд может иметь существенное значение

В данном случае это не принципиально.
на первой странице оглашено ТЗ, откуда следует что кол-во записей сотни тысяч, те в таблице будет
всего 2-3 млн. записей в худшем случае.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34993089
AsPiro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98
-Рождение: запись акта о рождении, сообщение о рождении ребенка
-Получение паспорта: листок прибытия с данными документа, удостоверяющего личность
-Прибытие: листок прибытия с данными по регистрации прибытия
-Перемена ФИО: листок прибытия, запись акта перемены ФИО, запись акта о браке, запись акта о расторжении брака, внесение изменений в запись акта о рождении
-Смена документа:листок прибытия
-Убытие: листок убытия, сообщение об убытии
-Смерть: листок убытия, запись акта о смерти
Сделай всё же этот список пополняемым, а то измениться законодательство и прикажут тебе ещё чего-нибудь регистрировать.

Кстати, вдруг-таки случиться обещанная агломерация - как ты в рамках своей БД представляешь себе процедуру "переселения" ангарчан в Иркутск?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34996490
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. у человека, из атрибутов, не могут меняться наверно только дата рождения, и место рождения
следовательно table1(men_id, men_birth_date)
2. далее... идут разные события в жизнии, например получение свидетельства о рождении, где появятся его ФИО и родители, будет указан пол - это всё атрибуты, которые будут всегда, но могут меняться)
table2(id, men_id, men_name1...3, parents, sex....)
далее указываем вид события и связанный с ним документ
table2( ... event_id,event_date, doc_type,doc_id)
и как говорили выше справочник событий (events) и связаных с ними документов обязательно дополняемый.
ещё будут таблицы с видами документов, сами документами (по doc_type - что за документ, по doc_id - данные документа из соотв. таблицы)

получается, что для каждого человека будет одна запись в таблице table1
и несколько в table2
для просмотра текущей информации, делается view, где отображается последнее "событие", можно ещё для "определённого" документа

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

плюс - хранится вся история о людях и их документах

возможно имеет смысл сделать отдельный справочники для имён, фамилий, и отчеств..
parents - ссылаться на table.men_id...

по адресам, если могут меняться и названия, то думаю надо делать дерево, с возможностью хранения истории (примерно как показано выше) ... и в table2 указывать ID места рождения
сразу же сделать в клиенте возможность обновлять это дерево данными кладр

в итоге получится наверно ОЧЕНЬ большая таблица, и ОЧЕНЬ геморойно будет делать клиента... и надо отдельно что-то писать для переконвертирования старой БД
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34996763
novise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кифирчик
возможно имеет смысл сделать отдельный справочники для имён, фамилий, и отчеств..

О, только не это!!!
Кифирчик
в итоге получится наверно ОЧЕНЬ большая таблица, и ОЧЕНЬ геморойно будет делать клиента... и надо отдельно что-то писать для переконвертирования старой БД
Вот и я говорю, возми старую базу и сделай новую морду. Только то и надо сделать несколько новых отчетов.
Ну и опять же извиняйте, ежели что. Мы ж ить академиев не кончали..
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34997005
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nosorogсовет чайника :
я бы ввел поле СТАТУС гражданина
1. жив
2. умер
3. в розыске
и т.д.
имхо конечно же...


э-э-э... мдя... эт ты дал стране угля с такими статусами

перечти классиков - об этом очень хорошо высказался один видный теоретик "народный лекарь богомол" при консилиуме возле постели больного Буратино...

"Одно из двух: либо пациент мертв, либо он жив... если он жив, он будет жить... или не будет жить ."

жив или умер это разные (as boolean) значения одного и того-же атибута, который несет очень немного практического смысла - лучше тогда зарезервировать поле под значение "дата смерти"
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34997015
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Novise Кифирчик
возможно имеет смысл сделать отдельный справочники для имён, фамилий, и отчеств..

О, только не это!!!
это почему? я заинтригован
по идее размеры в разы будут меньше, и вся таблица кроме поля ev_date получится в числах...
а комп быстрее с циферками работает нежеле с varchar.... в чём проблема?

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

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

ИМХО будет больше проблем в синхронизации с КЛАДР и само создание адресного реестра....
надо как-то извратиться, чтобы он отвечал нужным требованиям (например можно было хранить историю названий, или был в виде дерева) и одновременно сохранялись все ID при синхронизации с КЛАДР....
также проблема будет в конвертировании старой базы в новую... надо быть на 100% увереным в том что ошибок не будет... и сам переход на использование новой базы и клиента будет мучительным
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34998306
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proposed amendmentлучше тогда зарезервировать поле под значение "дата смерти"
:)
планируемая дата смерти.
фактическая дата сметри.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34998311
Фотография BULK INSERT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов proposed amendmentлучше тогда зарезервировать поле под значение "дата смерти"
:)
планируемая дата смерти.
фактическая дата сметри.

угу... веселенькие такие атрибуты :)
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34998492
ERROR MESSAGE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как ваша структура будет отражать факт смены пола гражданина?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34998675
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ERROR MESSAGEА как ваша структура будет отражать факт смены пола гражданина?
если это ко мне вопрос, то:
Кифирчик
... идут разные события в жизнии, например получение свидетельства о рождении, где появятся его ФИО и родители, будет указан пол - это всё атрибуты, которые будут всегда, но могут меняться )
table2(id, men_id, men_name1...3, parents, sex ....)
далее указываем вид события и связанный с ним документ.....

в таблице table2 появится ещё одна строка, связанная с человеком, в которой будет другое поле sex, более поздняя дата, и возможно ссылка на новый паспорт или другой документ
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34998683
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кифирчик
А что будет, если в разных документах разный пол будет указан?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34998813
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в смысле? не понял вопроса
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34998875
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кифирчикв смысле? не понял вопроса
в смысле? не понял вопроса, как можно не понять смысл вопроса.
Некто имеет набор документов, в которых более одного значения пола в терминах Вашей системы. Некто кто в этом случае?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34998912
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а...
когда чел меняет пол, то он меняет и паспорт, вот на основании нового паспорта,
оператор в БД сделает запись в table2, забъёт соответствующие данные нового паспорта...
и пол человека будет определяться по последней записи... и соответствующему ей паспорту
а последняя запись, определяется примерно так WHERE event_date = (SELECT max(event_date)...)
в чём проблема?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34998949
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кифирчиккогда чел меняет пол, то он меняет и паспорт
И загранпаспорт и все остальные документы в один день?

Кифирчикв чём проблема?
Ни в чем, Вам просто в очередной раз намекают, что не должны атрибуты документов мигрировать в атрибуты людей.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #34999510
novise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кифирчик Novise Кифирчик
возможно имеет смысл сделать отдельный справочники для имён, фамилий, и отчеств..

О, только не это!!!
это почему? я заинтригован

Хрестоматийный пример: Остап Ибрагим Сулейман Берта Мария Бендер Бей. Правда по пачпорту он Остап Ибрагимович.
Поддержание актуальными доп. 3 справочников доп. гемор.
Все знают разницу между Натальей и Наталией? Лидией и Лидой?
Кифирчик
также проблема будет в конвертировании старой базы в новую... надо быть на 100% увереным в том что ошибок не будет... и сам переход на использование новой базы и клиента будет мучительным
Можно быть 100% увереным, что ошибки будут. Из-за невожможности полной конвертации к новым справочникам. Плавали, знаем.
Кифирчик
ИМХО будет больше проблем в синхронизации с КЛАДР и само создание адресного реестра....
надо как-то извратиться, чтобы он отвечал нужным требованиям (например можно было хранить историю названий, или был в виде дерева) и одновременно сохранялись все ID при синхронизации с КЛАДР....

И с остальными классификаторами и справочниками - те же проблемы.
Ну и опять же, извиняйте, ежели что. Мы ж ить академиев не кончали...
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35005101
NiKeSoft.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тема, кстати, замечательная поднята на самом деле...
Прочитал несколько раз. Осмыслил все вышесказанное.
Уже долгое время думаю над схожими проблемами и методами их решения...
Довольно много уже сказано о том, что руки и мозги у создателей и проектировщиков государственных (!!!) систем учета (населения, транспорта, нарушений и пр.) растут из Ж*. Во многих сферах и вовсе нет никакой системы учета, не говоря уже о единой системе.
А вот теперь представьте мои (уверен, не только…) мучения по созданию некой системы, которая бы объединила различные имеющиеся банки данных о населении, транспорте, происшествиях и пр. в единую базу, с возможностью удобного глобального поиска по заданным реквизитам и удобной визуализацией полученных результатов, а также попытка установления вероятных взаимосвязей.
С этой задачей сталкиваются практически в каждом отделе по безопасности как в банках, так и в частных организациях и пр.
Существующая система, под управлением СУБД (а можно ли это так назвать?) Кронос+ имеет достаточно ограничений и неудобств, да и вообще достаточная убогая система (до сих пор понять не могу, как она получила такую распространенность…).
Задача изначально показалось очень простой - что могло быть проще выгрузки множества таблиц из Кронос+ в *.csv, потом импорт их в БД, а потом написать приложение, которое будет работать с этим массивом таблиц. На словах все просто. А вот при детальном рассмотрении начали выплывать проблемы...
В общем, у кого есть какие соображения или наработки по этой теме?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35005158
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NiKeSoft.ru
Довольно много уже сказано о том, что руки и мозги у создателей и проектировщиков государственных (!!!) систем учета (населения, транспорта, нарушений и пр.) растут из Ж*.

Если вы прогах, которые спускаются сверху, то они разрабатываются, как правило ИТ-компаниями ... и государственность систем учета тут нипричем
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35005681
novise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тема то совсем другая.
Как от одной системы перейти к новой.
Если изменяется структура базы, справочники плывут и вообще...
Хорошо, если БД спущена сверху - все проблемы остаются наверху и решать их там. Это их проблемы.
А если это доморощенная разработка - то это зверек пушистый, ласковый, писец называется.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35005691
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Тема, кстати, замечательная поднята на самом деле...

Ничего замечательного. Нормальных девелоперов в госструктурах нет. И нормальным продуктам там взяться неоткуда в принципе. В ближайшие пять лет ничего не изменится.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35009281
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитал сегодня документацию ГАС "Выборы" ЭИРЦВ.90036-01 31 01. Похоже в ГАС "Выборы" все реализовано так:

ЖУРНАЛ ИЗМЕНЕНИЙ
-------------------
kodli1 - код личности новый
kodli2 - код личности старый
address1 - код адреса новый
address2 - код адреса старый
doc1 - код документа новый
doc2 - код документа старый
dat1 - |диапазон дат
dat2 - |актуальности

и таблиц
ИЗБИРАТЕЛЬ
------------
kodli - ключ
fam - фамилия
im - имя
ot - отчество
datr - дата рождения
pol - пол
mesto_rozhd - место рождения (каким-то набором полей)
dat1 - |диапазон дат
dat2 - |актуальности

АДРЕС МЕСТА ЖИТЕЛЬСТВА
---------------------------
address - ключ
addr - адрес (каким-то набором полей)
dat1 - |диапазон дат
dat2 - |актуальности

ДОКУМЕНТ ИЗБИРАТЕЛЯ
------------------------
doc - ключ
vid_doc - вид документа
ser - серия
nom - номер
kem - кем выдан
dat1 - |диапазон дат
dat2 - |актуальности
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35009283
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для паспортистов ЖЭО в чистом виде эта схема не подойдет
Медленно будет работать...
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35009462
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98Для паспортистов ЖЭО в чистом виде эта схема не подойдет
Медленно будет работать...

Она не подойдет по бизнесу, а не медленности ... вот потом и наблюдаются нетленки в госструктурах городского уровня
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35009520
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> ГАС "Выборы" ЭИРЦВ.90036-01 31 01.

УЖОСНАХ. Нет слов.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35013483
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю от теоретических выкладок перейти к практическим.
Вот мой вариант решения данной задачи:
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35016624
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
1) добавить таблицу контактных телефонов (пригодятся)
2) текущее состояние субъекта (жив/умер хотя бы)
3) национальности давно уже нету
4) адреса как минимум 2: регистрация и фактическое место жительства
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35018404
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) добавить таблицу контактных телефонов (пригодятся)
2) текущее состояние субъекта (жив/умер хотя бы)
3) национальности давно уже нету
4) адреса как минимум 2: регистрация и фактическое место жительства

В предлагаемой мною схеме все это реализуется на раз.
1. Добавить новый объект Телефон:(КодОбъекта,Номер)
Тогда можно установить сколько угодно связей между Лицом->Телефоном типа Владелец и
связь между Адресом->Телефоном типа Установлен по адресу.
2. Это вообще элементарно. Мы живем в стране бюрократии, тут не помереть ни родиться без бумажки низяя! Значит достаточно завести связь Лицо->Документ где документ Справка о смерти/Свидетельство о рождении и проблема решена.
3. Ее офицально нет, но если вам потребуется отобрать всех лиц по такому критерию - без этого туго придется.
4. Да заведите вы сколько угодно, хоть 1000 адресов на человека. Появится просто новая связь Лицо-Адрес типа Проживает/Прописан/Заходил и т.д.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35018643
Bl@ze¶ox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да ужжж....
Скажите, уважаемые, хоть кто-нибудь из Вас что-нибудь слышал о простом понятии разработки и проектирования БД как НОРМАЛИЗАЦИЯ??? Никто не подскажет мне случаем уровень нормализации вышеприведенной структруры???
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35019556
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какое преимущество приведенной схемы данных по сравнению с той, которую привел из ГАС "Выборы" в своем предыдущим посте? Предлагаю на телефонах, фактических адресах не останавливаться. Это "довесок" к задаче, который уведет нас в сторону.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35019585
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем поле "состояние человека". Если исходить из схемы данных, которую привел выше, можно посмотреть, было ли событие, например, "смерть" (не дай бог конечно) по конкретному человеку в журнале изменений.

вообще, увидеть все события по конкретному человеку - хорошая возможность
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35020670
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98Зачем поле "состояние человека". Если исходить из схемы данных, которую привел выше, можно посмотреть, было ли событие, например, "смерть" (не дай бог конечно) по конкретному человеку в журнале изменений.

вообще, увидеть все события по конкретному человеку - хорошая возможность
Верно, только вот надо все-же плясать от документа, на основании которого что-то с человеком происходит (бюрократия не всегда плохо).
Родился человек - Свидетельство о рождении
Умер человек - Свидетельство о смерти.
Сменил фамилию/пол - Новый паспорт.
и т.д. все - документируется.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35021490
novise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако, когда в документе имеется отметка - исполнен, это удобно, хотя и денормализация. Для удобства же имеет смысл иногда отсутпать от строгих правил. Я за поле состояние в табле Гражданин . Но это уже вопросы конкретной реализации. А события/документы и их хренология само собой.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35021609
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страдалецъ michael_is_98Зачем поле "состояние человека". Если исходить из схемы данных, которую привел выше, можно посмотреть, было ли событие, например, "смерть" (не дай бог конечно) по конкретному человеку в журнале изменений.

вообще, увидеть все события по конкретному человеку - хорошая возможность
Верно, только вот надо все-же плясать от документа, на основании которого что-то с человеком происходит (бюрократия не всегда плохо).
Родился человек - Свидетельство о рождении
Умер человек - Свидетельство о смерти.
Сменил фамилию/пол - Новый паспорт.
и т.д. все - документируется.

наличие документа установленной формы это документарное подтверждение факта состояния а не сам факт состояния...

а то вот так и получается - пока не выдано/предъявлено свидетельство о смерти, человек вроде как и не умер
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35021816
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заведение поля Состояние у человека - вообще неправильно. представьте себе, что сегодня вы поставили ему состояние Выпил, а завтра вам надо проставить уже Закусил. Чего будете делать?
Заводить отдельную табличку для фиксации этих изменений придется.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35021843
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> ГАС "Выборы" ЭИРЦВ.90036-01 31 01.

УЖОСНАХ. Нет слов.
+1
Думаю, документация врёт, если система всё же работает в масштабах страны. Деза, "honey pot", "тепловая ловушка".

СтрадалецъПредлагаю от теоретических выкладок перейти к практическим.
Вот мой вариант решения данной задачи:
Если уж формально: то, что изображено - не ERD, и даже не UML Class Diagram. Это - помесь MS Access "ERD" с UML 2 Object Diagram, этакая "row diagram". Полезность сомнительна. Если вы, конечно, действительно не хотите для каждого человека и документа создавать отдельную таблицу. Если хотите - то см. выше.

Bl@ze¶oxДа ужжж....
Скажите, уважаемые, хоть кто-нибудь из Вас что-нибудь слышал о простом понятии разработки и проектирования БД как НОРМАЛИЗАЦИЯ??? Никто не подскажет мне случаем уровень нормализации вышеприведенной структруры???
Если брать только то, что без "1" в названии - то формально 3НФ. Вроде бы, ни повторяющихся полей, ни зависимостей от части ключа, ни зависимостей от неключевых атрибутов нет. Другое дело, что логически неправильно и очень неудобно в использовании.
Оно, конечно, объект класса, и если десериализовать в оперативной памяти - может, всё замечательно, сложно, объектно, прогрессивно, концептуально, архитектурно и бюджетно-осваивательно получится. Но десериализовать несколько десятков Гб недопустимо, поэтому надо сначала выбрать. Какую руладу нужно написать и выполнить, чтобы просто получить номер последнего выданного человеку паспорта! А получить адрес на определённый момент времени вообще невозможно.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35022032
YBW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
YBW
Гость
Страдалецъ
Заводить отдельную табличку для фиксации этих изменений придется.


кхм...


ну и что? что в этом вас так пугает?

вы знаете и готовы предложить иное и лучшее решение?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35022033
YBW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
YBW
Гость
AlexTheRaven guest_20040621> ГАС "Выборы" ЭИРЦВ.90036-01 31 01.

УЖОСНАХ. Нет слов.
+1
Думаю, документация врёт, если система всё же работает в масштабах страны. Деза, "honey pot", "тепловая ловушка".

+1
+1

"голый король" или система с одной и положительной обратной связью
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35022593
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proposed amendmentа то вот так и получается - пока не выдано/предъявлено свидетельство о смерти, человек вроде как и не умер
Более интересная ситуация, когда объявился человек, которого признали умершим.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35022685
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YBW Страдалецъ
Заводить отдельную табличку для фиксации этих изменений придется.
кхм...
ну и что? что в этом вас так пугает?
вы знаете и готовы предложить иное и лучшее решение?
Нет меня это не пугает, это решение сильно отличается от заведения поля-признака у лица.
ЗЫ: Я так понял, что глядя на мою схему все решили что в БД две таблицы Лицо и Документ и т.д?
Даже не предполагал, что можно сделать такой вывод. Я для наглядности формирования связи повторил эти таблички.
В БД естественно одна таблица Лицо,Адрес,Документ. Как и одна таблица Связь.
Если неочень понятно, то могу выложить акцесовский пример.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35022712
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так как сам разрабатываю и дорабатываю программу для паспортных столов. То могу сказать следующие.
Не одна запись не удаляется и не изменяется. Если есть какое редактирование, то создается новая запись имеющие статус действующая, а предыдущая получает статус история. Записи имеет три статуса: история, действующая, удаленная.
По поводу людей. У меня по ним сделано так если кратко.
Люди:

Идентификатор человека.
Дата вноса.
Указатель на Страну рождения.
Указатель на место рождения.
Дата рождения

ФИО:

Идентификатор человека.
Фамилия
Имя
Отчество
Пол (может сменить)
Дата ввода
Дата ввода первой записи
Статус
Дата начала действия фамилии
Дата окончания действия фамилии

Документ:

Идентификатор человека.
Указатель на документ
Указатель на орг. выдавшия документ
Причина выдачи документа.
Дата выдачи документа
Дата окончания действия документа.
Дата ввода
Дата ввода первой записи
Статус

Приводить все не буду, да и поля не все указал. Если интересно то спрашивайте.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35022861
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a1ekseyv
...
Документ:

Идентификатор человека.
Указатель на документ
Указатель на орг. выдавшия документ
Причина выдачи документа.
Дата выдачи документа
Дата окончания действия документа.
Дата ввода
Дата ввода первой записи
Статус
Т.е. у вас получается жестко заданно, что документ только у человека?
А если возникнет необходимость регистрации Организации? Есть аналогичная таблица для организации?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35022871
NiKeSoft.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно!

Если можно, то поподробнее.
Будет интересно посмотреть как реализована реально внедренная и работающая система.
А то здесь, в основном, одни теоретики высказываются...
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023034
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Основное это подготовка первичной док для регистрации. Орг. не может быть зарег. Ном может быть собственником. Для собственников отд таб. Где есть поля физ или юр. Лицо. Если физ то данные берутся из одного справочника, а если юр из другого.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023042
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я привел таб. Документы людей. Для юр. лиц. просто отдельный справочник.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023056
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если упрощенно то
Т.е. табл. Собственнико.
1. физ или юр лицо
2. указатель на человека или на юр лицо.
3. док. Собственника Указатель
4. Номер документа
5. Дата начала
6. дата окончания.
7.Дата ввода
8.Дата ввода первой записи
9.Статус
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023103
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не секрет, на чем написана система?

БД - какая СУБД (полагаю MS SQL или Oracle)
клиентская часть - ?
кол-во пользователей - ?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023127
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DB2 - сервер. Клиентская часть на C#. 10 пунктов. 8 VPN канал 64. Работают все на центрально сервере. с оставшими двумя пока геморой. 60 пользоваетелей.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023142
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И все же хранить в разных таблицах ФИО и дату рождения нерационально.
Ведь человек может и поменять дату рождения
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023297
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98И все же хранить в разных таблицах ФИО и дату рождения нерационально.
Ведь человек может и поменять дату рождения
Это зависит не от возможности поменять одно и не поменять другое, а от того, одним ли документом это изменение происходит.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023314
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я говорю о той структуре, которую привел выше коллега...

здесь говорилось о ГАС "Выборы". После прочтения документа ЭИРЦВ.90036-01 31 01 (руководства администратора системы) у меня сложилось свое мнение о структуре этой АС.
Кто-нибудь реально может сказать, близко ли оно к истине или нет?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023511
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Человек не может изменить место рождению и дату. Они могут быть не правильно введены. И в отличие от ФИО и пола менять их не может.

По поводу ГАС "Выборы" мы предоставляем им еженедельную выгрузку в формате котором они просили. А данный документ я к сожалению не читал.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023531
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a1ekseyvЧеловек не может изменить место рождению и дату. Они могут быть не правильно введены
И что по-Вашему происходит, если дата рождения неверно указана? Знаю, что есть случаи, когда меняли дату рождения и место рождения человека. А по какой причине меняют - для учетной системы неважно.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023584
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возьмем пример.
На улице ленина 4-1.
Проживал Сидоров Петр Петрович. Он сходил к хирургу и сменил пол. И на основание этого стал Сидорова Нина Петровна.

Второй случай Сидоров Петр Петрович по паспорту родился 28.02.1950. Он пришел и написал заявление об том что он родился 28.02.1951.

Это разные операция . В первом дата рож. Не трогается. А во втором ФИО и пол не изменяется.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023612
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_is_98Ведь человек может и поменять дату рождения

хм интересная трактовка :)

я не сторонник грубого оголтелого и беспощадного материализма, но готов согласиться с таковыми, что как минимум два события, из касающихся его лично, человек не может ПОМЕНЯТЬ

(может ускорить или отодвинуть но не поменять)

дату рождения и дату смерти - C'est La Vie
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023621
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожелению. Уже было два случая смены пола.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023623
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a1ekseyvИ на основание этого стал Сидорова Нина Петровна

что за бред горячечный

как достали уже эти теоретики доморощенные
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023636
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a1ekseyvК сожелению. Уже было два случая смены пола.
И как оно?
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023670
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя это крайность. Но у нас есть человек, который как говорят операторы. Себе и всей семье меняет ФИО чуть ли не каждые пол года.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023710
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a1ekseyvкоторый как говорят операторы.

угу... нашел кого слушать они тебе наговорят...

и про переименования городов-улиц и про смену телефона и про прочее-прочее
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023832
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример человек 72г. рождения сменил 5 раз Фамилию.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35023994
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a1ekseyvПример человек 72г. рождения сменил 5 раз Фамилию.

и, соответсвенно, 5 раз получают в ЗАГС'е Свидетельство о смене фамилии и получают новый паспорт

в общем случае получается, что все изменения можно вносить на основании документов ЗАГС
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35024287
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Любые изменения данных о человек(дата рождения, место рождения, фио) вносятся на основание документа. Паспортные столы только подготавливают информацию и передают в милицию.
После выноса решения и осуществляется ввод записи.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35024338
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a1ekseyvПосле выноса решения и осуществляется ввод записи.

зависит от назначения БД и от конкретного Атрибута - иначе вы рискуете остаться без клиетов, если будете на каждый чих требовать паспорт или свидетельство о рождении или справку из ЗАГС
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35025161
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это правильно. На основании документов и должны вводиться данные. Другое дело, что даже в документах иногда бывают ошибки. Но не будем касаться этой темы.
В вашей системе есть входной контроль?
Горизонтальный контроль (фамилия, имя, отчество, дата рождения, серия, номер паспорта) самый простой. Но есть еще вертикальный контроль - непротиворечивость событий (например, после получения документа 'паспорт' нельзя изменить документ на 'свидетельство о рождении'). Хороший горизонтальный и вертикальный контроль реализован в ГАС "Выборы"
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35025181
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще... Как в системе реализованы события, связанные с адресами места жительства (прибытие, убытие). Делится ли прибытие на прибытие в пределах города и прибытие из другого нас. пункта?
Хорошо бы увидеть саму привязку человека к адресу (полагаю, это отдельная таблица). Тему самого хранения адресов предлагаю не затрагивать.
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35025934
Nosorog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а у них уже это работает !!!

С 15 до 24 государств расширилось сегодня шенгенское пространство. Жители этих стран теперь могут свободно ездить друг к другу в гости или по делам...
расширение Шенгена сопровождается усилением сотрудничества спецслужб и полиции стран EС, распространением трансъевропейской базы данных о находящихся в розыске лицах и предметах...
Euronews
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35034061
michael_is_98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В масштабе государства можно спроектировать точно такую же БД, как и в масштабах небольшого города, если заранее решить проблему хранения адресов, документов. И, главное, организационно сплотить работу соответствующих служб
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35040702
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов proposed amendmentлучше тогда зарезервировать поле под значение "дата смерти"
:)
планируемая дата смерти.
фактическая дата сметри.

Дата реинкарнации... :D
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35082082
nosorogа у них уже это работает !!!

С 15 до 24 государств расширилось сегодня шенгенское пространство. Жители этих стран теперь могут свободно ездить друг к другу в гости или по делам...
расширение Шенгена сопровождается усилением сотрудничества спецслужб и полиции стран EС, распространением трансъевропейской базы данных о находящихся в розыске лицах и предметах...
Euronews

Мишель! Не надо БД ФИО, адресов, документов. Только ОТПЕЧАТКИ ПАЛЬЦЕВ. (или рельеф уха, если пальцев нет)
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35085561
nosov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторНе надо ФИО, адресов, документов. Только ОТПЕЧАТКИ ПАЛЬЦЕВ
Британцы и Японцы уже снимают опечатки при вЪезде иностранцев.
нам сложнее -- краски не хватит на гастробайтеров (имхо)
...
Рейтинг: 0 / 0
Проектирование БД о населении
    #35085861
Фотография BULK INSERT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nosovкраски не хватит на гастробайтеров (имхо)

не надо краски - они руки не моют - пусть им пальцы прямо так есть катают
...
Рейтинг: 0 / 0
111 сообщений из 111, показаны все 5 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД о населении
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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