|
|
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Есть задача - создать БД для хранения информации по населению. Задача известна давно, подкупает своей простотой, но при ближайшем рассмотрении оказывается не такой тривиальной. Исходные данные: По гражданину: фамилия, имя, отчество, дата рождения, пол, место рождения По документу: вид документа, серия, номер, дата документа, кем выдан, причина получения, причина изменения По регистрации: дата регистрации, дата снятия, адрес куда прибыл, адрес куда убыл, причина прибытия, причина убытия По смерти гражданина: номер актовой записи, дата актовой записи Проектируемая структура БД должна отражать события: - рождение гражданина - первое получение паспорта - смену документа - перемену ФИО - прибытие - убытие - смерть Т.е. структура БД должна позволять получать отчеты за опр. период времени с данными граждан по отдельным событиям выше. Ваши предложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 06:30 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Понятно, что должна быть таблица с ключом kodli и полями фамилия, имя, отчество, дата рождения, пол, место рождения Может быть вторая таблица документа с полями kodli, датой документа, его реквизитами, кодом события (первое получение, замена), причиной получения/замены Может быть третья таблица регистрации с полями kodli, датой регистрации, дата снятия с регистрации, адрес регистрации, причина регистрации/снятия с регистрации Но как тогда хранить данные по событиям смена фио, смерть гражданина? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 06:39 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98Есть задача - создать БД для хранения информации по населению. Задача известна давно, подкупает своей простотой, но при ближайшем рассмотрении оказывается не такой тривиальной. Исходные данные: По гражданину: фамилия, имя, отчество, дата рождения, пол, место рождения По документу: вид документа, серия, номер, дата документа, кем выдан, причина получения, причина изменения По регистрации: дата регистрации, дата снятия, адрес куда прибыл, адрес куда убыл, причина прибытия, причина убытия По перемене ФИО: номер актовой записи, дата актовой записи о браке, номер актовой записи, дата актовой записи о расторжение брака По смерти гражданина: номер актовой записи, дата актовой записи о смерти Проектируемая структура БД должна отражать события: - рождение гражданина - первое получение паспорта - смену документа - перемену ФИО - прибытие - убытие - смерть Т.е. структура БД должна позволять получать отчеты за опр. период времени с данными граждан по отдельным событиям выше. Ваши предложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 06:44 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98 michael_is_98Есть задача - создать БД для хранения информации по населению. Задача известна давно, подкупает своей простотой, но при ближайшем рассмотрении оказывается не такой тривиальной. Исходные Данные: - гражданин: фамилия, имя, отчество, дата рождения, пол, место рождения - документ, удостоверяющий личность (паспорт РФ, паспорт СССР, свидетельство о рождении): дата выдачи, серия, номер, кем выдан - листок прибытия/убытия: дата регистрации, дата снятия, адрес куда прибыл, адрес куда убыл, причина прибытия, причина убытия - запись акта ЗАГС (о смерти, о перемене ФИО, о браке, о расторжении брака): дата актовой записи, номер актовой записи Регистрируемые события: -Рождение: запись акта о рождении, сообщение о рождении ребенка -Получение паспорта: листок прибытия с данными документа, удостоверяющего личность -Прибытие: листок прибытия с данными по регистрации прибытия -Перемена ФИО: листок прибытия, запись акта перемены ФИО, запись акта о браке, запись акта о расторжении брака, внесение изменений в запись акта о рождении -Смена документа:листок прибытия -Убытие: листок убытия, сообщение об убытии -Смерть: листок убытия, запись акта о смерти Проектируемая структура БД должна отражать эти события и получать отчеты за опр. период времени с данными граждан и события по отдельным событиям выше. Ваши предложения? Так ближе к ГАС "Выборы" - лучше ориентироваться на этот пост ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 07:16 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
> Ваши предложения? Традиционные, дружище: наймите нормального архитектора, который умеет решать такие задачи. Опционально: попробуйте понять, что "осваивать бабло" и "квалификация" - взаимоисключающие понятия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 07:48 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
По поводу найма архитекторов, "осваивания бабло" - не ко мне. Предлагаю модератору подобные высказывания удалять без предупреждения. интересует возможная схема БД и конкретные ответы на вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 08:07 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
На днях крутил базу данных населения кем-то скачаную давным давно. Позлился с того, что на имя-фамилия-отчество и место жительства было выделено по 1 полю. Так что рекомендую адрес тоже раздробить на поля, чтоб не было проблем с поиском или, как у одного товарища здесь, вырезанием почтового индекса из адресной строки. Я бы сделал отдельно таблицу городов и таблицу улиц и прочих часто повторяющихся данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 11:48 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Этому форуму очень не хватает возможности редактировать своё сообщение. Приходится писать ещё одно если хочешь что-нибудь добавить или изменить. З.Ы. Автор а вы откуда и на кого работаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 11:51 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Я бы сделал таблицу событий: id события, id гражданина (ваш kodli), тип события (рождение, смена ФИО, смерть), дата актовой записи, номер актовой записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 13:21 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Ваши предложения? Традиционные, дружище: наймите нормального архитектора, который умеет решать такие задачи. Поддерживаю на 100%. Не лечите нос у гинеколога... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 13:39 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
наверно имеет смысл хранить данные в двух таблицах, позволяющие только SELECT и INSERT: гражданин ( (id,timestamp), -- PK документ, -- FK (документ.id) имя, фамилия , дата_рождения, дата_смерти, ... кто_менял_запись ) документ ( id, -- PK тип_документа, дата выдачи, ... кто_менял_запись, timestamp ) идея 1 в том что для внесения записи в гражданин надо сначала заполнить документ на основании которого делается запись. (типа новый чел --> надо свидетельство о рождении, документ прописки и тд) идея 2 в том что записи нельзя стирать или исправлять; правильной считается текущая запись. нормализация, индексы, справочники -- по вкусу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 13:40 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98<...> Ваши предложения? Поточнее сформулировать требования: списки событий и документов, требования к производительности, количеству пользователей, перечень доступных аппаратных и программных платформ. Т.к. задача очень серьёзная, БД населения страны - не БД отдела кадров небольшой конторки. А вы начинаете решать её "нахрапом", не с начала, а с середины. Что требует очень универсальных, а значит - менее эффективных, решений. ------------------------------------------ Классы: гражданин - событие - документ "Документ" и "событие" - с большим кол-вом подклассов, укладывать в БД в виде EAV- или ROT-структур, с хранением истории изменений. "Гражданин" - имеет только искусственный идентификатор, укладывать в таблицу, остальные поля которой содержат временные значения, вычисляемые на основании событий и документов при обращении и/или на регулярной основе, или вообще не укладывать. Возможно, поддерживать 2 БД, "оперативную" и "историческую" (возможно с OLAP и ETL). Организовать проверку корректности и "очистку" информации, интегрироваться с КЛАДРом. Выбрать подходы по результатам исследования производительности для 150*10^9 граждан, 150*10^11 событий, 150*10^12 документов, оптимистический размер БД 150 Пб (150*10^15 байт, 150*10^3 Тб). Потянете задачку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 15:36 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven "Гражданин" - имеет только искусственный идентификатор... Не согласен. ФИО+дата рождения+родители+место рождения - прикинь вероятность совпадений. Ну и опять же извиняйте, ежели что. Мы ж ить академиев не кончали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 17:41 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Novise AlexTheRaven "Гражданин" - имеет только искусственный идентификатор... Не согласен. ФИО+дата рождения+родители+место рождения - прикинь вероятность совпадений. Ну и опять же извиняйте, ежели что. Мы ж ить академиев не кончали А если один из родителей неизвестен (NULL), как тогда быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 19:29 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Novise AlexTheRaven "Гражданин" - имеет только искусственный идентификатор... Не согласен. ФИО+дата рождения+родители+место рождения - прикинь вероятность совпадений. Ну и опять же извиняйте, ежели что. Мы ж ить академиев не кончали Кстати, сколько у нас приезжих, сирот, подкидышей, беспризорных, детей, появляющихся у бомжей, беженцев, сектантов, в глухих деревеньках, в дороге? ФИО на момент рождения? А если усыновление, отказ, свадьба, развод или какая-нибудь программа защиты свидетелей? Я считаю, что "присвоенные" человеку характеристики ненадёжны, а биометрические - пока не реализуемы, да и... сетчатка глаза или отпечатки пальцев - а если глаза или пальцы повреждены? ДНК - а если ретровирусы? Вероятность совпадений среди персонала даже довольно крупной компании пренебрежимо мала, среди населения страны - думаю, тысячи случаев. И каждый такой случай чреват. Ну, например, наследство или срок могут дать не тому :) . В общем, тема многократно поднималась на форуме, не хочется начинать новый holy war :) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 20:20 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven А если усыновление, отказ, свадьба, развод или какая-нибудь программа защиты свидетелей? Вероятность совпадений среди персонала даже довольно крупной компании пренебрежимо мала, среди населения страны - думаю, тысячи случаев. И каждый такой случай чреват. Ну, например, наследство или срок могут дать не тому :) . В общем, тема многократно поднималась на форуме, не хочется начинать новый holy war :) . Одно время я актуализировал ГАС ВЫБОРЫ в Москве. Статистика - на 150 тыс населения - 0 повторов по ФИО+дата рождения в течение 6 месяцев. Дальше не проверял - надоело быть машинисткой. AlexTheRaven А если усыновление, отказ, свадьба, развод или какая-нибудь программа защиты свидетелей ? В общем, тема многократно поднималась на форуме, не хочется начинать новый holy war :) . Особые случаи нужно предусмотреть и обрабатывать особо. Но я не собираюсь давать решение. Приведенные примеры - это примеры истории изменения учетных параметров, не более того. to hhhhhh: >А если один из родителей неизвестен (NULL), как тогда быть? Ну и где проблема? Ваша БД не допускает Null в ключе? Это не влияет на задачу. Вот такое, брат IMHO. PS: пора пиво пить. А топикстартер - поднял тему для пятницы. (Понедельник начинается в cубботу!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2007, 21:32 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
По поводу хранения адреса могу сказать следующее - это отдельная тема. Не будем ее здесь поднимать. Т.к. задача решается на массиве данных 300-400 тыс. человек (население небольшого города), пусть для простоты будем считать, что адрес человека определяется кодом дома по городу (идентификатор дома в городе), номером квартиры и номером нанимателя (имеет смысл для коммунальной квартиры). ФИО нужно хранить в 3-х разных полях. Что касается идентификатора личности, то в нашем городе не встречается двух людей с одинаковой ФИО,датой рождения. Этого достаточно. Как это делается в масштабах страны - также не будем вдаваться (скорее всего, добавляется еще место рождения или еще что-то). В администрации небольшого города работаю я. Стоит здесь у 27 паспортистов система на SQL Server 2000, но ошибки идут, исправить программу невозможно. Собственно на уровне БД система проработана более-менее хорошо, но клиентская часть недоработана... Есть еще требование получать события (список привел) за определенный период. А система сделать это не позволяет. Вот и нужно думать о новой системе (СУБД, язык программирования пока не определены). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2007, 03:52 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Konstantin~наверно имеет смысл хранить данные в двух таблицах, позволяющие только SELECT и INSERT: гражданин ( (id,timestamp), -- PK документ, -- FK (документ.id) имя, фамилия , дата_рождения, дата_смерти, ... кто_менял_запись ) паспорт можно поменять. вместе в ФИО/полом/др (если найдется ошибка в записях загса) и т.п. так что у гражданина только id. остальное - в истории этого гражданина. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2007, 22:48 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98Что касается идентификатора личности, то в нашем городе не встречается двух людей с одинаковой ФИО,датой рождения. Этого достаточно.Совершенно принципиально неправильное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2007, 14:37 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98 ФИО нужно хранить в 3-х разных полях. Что касается идентификатора личности, то в нашем городе не встречается двух людей с одинаковой ФИО,датой рождения. имхо - у вас мало опыта не только в проектировании, но и предметной области. 1. узнайте ЧТО может меняться в данных одного человека 2. ЧТО может происходить при смене данных одного человека 3. в ваш маленький город может приехать человек из любого города России и слабо вериться в реальность UI = {Ф+И+О+дата_рождения} 4. Ф, И, О меняется - так что лучше всеже иметь pk = {автоинкрементный id} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2007, 17:05 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98 , дружище, начни с изучения законодательства по этому вопросу, а то такого напроектируешь, что потом переделывать будешь. А переделывать действующую БД это жуткий гемор - я сам проходил. Например, по закону, я точно знаю, место рождения указывается то, которое было на момент рождения! И закон не интересует, что это место уже переименовано. Был г. Горький теперь это г. Нижний Новгород, а в своей БД ты обязан хранить их как два неселённых пункта - математически разных, а логически одинаковых. И у людей рождённых в разное время, указывать разное место рождения (даже если паспорт поменялся). Короче, читай закон - там всё написано. Потом проектировать будешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2007, 17:09 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Да и в догонку. Населённых пункта два, а в зависимости от SQL запроса, например для статистики надо оба считать как один, а для юридических дел либо как один либо как два. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2007, 17:21 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
На первый взгляд так может проехать 1. Гражданин: айди , Ф.И.О., Дата_рождения, Место рождения - справочник, дата_регистрации, (рождение/прибытие), Дата_убытия, (смерть,убытие) 2. Событие: айди_события, айди , Дата_события, (1 получение паспорта, смена паспорта, перемена фио, и т.д - справочник) 3. Параметры события: айди_события,..... А на второй - пусть скажут более опытные. Вроде локальная история гражданина в эту схему ложится. Если у тебя нормальная база, которая устраивает, не трогай ее. Переделай приложение. Или сделай доп нашлепку. Переход с одной базы на другую - это нечто не предсказуемо геморное. Замечание Змейше по поводу городов - оч хор! И улиц - точно так же! И номеров домов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2007, 22:32 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Правила регистрации населения не прописаны четко в законах РФ, в том-то и дело. У меня предложение. Давайте не будем вдаваться в детали. Да, действительно место рождение может именоваться по-разному, но указывать на один город. Могу даже так сказать - пусть место рождения записывается одной строкой (хотя я знаю, что это заведомо неправильно), пусть ФИО+дата рождения не повторяются (хотя есть примеры когда разные люди имеют одинаковое ФИО+дата рождения). Интересует именно структура БД, по которой можно получать список внесенных паспортистом изменений в данные в виде событий. Список событий привел и его можно считать исчерпывающим для задачи. [quote] -Рождение: запись акта о рождении, сообщение о рождении ребенка -Получение паспорта: листок прибытия с данными документа, удостоверяющего личность -Прибытие: листок прибытия с данными по регистрации прибытия -Перемена ФИО: листок прибытия, запись акта перемены ФИО, запись акта о браке, запись акта о расторжении брака, внесение изменений в запись акта о рождении -Смена документа:листок прибытия -Убытие: листок убытия, сообщение об убытии -Смерть: листок убытия, запись акта о смерти [/quote] Просто каждое изменение (событие) происходит на определенных основаниях. Основания я указал после каждого события через ":". Данные документа-основания должны храниться в БД (и опять-таки не будем вдаваться в подробности, как хранить адрес регистрации/снятия с регистрации). Список документов-оснований: - листок прибытия/убытия: дата регистрации, дата снятия, адрес куда прибыл, адрес куда убыл, причина прибытия, причина убытия, реквизиты документа, удостоверяющего личность, гражданин - запись акта ЗАГС (о смерти, о перемене ФИО, о браке, о расторжении брака): дата актовой записи, номер актовой записи, гражданин При этом есть 2 сущности с реквизитами: - гражданин: фамилия, имя, отчество, дата рождения, пол, место рождения - документ, удостоверяющий личность (паспорт РФ, паспорт СССР, свидетельство о рождении): дата выдачи, серия, номер, кем выдан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 04:42 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Наверное 3 сущности: -третьей является адрес в виде кода дома по городу, квартиры и номера нанимателя (для коммунальной квартиры) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 05:02 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98При этом есть 2 сущности с реквизитами: - гражданин: фамилия, имя, отчество, дата рождения, пол, место рождения - документ, удостоверяющий личность (паспорт РФ, паспорт СССР, свидетельство о рождении): дата выдачи, серия, номер, кем выдан Такое ощущение, что Вы просто не желаете слушать оппонентов. Среди перечисленных Вами реквизитов гражданина нет ни одного такового. Это все перечисленны реквизиты документов конкретного гражданина, которыми он может подтвердить (или опровергнуть) некоторые факты о себе. Почему Вы считаете совет от guest_20040621 неприемлемым? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 09:42 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Возможно, так Таблица "гражданин" код гражданина, фИО, дата рождения, пол, место рождения Таблица "документ" код документа,вид документа, серия, номер, кем выдан Таблица "адрес места жительства" код адреса, адрес Таблица "карточка" - регистрирует все события, которые произошли с гражданином код гражданина код события (выбирается из справочника) код документа (возможно NULL-значение) код адреса дата_события_породившее_карточку дата_события_породившее_следующую_карточку похоже на решение Novise. Но что-то сильно просто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 10:05 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
по поводу советов от guest_20040621 хотя я и работаю в мун. конторе, я не занимаюсь бюджетом. Да и зачем подниматься здесь тему управления проектам, которые разработчики готовы решать за деньги? Неужели нельзя рассмотреть эту задачу в чистом виде, как, например, множество других задач, которые обсуждаются на форуме? Слушаю, спрашиваю, высказываю свое мнение... И готов это делать по теме, которую создал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 10:11 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Если эту задачу делать как дипломный проект или диссертацию, то форума вполне хватит. А если это внедрять на практике, то нужна команда профи, в которой есть технологи, постановщики задачи, юристы, экономисты, программисты и .т.д. Иначе подобные эксперименты над населением закончатся походами в прокуратуру. Даже при наличие такой команды - раз в год, а то и два раза мне приходится отвечать на прокурорские запросы, а юристу посещать прокурора лично. Даже целая команда не в состоянии простчитать все выкрутасы, которые жизнь подкидывает. Лично я, в одиночку, не рискну заниматься этой задачей, несмотря на наличие нехилого опыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 10:30 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Вы будете очень удивлены, но системы о населении, которые используются в реальности - некачественны. Ни в УФМС, ни в ЖЭО я не видел КАЧЕСТВЕННОЙ системы (по крайней мере, в нашем городе). Везде какие-то недочеты, от которых порой становится очень жаль эту отрасль. В России есть "ИНСОФТ", который занимается отраслью персонального учета населения. Кстати,у вас в Нижнем Новгороде внедряется система персонального учета населения, поэтому у вас, возможно, ситуация получше. Скорее всего, на уровне АИС пенсионного фонда, ГАС "Выборы", АИС банков ситуация лучше, но опять же это не первоисточники персональных данных. Все, давайте, не будем поднимать праздные вопросы (не по теме). Все равно проблему регистрации населения нужно решать на ином уровне. Похоже хранить список событий по гражданину нужно примерно так, как писал Novise и чуть позже я. Если есть другие мнения - пожалуйста,высказывайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 10:43 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
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 предыдущие остаются в качестве истории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 10:48 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98Вы будете очень удивлены, ... . Ни в УФМС ... Не буду. Я это всё знаю. Ежедневно с их гемороями сталкиваюсь. А разработчиков софта для Нижегородской соц.защиты я бы вообще к стенке поставил. Сидят там бабушки в платках и ничего кроме foxpro слышать не желают. Каким-то сакральным умом решили, что № лицевого счёта не может быть больше CHAR(9). А у нас после введения единой централизованной БД он NUMERIC(10, 0) т.е. int64 так они блажью визжат, что наша БД неправильная. О как! michael_is_98... ни в ЖЭО ... А вот с этим намного лучше. Этот кусок моей конторе удалось под себя забрать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 11:01 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98 В администрации небольшого города работаю я. Стоит здесь у 27 паспортистов система на SQL Server 2000, но ошибки идут, исправить программу невозможно. Собственно на уровне БД система проработана более-менее хорошо, но клиентская часть недоработана... Есть еще требование получать события (список привел) за определенный период. А система сделать это не позволяет. Вот и нужно думать о новой системе (СУБД, язык программирования пока не определены). Если основа действующуй базы данных проработана хорошо, зачем проектировать заного? Дополнить функционал, переработать клиента... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 13:40 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
ZmeisheЕсли эту задачу делать как дипломный проект или диссертацию, то форума вполне хватит. А если это внедрять на практике, то нужна команда профи, в которой есть технологи, постановщики задачи, юристы, экономисты, программисты и .т.д. Иначе подобные эксперименты над населением закончатся походами в прокуратуру. Даже при наличие такой команды - раз в год, а то и два раза мне приходится отвечать на прокурорские запросы, а юристу посещать прокурора лично. Даже целая команда не в состоянии простчитать все выкрутасы, которые жизнь подкидывает. Лично я, в одиночку, не рискну заниматься этой задачей, несмотря на наличие нехилого опыта. +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 16:20 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Volokola michael_is_98 В администрации небольшого города работаю я. Стоит здесь у 27 паспортистов система на SQL Server 2000, но ошибки идут, исправить программу невозможно. Собственно на уровне БД система проработана более-менее хорошо, но клиентская часть недоработана... Есть еще требование получать события (список привел) за определенный период. А система сделать это не позволяет. Вот и нужно думать о новой системе (СУБД, язык программирования пока не определены). Если основа действующуй базы данных проработана хорошо, зачем проектировать заного? Дополнить функционал, переработать клиента... +2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 16:21 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
совет чайника : я бы ввел поле СТАТУС гражданина 1. жив 2. умер 3. в розыске и т.д. имхо конечно же... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2007, 09:32 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
ZmeisheЯ это всё знаю. Ежедневно с их гемороями сталкиваюсь. А разработчиков софта для Нижегородской соц.защиты я бы вообще к стенке поставил. Сидят там бабушки в платках и ничего кроме foxpro слышать не желают. Каким-то сакральным умом решили, что № лицевого счёта не может быть больше CHAR(9). А у нас после введения единой централизованной БД он NUMERIC(10, 0) т.е. int64 так они блажью визжат, что наша БД неправильная. О как! УСЗН - это вообще отдельная песня. даже под одним управлением, у каждой свой софт и свои правила предоставления ей цифровых данных по населению, согласно закона об оказании ком.услуг: подстраиваться приходиться под каждую. почему нет единообразных требований и ПО - спросить тоже не у кого. нет стратегии ИТ в данной сфере. ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2007, 10:41 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Short Circuitпочему нет единообразных требований и ПО - спросить тоже не у кого. нет стратегии ИТ в данной сфере. ((( а там где есть эти "единообразные требования" и "стратегия ИТ" - от них просто блевать хочется. все что законодатель или его сателлиты пытаются регулировать или стандартизировать они делают строго через жопу, привлекая к решениям и консультациям самых тупых и бездарных "специалистов" в IT отрасли. тьма тому примеров - лучше пусть сидят себе по лавкам и в носу ковыряют чем стратегии и требования пишут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2007, 11:46 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Konstantin~не вижу связи что у гражданина только id. и тем что пасспорт/ФИО/етц можно поменять. В вышеприведённой схеме PK составной (id,timestamp), в случае замены ФИО добавляется новая запись с тем-же id но новым timestamp (ака datetime) . Tекущая запись достается SELECTом с ... WHERE ROWNUM <=1 ODER BY timestamp, a предыдущие остаются в качестве истории. для размера бд может иметь существенное значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2007, 21:14 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Short CircuitУСЗН - это вообще отдельная песня. даже под одним управлением, у каждой свой софт и свои правила предоставления ей цифровых данных по населению, согласно закона об оказании ком.услуг: подстраиваться приходиться под каждую. почему нет единообразных требований и ПО - спросить тоже не у кого. нет стратегии ИТ в данной сфере. ((( +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2007, 21:15 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
eNose Konstantin~ .... скип ... Tекущая запись достается SELECTом с ... WHERE ROWNUM <=1 ODER BY timestamp, a предыдущие остаются в качестве истории. для размера бд может иметь существенное значение В данном случае это не принципиально. на первой странице оглашено ТЗ, откуда следует что кол-во записей сотни тысяч, те в таблице будет всего 2-3 млн. записей в худшем случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2007, 22:42 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98 -Рождение: запись акта о рождении, сообщение о рождении ребенка -Получение паспорта: листок прибытия с данными документа, удостоверяющего личность -Прибытие: листок прибытия с данными по регистрации прибытия -Перемена ФИО: листок прибытия, запись акта перемены ФИО, запись акта о браке, запись акта о расторжении брака, внесение изменений в запись акта о рождении -Смена документа:листок прибытия -Убытие: листок убытия, сообщение об убытии -Смерть: листок убытия, запись акта о смерти Сделай всё же этот список пополняемым, а то измениться законодательство и прикажут тебе ещё чего-нибудь регистрировать. Кстати, вдруг-таки случиться обещанная агломерация - как ты в рамках своей БД представляешь себе процедуру "переселения" ангарчан в Иркутск? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2007, 08:42 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
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 места рождения сразу же сделать в клиенте возможность обновлять это дерево данными кладр в итоге получится наверно ОЧЕНЬ большая таблица, и ОЧЕНЬ геморойно будет делать клиента... и надо отдельно что-то писать для переконвертирования старой БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2007, 15:51 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Кифирчик возможно имеет смысл сделать отдельный справочники для имён, фамилий, и отчеств.. О, только не это!!! Кифирчик в итоге получится наверно ОЧЕНЬ большая таблица, и ОЧЕНЬ геморойно будет делать клиента... и надо отдельно что-то писать для переконвертирования старой БД Вот и я говорю, возми старую базу и сделай новую морду. Только то и надо сделать несколько новых отчетов. Ну и опять же извиняйте, ежели что. Мы ж ить академиев не кончали.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2007, 20:30 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
nosorogсовет чайника : я бы ввел поле СТАТУС гражданина 1. жив 2. умер 3. в розыске и т.д. имхо конечно же... э-э-э... мдя... эт ты дал стране угля с такими статусами перечти классиков - об этом очень хорошо высказался один видный теоретик "народный лекарь богомол" при консилиуме возле постели больного Буратино... "Одно из двух: либо пациент мертв, либо он жив... если он жив, он будет жить... или не будет жить ." жив или умер это разные (as boolean) значения одного и того-же атибута, который несет очень немного практического смысла - лучше тогда зарезервировать поле под значение "дата смерти" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2007, 00:59 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Novise Кифирчик возможно имеет смысл сделать отдельный справочники для имён, фамилий, и отчеств.. О, только не это!!! это почему? я заинтригован по идее размеры в разы будут меньше, и вся таблица кроме поля ev_date получится в числах... а комп быстрее с циферками работает нежеле с varchar.... в чём проблема? вообще зря человека пугаете, задача вполне осуществимая, даже для одного чела... вот не напрягать его пару месяцев доставать жеваную бумагу из принтеров, чтоб только прогу писал, и всё он сделает... MSSQL в самый раз... как сделает, там в бюджете по такому сказочному случаю и денежка на сервачёк хороший найдётся... автору топика, можно посоветовать, найти какой-нить подобный диплом, и по аналогии разложить свою задачу по полочкам... в процессе все вопросы отпадут ИМХО будет больше проблем в синхронизации с КЛАДР и само создание адресного реестра.... надо как-то извратиться, чтобы он отвечал нужным требованиям (например можно было хранить историю названий, или был в виде дерева) и одновременно сохранялись все ID при синхронизации с КЛАДР.... также проблема будет в конвертировании старой базы в новую... надо быть на 100% увереным в том что ошибок не будет... и сам переход на использование новой базы и клиента будет мучительным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2007, 01:29 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
proposed amendmentлучше тогда зарезервировать поле под значение "дата смерти" :) планируемая дата смерти. фактическая дата сметри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2007, 14:31 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов proposed amendmentлучше тогда зарезервировать поле под значение "дата смерти" :) планируемая дата смерти. фактическая дата сметри. угу... веселенькие такие атрибуты :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2007, 14:32 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
А как ваша структура будет отражать факт смены пола гражданина? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2007, 15:21 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
ERROR MESSAGEА как ваша структура будет отражать факт смены пола гражданина? если это ко мне вопрос, то: Кифирчик ... идут разные события в жизнии, например получение свидетельства о рождении, где появятся его ФИО и родители, будет указан пол - это всё атрибуты, которые будут всегда, но могут меняться ) table2(id, men_id, men_name1...3, parents, sex ....) далее указываем вид события и связанный с ним документ..... в таблице table2 появится ещё одна строка, связанная с человеком, в которой будет другое поле sex, более поздняя дата, и возможно ссылка на новый паспорт или другой документ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2007, 15:56 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Кифирчик А что будет, если в разных документах разный пол будет указан? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2007, 15:59 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
в смысле? не понял вопроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2007, 16:24 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Кифирчикв смысле? не понял вопроса в смысле? не понял вопроса, как можно не понять смысл вопроса. Некто имеет набор документов, в которых более одного значения пола в терминах Вашей системы. Некто кто в этом случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2007, 16:39 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
а... когда чел меняет пол, то он меняет и паспорт, вот на основании нового паспорта, оператор в БД сделает запись в table2, забъёт соответствующие данные нового паспорта... и пол человека будет определяться по последней записи... и соответствующему ей паспорту а последняя запись, определяется примерно так WHERE event_date = (SELECT max(event_date)...) в чём проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2007, 16:49 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Кифирчиккогда чел меняет пол, то он меняет и паспорт И загранпаспорт и все остальные документы в один день? Кифирчикв чём проблема? Ни в чем, Вам просто в очередной раз намекают, что не должны атрибуты документов мигрировать в атрибуты людей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2007, 16:56 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Кифирчик Novise Кифирчик возможно имеет смысл сделать отдельный справочники для имён, фамилий, и отчеств.. О, только не это!!! это почему? я заинтригован Хрестоматийный пример: Остап Ибрагим Сулейман Берта Мария Бендер Бей. Правда по пачпорту он Остап Ибрагимович. Поддержание актуальными доп. 3 справочников доп. гемор. Все знают разницу между Натальей и Наталией? Лидией и Лидой? Кифирчик также проблема будет в конвертировании старой базы в новую... надо быть на 100% увереным в том что ошибок не будет... и сам переход на использование новой базы и клиента будет мучительным Можно быть 100% увереным, что ошибки будут. Из-за невожможности полной конвертации к новым справочникам. Плавали, знаем. Кифирчик ИМХО будет больше проблем в синхронизации с КЛАДР и само создание адресного реестра.... надо как-то извратиться, чтобы он отвечал нужным требованиям (например можно было хранить историю названий, или был в виде дерева) и одновременно сохранялись все ID при синхронизации с КЛАДР.... И с остальными классификаторами и справочниками - те же проблемы. Ну и опять же, извиняйте, ежели что. Мы ж ить академиев не кончали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2007, 20:39 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Тема, кстати, замечательная поднята на самом деле... Прочитал несколько раз. Осмыслил все вышесказанное. Уже долгое время думаю над схожими проблемами и методами их решения... Довольно много уже сказано о том, что руки и мозги у создателей и проектировщиков государственных (!!!) систем учета (населения, транспорта, нарушений и пр.) растут из Ж*. Во многих сферах и вовсе нет никакой системы учета, не говоря уже о единой системе. А вот теперь представьте мои (уверен, не только…) мучения по созданию некой системы, которая бы объединила различные имеющиеся банки данных о населении, транспорте, происшествиях и пр. в единую базу, с возможностью удобного глобального поиска по заданным реквизитам и удобной визуализацией полученных результатов, а также попытка установления вероятных взаимосвязей. С этой задачей сталкиваются практически в каждом отделе по безопасности как в банках, так и в частных организациях и пр. Существующая система, под управлением СУБД (а можно ли это так назвать?) Кронос+ имеет достаточно ограничений и неудобств, да и вообще достаточная убогая система (до сих пор понять не могу, как она получила такую распространенность…). Задача изначально показалось очень простой - что могло быть проще выгрузки множества таблиц из Кронос+ в *.csv, потом импорт их в БД, а потом написать приложение, которое будет работать с этим массивом таблиц. На словах все просто. А вот при детальном рассмотрении начали выплывать проблемы... В общем, у кого есть какие соображения или наработки по этой теме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2007, 16:43 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
NiKeSoft.ru Довольно много уже сказано о том, что руки и мозги у создателей и проектировщиков государственных (!!!) систем учета (населения, транспорта, нарушений и пр.) растут из Ж*. Если вы прогах, которые спускаются сверху, то они разрабатываются, как правило ИТ-компаниями ... и государственность систем учета тут нипричем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2007, 16:59 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
А тема то совсем другая. Как от одной системы перейти к новой. Если изменяется структура базы, справочники плывут и вообще... Хорошо, если БД спущена сверху - все проблемы остаются наверху и решать их там. Это их проблемы. А если это доморощенная разработка - то это зверек пушистый, ласковый, писец называется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2007, 19:29 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
> Тема, кстати, замечательная поднята на самом деле... Ничего замечательного. Нормальных девелоперов в госструктурах нет. И нормальным продуктам там взяться неоткуда в принципе. В ближайшие пять лет ничего не изменится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2007, 19:35 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Прочитал сегодня документацию ГАС "Выборы" ЭИРЦВ.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 - |актуальности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2007, 07:23 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Для паспортистов ЖЭО в чистом виде эта схема не подойдет Медленно будет работать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2007, 07:25 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98Для паспортистов ЖЭО в чистом виде эта схема не подойдет Медленно будет работать... Она не подойдет по бизнесу, а не медленности ... вот потом и наблюдаются нетленки в госструктурах городского уровня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2007, 09:39 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
> ГАС "Выборы" ЭИРЦВ.90036-01 31 01. УЖОСНАХ. Нет слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2007, 10:01 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Предлагаю от теоретических выкладок перейти к практическим. Вот мой вариант решения данной задачи: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2007, 00:49 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
1) добавить таблицу контактных телефонов (пригодятся) 2) текущее состояние субъекта (жив/умер хотя бы) 3) национальности давно уже нету 4) адреса как минимум 2: регистрация и фактическое место жительства ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2007, 09:55 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
1) добавить таблицу контактных телефонов (пригодятся) 2) текущее состояние субъекта (жив/умер хотя бы) 3) национальности давно уже нету 4) адреса как минимум 2: регистрация и фактическое место жительства В предлагаемой мною схеме все это реализуется на раз. 1. Добавить новый объект Телефон:(КодОбъекта,Номер) Тогда можно установить сколько угодно связей между Лицом->Телефоном типа Владелец и связь между Адресом->Телефоном типа Установлен по адресу. 2. Это вообще элементарно. Мы живем в стране бюрократии, тут не помереть ни родиться без бумажки низяя! Значит достаточно завести связь Лицо->Документ где документ Справка о смерти/Свидетельство о рождении и проблема решена. 3. Ее офицально нет, но если вам потребуется отобрать всех лиц по такому критерию - без этого туго придется. 4. Да заведите вы сколько угодно, хоть 1000 адресов на человека. Появится просто новая связь Лицо-Адрес типа Проживает/Прописан/Заходил и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2007, 17:12 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Да ужжж.... Скажите, уважаемые, хоть кто-нибудь из Вас что-нибудь слышал о простом понятии разработки и проектирования БД как НОРМАЛИЗАЦИЯ??? Никто не подскажет мне случаем уровень нормализации вышеприведенной структруры??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2007, 18:10 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Какое преимущество приведенной схемы данных по сравнению с той, которую привел из ГАС "Выборы" в своем предыдущим посте? Предлагаю на телефонах, фактических адресах не останавливаться. Это "довесок" к задаче, который уведет нас в сторону. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 10:50 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Зачем поле "состояние человека". Если исходить из схемы данных, которую привел выше, можно посмотреть, было ли событие, например, "смерть" (не дай бог конечно) по конкретному человеку в журнале изменений. вообще, увидеть все события по конкретному человеку - хорошая возможность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 10:57 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98Зачем поле "состояние человека". Если исходить из схемы данных, которую привел выше, можно посмотреть, было ли событие, например, "смерть" (не дай бог конечно) по конкретному человеку в журнале изменений. вообще, увидеть все события по конкретному человеку - хорошая возможность Верно, только вот надо все-же плясать от документа, на основании которого что-то с человеком происходит (бюрократия не всегда плохо). Родился человек - Свидетельство о рождении Умер человек - Свидетельство о смерти. Сменил фамилию/пол - Новый паспорт. и т.д. все - документируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 15:09 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Однако, когда в документе имеется отметка - исполнен, это удобно, хотя и денормализация. Для удобства же имеет смысл иногда отсутпать от строгих правил. Я за поле состояние в табле Гражданин . Но это уже вопросы конкретной реализации. А события/документы и их хренология само собой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 18:14 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Страдалецъ michael_is_98Зачем поле "состояние человека". Если исходить из схемы данных, которую привел выше, можно посмотреть, было ли событие, например, "смерть" (не дай бог конечно) по конкретному человеку в журнале изменений. вообще, увидеть все события по конкретному человеку - хорошая возможность Верно, только вот надо все-же плясать от документа, на основании которого что-то с человеком происходит (бюрократия не всегда плохо). Родился человек - Свидетельство о рождении Умер человек - Свидетельство о смерти. Сменил фамилию/пол - Новый паспорт. и т.д. все - документируется. наличие документа установленной формы это документарное подтверждение факта состояния а не сам факт состояния... а то вот так и получается - пока не выдано/предъявлено свидетельство о смерти, человек вроде как и не умер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 18:55 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Заведение поля Состояние у человека - вообще неправильно. представьте себе, что сегодня вы поставили ему состояние Выпил, а завтра вам надо проставить уже Закусил. Чего будете делать? Заводить отдельную табличку для фиксации этих изменений придется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 21:13 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
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НФ. Вроде бы, ни повторяющихся полей, ни зависимостей от части ключа, ни зависимостей от неключевых атрибутов нет. Другое дело, что логически неправильно и очень неудобно в использовании. Оно, конечно, объект класса, и если десериализовать в оперативной памяти - может, всё замечательно, сложно, объектно, прогрессивно, концептуально, архитектурно и бюджетно-осваивательно получится. Но десериализовать несколько десятков Гб недопустимо, поэтому надо сначала выбрать. Какую руладу нужно написать и выполнить, чтобы просто получить номер последнего выданного человеку паспорта! А получить адрес на определённый момент времени вообще невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 21:43 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Страдалецъ Заводить отдельную табличку для фиксации этих изменений придется. кхм... ну и что? что в этом вас так пугает? вы знаете и готовы предложить иное и лучшее решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 00:19 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven guest_20040621> ГАС "Выборы" ЭИРЦВ.90036-01 31 01. УЖОСНАХ. Нет слов. +1 Думаю, документация врёт, если система всё же работает в масштабах страны. Деза, "honey pot", "тепловая ловушка". +1 +1 "голый король" или система с одной и положительной обратной связью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 00:20 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
proposed amendmentа то вот так и получается - пока не выдано/предъявлено свидетельство о смерти, человек вроде как и не умер Более интересная ситуация, когда объявился человек, которого признали умершим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 11:04 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
YBW Страдалецъ Заводить отдельную табличку для фиксации этих изменений придется. кхм... ну и что? что в этом вас так пугает? вы знаете и готовы предложить иное и лучшее решение? Нет меня это не пугает, это решение сильно отличается от заведения поля-признака у лица. ЗЫ: Я так понял, что глядя на мою схему все решили что в БД две таблицы Лицо и Документ и т.д? Даже не предполагал, что можно сделать такой вывод. Я для наглядности формирования связи повторил эти таблички. В БД естественно одна таблица Лицо,Адрес,Документ. Как и одна таблица Связь. Если неочень понятно, то могу выложить акцесовский пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 11:35 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Так как сам разрабатываю и дорабатываю программу для паспортных столов. То могу сказать следующие. Не одна запись не удаляется и не изменяется. Если есть какое редактирование, то создается новая запись имеющие статус действующая, а предыдущая получает статус история. Записи имеет три статуса: история, действующая, удаленная. По поводу людей. У меня по ним сделано так если кратко. Люди: Идентификатор человека. Дата вноса. Указатель на Страну рождения. Указатель на место рождения. Дата рождения ФИО: Идентификатор человека. Фамилия Имя Отчество Пол (может сменить) Дата ввода Дата ввода первой записи Статус Дата начала действия фамилии Дата окончания действия фамилии Документ: Идентификатор человека. Указатель на документ Указатель на орг. выдавшия документ Причина выдачи документа. Дата выдачи документа Дата окончания действия документа. Дата ввода Дата ввода первой записи Статус Приводить все не буду, да и поля не все указал. Если интересно то спрашивайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 11:41 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
a1ekseyv ... Документ: Идентификатор человека. Указатель на документ Указатель на орг. выдавшия документ Причина выдачи документа. Дата выдачи документа Дата окончания действия документа. Дата ввода Дата ввода первой записи Статус Т.е. у вас получается жестко заданно, что документ только у человека? А если возникнет необходимость регистрации Организации? Есть аналогичная таблица для организации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 12:23 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Интересно! Если можно, то поподробнее. Будет интересно посмотреть как реализована реально внедренная и работающая система. А то здесь, в основном, одни теоретики высказываются... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 12:26 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Основное это подготовка первичной док для регистрации. Орг. не может быть зарег. Ном может быть собственником. Для собственников отд таб. Где есть поля физ или юр. Лицо. Если физ то данные берутся из одного справочника, а если юр из другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 13:03 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
я привел таб. Документы людей. Для юр. лиц. просто отдельный справочник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 13:05 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
если упрощенно то Т.е. табл. Собственнико. 1. физ или юр лицо 2. указатель на человека или на юр лицо. 3. док. Собственника Указатель 4. Номер документа 5. Дата начала 6. дата окончания. 7.Дата ввода 8.Дата ввода первой записи 9.Статус ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 13:08 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Если не секрет, на чем написана система? БД - какая СУБД (полагаю MS SQL или Oracle) клиентская часть - ? кол-во пользователей - ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 13:19 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
DB2 - сервер. Клиентская часть на C#. 10 пунктов. 8 VPN канал 64. Работают все на центрально сервере. с оставшими двумя пока геморой. 60 пользоваетелей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 13:24 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
И все же хранить в разных таблицах ФИО и дату рождения нерационально. Ведь человек может и поменять дату рождения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 13:28 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98И все же хранить в разных таблицах ФИО и дату рождения нерационально. Ведь человек может и поменять дату рождения Это зависит не от возможности поменять одно и не поменять другое, а от того, одним ли документом это изменение происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 14:04 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Я говорю о той структуре, которую привел выше коллега... здесь говорилось о ГАС "Выборы". После прочтения документа ЭИРЦВ.90036-01 31 01 (руководства администратора системы) у меня сложилось свое мнение о структуре этой АС. Кто-нибудь реально может сказать, близко ли оно к истине или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 14:07 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Человек не может изменить место рождению и дату. Они могут быть не правильно введены. И в отличие от ФИО и пола менять их не может. По поводу ГАС "Выборы" мы предоставляем им еженедельную выгрузку в формате котором они просили. А данный документ я к сожалению не читал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 14:49 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
a1ekseyvЧеловек не может изменить место рождению и дату. Они могут быть не правильно введены И что по-Вашему происходит, если дата рождения неверно указана? Знаю, что есть случаи, когда меняли дату рождения и место рождения человека. А по какой причине меняют - для учетной системы неважно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 14:53 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Возьмем пример. На улице ленина 4-1. Проживал Сидоров Петр Петрович. Он сходил к хирургу и сменил пол. И на основание этого стал Сидорова Нина Петровна. Второй случай Сидоров Петр Петрович по паспорту родился 28.02.1950. Он пришел и написал заявление об том что он родился 28.02.1951. Это разные операция . В первом дата рож. Не трогается. А во втором ФИО и пол не изменяется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 15:07 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
michael_is_98Ведь человек может и поменять дату рождения хм интересная трактовка :) я не сторонник грубого оголтелого и беспощадного материализма, но готов согласиться с таковыми, что как минимум два события, из касающихся его лично, человек не может ПОМЕНЯТЬ (может ускорить или отодвинуть но не поменять) дату рождения и дату смерти - C'est La Vie ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 15:15 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
К сожелению. Уже было два случая смены пола. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 15:17 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
a1ekseyvИ на основание этого стал Сидорова Нина Петровна что за бред горячечный как достали уже эти теоретики доморощенные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 15:17 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
a1ekseyvК сожелению. Уже было два случая смены пола. И как оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 15:19 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Хотя это крайность. Но у нас есть человек, который как говорят операторы. Себе и всей семье меняет ФИО чуть ли не каждые пол года. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 15:26 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
a1ekseyvкоторый как говорят операторы. угу... нашел кого слушать они тебе наговорят... и про переименования городов-улиц и про смену телефона и про прочее-прочее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 15:31 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Пример человек 72г. рождения сменил 5 раз Фамилию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 15:49 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
a1ekseyvПример человек 72г. рождения сменил 5 раз Фамилию. и, соответсвенно, 5 раз получают в ЗАГС'е Свидетельство о смене фамилии и получают новый паспорт в общем случае получается, что все изменения можно вносить на основании документов ЗАГС ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 16:22 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Любые изменения данных о человек(дата рождения, место рождения, фио) вносятся на основание документа. Паспортные столы только подготавливают информацию и передают в милицию. После выноса решения и осуществляется ввод записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 17:24 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
a1ekseyvПосле выноса решения и осуществляется ввод записи. зависит от назначения БД и от конкретного Атрибута - иначе вы рискуете остаться без клиетов, если будете на каждый чих требовать паспорт или свидетельство о рождении или справку из ЗАГС ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 17:38 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Это правильно. На основании документов и должны вводиться данные. Другое дело, что даже в документах иногда бывают ошибки. Но не будем касаться этой темы. В вашей системе есть входной контроль? Горизонтальный контроль (фамилия, имя, отчество, дата рождения, серия, номер паспорта) самый простой. Но есть еще вертикальный контроль - непротиворечивость событий (например, после получения документа 'паспорт' нельзя изменить документ на 'свидетельство о рождении'). Хороший горизонтальный и вертикальный контроль реализован в ГАС "Выборы" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 08:25 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
И еще... Как в системе реализованы события, связанные с адресами места жительства (прибытие, убытие). Делится ли прибытие на прибытие в пределах города и прибытие из другого нас. пункта? Хорошо бы увидеть саму привязку человека к адресу (полагаю, это отдельная таблица). Тему самого хранения адресов предлагаю не затрагивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 08:44 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
а у них уже это работает !!! С 15 до 24 государств расширилось сегодня шенгенское пространство. Жители этих стран теперь могут свободно ездить друг к другу в гости или по делам... расширение Шенгена сопровождается усилением сотрудничества спецслужб и полиции стран EС, распространением трансъевропейской базы данных о находящихся в розыске лицах и предметах... Euronews ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 12:32 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
В масштабе государства можно спроектировать точно такую же БД, как и в масштабах небольшого города, если заранее решить проблему хранения адресов, документов. И, главное, организационно сплотить работу соответствующих служб ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2007, 03:58 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов proposed amendmentлучше тогда зарезервировать поле под значение "дата смерти" :) планируемая дата смерти. фактическая дата сметри. Дата реинкарнации... :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2007, 17:03 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
nosorogа у них уже это работает !!! С 15 до 24 государств расширилось сегодня шенгенское пространство. Жители этих стран теперь могут свободно ездить друг к другу в гости или по делам... расширение Шенгена сопровождается усилением сотрудничества спецслужб и полиции стран EС, распространением трансъевропейской базы данных о находящихся в розыске лицах и предметах... Euronews Мишель! Не надо БД ФИО, адресов, документов. Только ОТПЕЧАТКИ ПАЛЬЦЕВ. (или рельеф уха, если пальцев нет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2008, 14:53 |
|
||
|
Проектирование БД о населении
|
|||
|---|---|---|---|
|
#18+
авторНе надо ФИО, адресов, документов. Только ОТПЕЧАТКИ ПАЛЬЦЕВ Британцы и Японцы уже снимают опечатки при вЪезде иностранцев. нам сложнее -- краски не хватит на гастробайтеров (имхо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2008, 16:27 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1544072]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
131ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 580ms |

| 0 / 0 |
