Автоматизация учета перечней льготных должностей в Отделении Пенсионного фонда Российской Федерации по Краснодарскому краю
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
блицы базы данных было неделимым и не содержало повторяющихся полей. Вторая нормальная форма требует, чтобы все поля таблицы зависели от первичного ключа, т.е. чтобы первичный ключ однозначно определял запись и не был избыточным. При приведении к третьей нормальной форме требуется, чтобы в таблице не имелось транзитивных взаимосвязей между не ключевыми полями.
Сущности и атрибуты нормализованной логической модели представлены ниже:
."Организации" (Таблица 1);
2."Периоды" (Таблица 2);
."Подразделения" (Таблица 3);
."Профессии" (Таблица 4);
."Работники" (Таблица 5);
."Рабочие периоды" (Таблица 6);
."Пользователи" (Таблица 7);
."Документы" - справочник (Таблица 8);
."Типы деятельности организаций" - справочник (Таблица 9);
."Виды работ организаций" - справочник (Таблица 10);
."Основания назначения пенсий" - справочник (Таблица 11);
."Коды позиций списка" - справочник (Таблица 12).
Таблица 1 - Организации
АтрибутОписаниеORG_IDУникальный код организацииAREAРегионREGIONРайонREG_NUMРегистрационный номерNAMEПолное наименование организацииTYPEТип деятельности организацииTYPE_FUNCTIONSВид деятельностиBOSS_NAMEРуководительBOSS_TELТелефон руководителяKADR_NAMEНачальник отдела кадровKADR_TELТелефон начальника отдела кадровUSER_ADDПользователь, добавивший данныеDATE_ADDДата добавленияUSER_EDITПользователь, изменивший данныеDATE_EDITДата измененияDELПризнак удаления записи
Таблица 2 - Периоды
АтрибутОписаниеPERIOD_IDУникальный код периодаORG_IDКод организацииDATE_SOSTДата составленияYEARГодKVARTALОтчетный кварталKOL_SOTRКоличество сотрудниковUSER_ADDПользователь, добавивший данныеDATE_ADDДата добавленияUSER_EDITПользователь, изменивший данныеDATE_EDITДата измененияDELПризнак удаления записи
Таблица 3 - Подразделения
АтрибутОписаниеPODRAZD_IDУникальный код подразделенияORG_IDКод организацииNUMНомер подразделенияNAMEНазвание подразделенияDISCRIPTIONОписание деятельности подразделенияKOL_SOTRКоличество сотрудниковUSER_ADDПользователь, добавивший данныеDATE_ADDДата добавленияUSER_EDITПользователь, изменивший данныеDATE_EDITДата измененияDELПризнак удаления записи
Таблица 4 - Профессии
АтрибутОписаниеPROF_IDУникальный код профессииPODRAZD_IDКод подразделенияPERIOD_IDКод периодаPROFESSIONНазвание профессииDISCRIPTIONУсловия работыOSNOV1Основания для льготыOSNOV2Основания для льготыOSNOV3Основания для льготыSPIS_POZПозиция по спискам 1,2DOCSПодтверждающие документыKOL_SHTATКоличество по штатуKOL_FAKTФактическое количествоDATE_ZAPДата заполнения профессииDATE_KORДата корректировки профессииUSER_ADDПользователь, добавивший данныеDATE_ADDДата добавленияUSER_EDITПользователь, изменивший данныеDATE_EDITДата измененияDELПризнак удаления записи
Таблица 5 - Работники
АтрибутОписаниеEMPL_IDУникальный код работникаPODRAZD_IDКод подразделенияPROF_IDКод профессииSTRAH_NUMСтраховой номерFAMФамилияNAMEИмяOTCHОтчествоKOL_WPERIODUSER_ADDПользователь, добавивший данныеDATE_ADDДата добавленияUSER_EDITПользователь, изменивший данныеDATE_EDITДата измененияDELПризнак удаления записи
Таблица 6 - Рабочие периоды
АтрибутОписаниеWPERIOD_IDУникальный код рабочего периодаEMPL_IDКод работникаPROFESSIONПрофессияDATE_BEGINДата начала работыDATE_ENDДата окончания работыDAY_BEZ_ZPКоличество дней без сохранения ЗПOSNOV1Основания для льготыOSNOV2Основания для льготыOSNOV3Основания для льготыSPIS_POZПозиция по спискам 1,2MONTH_OTRABОтработано месяцевDAY_OTRABОтработано днейRATEСтавкаHOURS_VYSLUGIЧасы выслугиUSER_ADDПользователь, добавивший данныеDATE_ADDДата добавленияUSER_EDITПользователь, изменивший данныеDATE_EDITДата измененияDELПризнак удаления записи
Таблица 7 - Пользователи
АтрибутОписаниеUSER_NAMEЛогинPASSWORDПарольDOSTUPПризнак доступа
Таблица 8 - Документы
АтрибутОписаниеDOC_IDУникальный код документаDOCНазвание документа
Таблица 9 - Типы деятельности организаций
АтрибутОписаниеTYPE_IDУникальный код типа деятельностиNAMEТип деятельности
Таблица 10 - Виды работ организаций
АтрибутОписаниеTYPE_FUNC_IDУникальный код вида работNAMEВид работ
Таблица 11 - Основания назначения пенсий
АтрибутОписаниеOSNOV_IDУникальный код основанияKODРегистрационный код основанияDISCRIPTIONОписаниеPRIZNAKПризнак отношения к спискам
Таблица 12 - Коды позиций списка
АтрибутОписаниеSPIS_POZ_IDУникальный код позиции спискаKODРегистрационный код позиции спискаDESCRIPTIONОписание
Нормализованная логическая модель представлена на рис.2.
Рис.2
7. Пример практической реализации функции загрузки xml файла в РБД
Программный код функции на языке Pascal:
procedure TMainF. PerechenClick (Sender: TObject);, NodesProfession, NodesEmployee, NodesWorkperiod: IXMLNodeList;: Variant;, Q, J, K, ORG_ID, PERIOD_ID, PODRAZD_ID, PROF_ID, EMPL_ID: Integer;, Lvl2: string;: array [0.7] of string;: array [0.3] of string;: array [0.3] of string;: array [0.11] of string;: array [0.4] of string;: array [0.11] of string;. Filter: =XML files (*. xml) |*. xml;not OpenDialog. Execute then exit;. LoadFromFile (OpenDialog. FileName);. Active: = true;: = ФайлЛьготныхПрофессий;: = Предприятие;Q: = 0 to 5 do begin(Q = 4) or (Q = 5) then begin
Org [Q]: = VarToStr (XMLDoc. DocumentElement. ChildNodes [Lvl1]. ChildNodes [Lvl2]. ChildNodes [Q]. ChildNodes [ФИО]. Text);[Q + 2]: = VarToStr (XMLDoc. DocumentElement. ChildNodes [Lvl1]. ChildNodes [Lvl2]. ChildNodes [Q]. ChildNodes [Телефон]. Text);else[Q]: = VarToStr (XMLDoc. DocumentElement. ChildNodes [Lvl1]. ChildNodes [Lvl2]. ChildNodes [Q]. Text);;: = ОтчетныйПериод;Q: = 0 to 3 do[Q]: = VarToStr (XMLDoc. DocumentElement. ChildNodes [Lvl1]. ChildNodes [Lvl2]. ChildNodes [Q]. Text);DataModuleF do begin: = ADOTableOrg. Lookup (AREA; REGION; REG_NUM,([StrToInt (Copy (Org [0], 1,3)), StrToInt (Copy (Org [0], 5,3)),(Copy (Org [0], 9,6))]), AREA);not VarIsNull (V) then begin. Locate (AREA; REGION; REG_NUM,([StrToInt (Copy (Org [0], 1,3)), StrToInt (Copy (Org [0], 5,3)),(Copy (Org [0], 9,6))]), []);. Edit;. AsString: = Org [1];. AsString: = Org [2];_FUNCTIONS. AsString: = Org [3];_NAME. AsString: = Org [4];_TEL. AsString: = Org [6];_NAME. AsString: = Org [5];_TEL. AsString: = Org [7];_EDIT. AsString: = Login;_EDIT. Value: = Date;. Post;_ID: = ADOTableOrgORG_ID. AsInteger;else begin. Insert;. AsString: = Copy (Org [0], 1,3