Разработка базы данных Кадры
|dismissal | | | |
|Individual |Текстовый (12) |Индивидуальный номер|Требуется |
|number | |налогоплательщика | |
|Tax bearer |Текстовый (14) |Серия свидетельства |Требуется |
|series | |налогоплательщика | |
|Tax bearer |Текстовый (14) |Номер свидетельства |Требуется |
|number | |налогоплательщика | |
|Tax bearer |Дата |Дата выдачи |Требуется |
|distribution | |свидетельства | |
|date | |налогоплательщика | |
| |
| |
|Имя объекта: |Education additional |
|Краткое описание: |Сведения о дополнительном образовании |
|Связанные объекты: |Имя: |Связь: |
| |Stuff |Один |
| |
|Имя элемента |Тип данных |Описание |Условие на значение |
|данных | | | |
|Date begin in |Дата |Дата поступления в |Требуется |
|education | |у/з | |
|Date of end |Дата |Дата окончания у/з |Требуется |
|education | | | |
|Additional |Текстовый (30) |Образование |Требуется |
|education | | | |
|Name education |Текстовый (15) |Название у/з |Требуется |
|Diploma |Текстовый (15) |Диплом |Требуется |
|education | | | |
|Form of training|Текстовый (15) |Форма обучения |Требуется |
|additional | | | |
|Qualification |Текстовый (15) |Квалификация |Требуется |
|additional | | | |
|Speciality |Текстовый (15) |Специальность |Требуется |
|additional | | | |
| |
| |
|Имя объекта: |Language |
|Краткое описание: |Знание дополнительных иностранных языков |
|Связанные объекты: |Имя: |Связь: |
| |Stuff |Один |
| |
|Имя элемента |Тип данных |Описание |Условие на значение |
|данных | | | |
|Other language |Текстовый (20) |Язык |Требуется |
|Level of |Текстовый (30) |Уровень владения |Требуется |
|possession | | | |
| |
| |
|Имя объекта: |Conviction |
|Краткое описание: |Наличие судимости у сотрудника |
|Связанные объекты: |Имя: |Связь: |
| |Stuff |Один |
| |
|Имя элемента |Тип данных |Описание |Условие на значение |
|данных | | | |
|Date of verdict |Дата |Дата вынесения |Требуется |
| | |приговора | |
|Article |Текстовый (20) |Статья |Требуется |
|Period |Текстовый (20) |Срок |Требуется |
| |
| |
|Имя объекта: |Family |
|Краткое описание: |Сведения о составе семьи |
|Связанные объекты: |Имя: |Связь: |
| |Stuff |Один |
| |
|Имя элемента |Тип данных |Описание |Условие на значение |
|данных | | | |
|Degree of |Текстовый (20) |Степень родства |Требуется |
|relationship | | | |
|Names |Текстовый (20) |Фамилия, инициалы |Требуется |
| | |родственника | |
|Date of birth |Дата |Дата рождения |Требуется |
|relative | | | |
|Expense |Текстовый (20) |На иждивении |Требуется |
| |
| |
|Имя объекта: |Passport registration |
|Краткое описание: |Паспортные данные (прописка) |
|Связанные объекты: |Имя: |Связь: |
| |Stuff |Один |
| |
|Имя элемента |Тип данных |Описание |Условие на значение |
|данных | | | |
|By whom is given|Текстовый (50) |Кем выдан |Требуется |
|Date of |Дата |Дата выдачи |Требуется |
|distribution | | | |
|Index |Текстовый (6) |Индекс |Требуется |
|Area |Текстовый (30) |Область |Требуется |
|registration | | | |
|Region |Текстовый (30) |Район |Требуется |
|registration | | | |
|City |Текстовый (30) |Город |Требуется |
|Point |Текстовый (30) |Населенный пункт |Требуется |
|Street |Текстовый (30) |Улица |Требуется |
|House |Текстовый (10) |Дом |Требуется |
|Corps |Текстовый (10) |Корпус |Требуется |
|Flat |Текстовый (10) |Квартира |Требуется |
| |
| |
|Имя объекта: |Work record card |
|Краткое описание: |Записи в трудовой книжке |
|Связанные объекты: |Имя: |Связь: |
| |Stuff |Один |
| |
|Имя элемента |Тип данных |Описание |Условие на значение |
|данных | | | |
|Date of |Дата |Дата постановки |Требуется |
|statement | | | |
|Date of |Дата |Дата увольнения |Требуется |
|dismissal | | | |
|Name of company |Текстовый (20) |Название учреждения |Требуется |
|A post |Текстовый (20) |Должность |Требуется |
|Reason card |Текстовый (20) |Причина |Требуется |
|Basis card |Текстовый (20) |Основание |Требуется |
| |
| |
|Имя объекта: |Purpose and moving |
|Краткое описание: |Сведения о назначениях и перемещениях |
| |сотрудника |
|Связанные объекты: |Имя: |Связь: |
| |Stuff |Один |
| |
|Имя элемента |Тип данных |Описание |Условие на значение |
|данных | | | |
|Date moving |Дата |Дата |Требуется |
|Reason moving |Текстовый (20) |Основание |Требуется |
|Department |Текстовый (20) |Отдел |Требуется |
|Post |Текстовый (15) |Должность |Требуется |
|Method of |Текстовый (15) |Режим работы |Требуется |
|operating | | | |
| |
| |
|Имя объекта: |Qualification |
|Краткое описание: |Сведения о квалификационном разряде |
| |сотрудника |
|Связанные объекты: |Имя: |Связь: |
| |Stuff |Один |
| |
|Имя элемента |Тип данных |Описание |Условие на значение |
|данных | | | |
|Date |Дата |Дата |Требуется |
|qualification | | | |
|Reason |Текстовый (20) |Основание |Требуется |
|qualification | | | |
|Qualification |Текстовый (20) |Квалификация |Требуется |
| |
| |
|Имя объекта: |Business trip |
|Краткое описание: |Командировки |
|Связанные объекты: |Имя: |Связь: |
| |Stuff |Один |
| |
|Имя элемента |Тип данных |Описание |Условие на значение |
|данных | | | |
|Date started |Дата |Дата начала |Требуется |
|trip | | | |
|Date closed trip|Дата |Дата окончания |Требуется |
|Destination |Текстовый (25) |Место назначения |Требуется |
| |
| |
|Имя объекта: |Holiday |
|Краткое описание: |Отпуска |
|Связанные объекты: |Имя: |Связь: |
| |Stuff |Один |
| |
|Имя элемента |Тип данных |Описание |Условие на значение |
|данных | | | |
|Kind of holiday |Текстовый (15) |Вид отпуска |Требуется |
|Basis holiday |Текстовый (15) |Основание |Требуется |
|In time with |Дата |За время с |Требуется |
|In time on |Дата |За время по |Требуется |
|Date started |Дата |Дата начала |Требуется |
|holiday | | | |
|Amount |Числовой (3) |Количество дней |Требуется |
|Date closed |Дата |Дата окончания |Требуется |
|holiday | | | |
Теперь, после заполнения всех рабочих бланков для объектов, каждый из
них можно рассматривать в качестве основы для создания некоторой таблицы.
2.3 Проектирование базы данных
При проектировании базы данных следует придерживаться правил
нормализации таблиц:
Правило 1: Каждое поле любой таблицы должно быть уникальным.
Правило 2: Каждая таблица должна иметь уникальный идентификатор
(первичный ключ), который может состоять из одного или нескольких полей
таблицы.
Правило 3: Для каждого значения первичного ключа должно быть одно и
только одно значение любого из столбцов данных, и это значение должно
относиться к объекту таблицы.
Правило 4: Должна иметься возможность изменять значения любого поля
(не входящего в первичный ключ), и это не должно повлечь за собой изменение
другого поля.[2]
Каждый агрегированный объект будет представлен отдельной таблицей базы
данных. Элементы данных будут представлены полями таблиц. Имена таблиц и их
полей подберем исходя из имен объектов и элементов данных. В качестве
первичного ключа используем табельный номер. Проект базы данных включает в
себя 11 таблиц.
Опишем базу данных в табличной форме.
|ОПИСАНИЕ ТАБЛИЦ БАЗЫ ДАННЫХ «КАДРЫ» |
|Имя таблицы: |STUFF.DBF |
|Краткое описание: |Основная таблица базы данных |
|Имя поля |Тип данных |Описание |
|ORG_NUM |Числовой (6) |Табельный номер |
| | |сотрудника |
|INS_NUM |Текстовый (14) |Страховой номер |
|SURNAME |Текстовый (15) |Фамилия |
|NAME |Текстовый (15) |Имя |
|PATRON |Текстовый (15) |Отчество |
|SEX |Текстовый (15) |Пол |
|BIRTH_DATE |Дата |Дата рождения |
|BIRTHPLACE |Текстовый (47) |Место рождения |
|NATIONAL |Текстовый (15) |Национальность |
|SOCIAL |Текстовый (47) |Социальное происхождение|
|CITIZEN |Текстовый (30) |Гражданство |
|EDUCAT |Текстовый (47) |Образование |
|NAME_EDU |Текстовый (47) |Название учебного |
| | |заведения |
|FORM_TRAIN |Текстовый (20) |Форма обучения |
|YEAR_END |Дата (8) |Год окончания |
|DIPLOMA |Текстовый (25) |Диплом (серия) |
|QUAL_DIP |Текстовый (47) |Квалификация по диплому |
|SPEC_DIP |Текстовый (47) |Специальность по диплому|
|EDU_NUM |Числовой (2) |Количество записей в |
| | |разделе «Дополнительное |
| | |образование» |
|KIND_HIR |Текстовый (30) |Вид найма |
|KIND_WRK |Текстовый (30) |Вид работы |
|S_DEGREE |Текстовый (30) |Ученая степень |
|S_RANK |Текстовый (30) |Ученое звание |
|MAR_SPEC |Текстовый (47) |Узкая специальность |
|LANG_NUM |Числовой (2) |Количество записей в |
| | |разделе «Владение |
| | |иностранными языками» |
|CONV_NUM |Числовой (2) |Количество записей в |
| | |разделе «Наличие |
| | |судимости» |
|MAR_STATUS |Текстовый (20) |Семейное положение |
|FAMIL_NUM |Числовой (2) |Количество записей в |
| | |разделе «Состав семьи» |
|TR_UNION |Текстовый (40) |Профсоюз |
|GROUP |Числовой (1) |Группа инвалидности |
|PENSIONER |Текстовый (1) |Пенсионер ? |
|PARTIC_WAR |Текстовый (1) |Участник войны |
|POST_INDEX |Числовой (6) |Домашний индекс |
|REGION |Текстовый (20) |Район |
|AREA |Текстовый (40) |Область |
|ADDRESS |Текстовый (40) |Домашний адрес |
|TELEPHONE |Текстовый (18) |Домашний телефон |
|PASSPORT |Текстовый (29) |Серия, номер |
|CONSCRIPT |Текстовый (20) |Воинская обязанность |
|MILIT_RANK |Текстовый (20) |Воинское звание |
|NUMBER |Числовой (12) |Номер ВУС |
|MIL_TICKET |Текстовый (23) |Номер военного билета |
|MIL_VALID |Текстовый (47) |Годность к военной |
| | |службе |
|ATTITUDE |Текстовый (47) |Отношение к бронированию|
|MOBILE_INS |Текстовый (1) |Наличие моб, предписания|
|GROUP_ACC |Текстовый(47) |Группа учета |
|CATEGORY_A |Текстовый (20) |Категория учета |
|COMMISSAR |Текстовый (47) |Райвоенкомат |
|START_DATE |Дата |Дата начала срочной |
| | |службы |
|CLOSE_DATE |Дата |Дата окончания срочной |
| | |службы |
|LAST_DATE |Дата |Дата последнего |
| | |прохождения мед. |
| | |Комиссии |
|RECORD_NUM |Числовой (2) |Количество записей в |
| | |разделе «Трудовая |
| | |книжка» |
|PURPOS_NUM |Числовой (2) |Количество записей в |
| | |разделе «Назначения и |
| | |перемещения» |
|QUAL_NUM |Числовой (2) |Количество записей в |
| | |разделе |
| | |«Квалификационный |
| | |разряд» |
|COMPANY |Текстовый (47) |Название учреждения |
|SUBDIVIS |Текстовый (30) |Подразделение |
|CUR_POST |Текстовый (30) |Текущая должность |
|EMPLOYMENT |Дата |Дата приема на работу |
|TRIAL_CLOS |Дата |Дата окончания |
| | |испытательного срока |
|TRIAL_NUM |Числовой (2) |Количество записей в |
| | |разделе «Командировки» |
|HOLID_NUM |Числовой (2) |Количество записей в |
| | |разделе «Отпуска» |
|DATE_DIS |Дата |Дата увольнения |
|REASON_DIS |Текстовый (47) |Причина увольнения |
|INN |Текстовый (12) |Индивидуальный номер |
| | |налогоплательщика |
|SERIES_TAX |Текстовый (14) |Серия свидетельства |
| | |налогоплательщика |
|NUM_TAX |Текстовый (14) |Номер свидетельства |
| | |налогоплательщика |
|DATE_TAX |Дата |Дата выдачи |
| | |свидетельства |
| | |налогоплательщика |
| |
|Имя таблицы: |EDUCAT.DBF |
|Краткое описание: |Дополнительное образование |
|Имя поля |Тип данных |Описание |
|ORG_NUM |Числовой (6) |Табельный номер |
| | |сотрудника |
|DATE_BEGIN |Дата |Дата поступления в у/з |
|DATE_END |Дата |Дата окончания у/з |
|EDUCATION |Текстовый (30) |Образование |
|NAME_EDUC |Текстовый (15) |Название у/з |
|DIPL |Текстовый (15) |Диплом |
|FORM_TR |Текстовый (15) |Форма обучения |
|QUALIFIC |Текстовый (15) |Квалификация |
|SPECIAL |Текстовый (15) |Специальность |
| |
|Имя таблицы: |LANGUAGE.DBF |
|Краткое описание: |Владение иностранными языками |
|Имя поля |Тип данных |Описание |
|ORG_NUM |Числовой (6) |Табельный номер |
| | |сотрудника |
|OTH_LANG |Текстовый (20) |Язык |
|LEVEL |Текстовый (30) |Уровень владения |
| |
|Имя таблицы: |CONVICT.DBF |
|Краткое описание: |Наличие судимости |
|Имя поля |Тип данных |Описание |
|ORG_NUM |Числовой (6) |Табельный номер |
| | |сотрудника |
|DATE_VERD |Дата |Дата вынесения приговора|
|ARTICLE |Текстовый (20) |Статья |
|PERIOD |Текстовый (20) |Срок |
| |
|Имя таблицы: |FAMILY.DBF |
|Краткое описание: |Состав семьи |
|Имя поля |Тип данных |Описание |
|ORG_NUM |Числовой (6) |Табельный номер |
| | |сотрудника |
|RELATION |Текстовый (20) |Степень родства |
|NAMES |Текстовый (20) |Фамилия, инициалы |
| | |родственника |
|DATE_RELAT |Дата |Дата рождения |
|EXPENSE |Текстовый (20) |На иждивении |
| |
|Имя таблицы: |PASSPORT.DBF |
|Краткое описание: |Паспортные данные |
|Имя поля |Тип данных |Описание |
|ORG_NUM |Числовой (6) |Табельный номер |
| | |сотрудника |
|EXP_GIVEN |Текстовый (50) |Кем выдан |
|DATE_DISTR |Дата |Дата выдачи |
|INDEX_P |Текстовый (6) |Индекс |
|AREA_P |Текстовый (30) |Область |
|REGION_P |Текстовый (30) |Район |
|CITY_P |Текстовый (30) |Город |
|POINT_P |Текстовый (30) |Населенный пункт |
|STREET_P |Текстовый (30) |Улица |
|HOUSE_P |Текстовый (10) |Дом |
|CORPS_P |Текстовый (10) |Корпус |
|FLAT_P |Текстовый (10) |Квартира |
| |
|Имя таблицы: |WORKCARD.DBF |
|Краткое описание: |Трудовая книжка |
|Имя поля |Тип данных |Описание |
|ORG_NUM |Числовой (6) |Табельный номер |
| | |сотрудника |
|DATE_WRK |Дата |Дата постановки |
|DATE_DISM |Дата |Дата увольнения |
|NAME_WRK |Текстовый (20) |Название учреждения |
|POST_WRK |Текстовый (20) |Должность |
|REASON_WRK |Текстовый (20) |Причина |
|BASIS_WRK |Текстовый (20) |Основание |
| |
|Имя таблицы: |MOVING.DBF |
|Краткое описание: |Назначения и перемещения |
|Имя поля |Тип данных |Описание |
|ORG_NUM |Числовой (6) |Табельный номер |
| | |сотрудника |
|DATE_MOV |Дата |Дата |
|REASON_MOV |Текстовый (20) |Основание |
|DEPART |Текстовый (20) |Отдел |
|POST_MOV |Текстовый (15) |Должность |
|METHOD_MOV |Текстовый (15) |Режим работы |
| |
|Имя таблицы: |QUALIFIC.DBF |
|Краткое описание: |Квалификационный разряд |
|Имя поля |Тип данных |Описание |
|ORG_NUM |Числовой (6) |Табельный номер |
| | |сотрудника |
|DATE_QUAL |Дата |Дата |
|REASON_QUAL |Текстовый (20) |Основание |
|QUALIFICAT |Текстовый (20) |Квалификация |
| |
|Имя таблицы: |BUS_TRIP.DBF |
|Краткое описание: |Командировки |
|Имя поля |Тип данных |Описание |
|ORG_NUM |Числовой (6) |Табельный номер |
| | |сотрудника |
|START_TRP |Дата |Дата начала |
|CLOSED_TRP |Дата |Дата окончания |
|DESTINAT |Текстовый (25) |Место назначения |
| |
|Имя таблицы: |HOLIDAY.DBF |
|Краткое описание: |Отпуска |
|Имя поля |Тип данных |Описание |
|ORG_NUM |Числовой (6) |Табельный номер |
| | |сотрудника |
|KIND_HOL |Текстовый (15) |Вид отпуска |
|BASIS_HOL |Текстовый (15) |Основание |
|WITH_HOL |Дата |За время с |
|ON_HOL |Дата |За время по |
|D_ST_HOL |Дата |Дата начала |
|AMOUNT |Числовой (3) |Количество дней |
|D_END_HOL |Дата |Дата окончания |
Итак, спроектировано 11 таблиц базы данных «Кадры». Для удобства
работы, 10 из них следует проиндексировать:
таблицу STUFF.DBF по полю ORG_NUM;
таблицу EDUCAT.DBF по полю DATE_BEGIN;
таблицу LANGUAGE.DBF по полю OTH_LANG;
таблицу CONVICT.DBF по полю DATE_VERD;
таблицу FAMILY.DBF по полю DATE_RELAT;
таблицу WORKCARD.DBF по полю DATE_WRK;
таблицу MOVING.DBF по полю DATE_MOV;
таблицу QUALIFIC.DBF по полю DATE_QUAL;
таблицу BUS_TRIP.DBF по полю START_TRP;
таблицу HOLIDAY.DBF по полю WITH_HOL.
2.4 Разработка приложения
Для создания проекта использовалась СУБД FoxPro 2.6.
В состав проекта входит 28 командных файлов. Можно было бы в качестве
процедур объединить их в один файл, но тогда, в дальнейшем, стало было
неудобно их изменять. Взаимосвязь командных файлов представлена на рис.
2.4.1 графического материала.
Стартовым в проекте является файл START.PRG, в котором устанавливается
операционная среда системы, формируется экран, а также описывается рабочее
меню. В состав рабочего меню входят горизонтальное BAR-меню и три
вертикальных POPUP-меню:
|Данные о сотрудниках |Сервис |Справки |Выход |
В пункте :
|Просмотр |
|Редактирование |
|Добавление |
|Удаление |
В пункте :
|Переиндексация баз |
|Инициализация баз |
В пункте :
|Краткая справка о сотруднике |
При выборе , или , запускаются
программные файлы (модули) READ.PRG, WRITE.PRG или NEW.PRG соответственно.
Задача этих модулей - запуск R_W.PRG с необходимыми параметрами. В
частности задаются переменные edit и type (edit=.t. – редактирование полей
разрешено, edit=.f. – редактирование запрещено, type=1 – выводится
сообщение «просмотр данных», type=2 – «редактирование данных», type=3 –
«добавление данных»). NEW.PRG также должен добавить пустую запись в таблицу
STUFF.DBF.
Так как анкетные данные довольно обширны, для их отображения
пользоваться только командами BROWSE или CHANGE неудобно. В данном проекте
использовались GET-поля для таблиц STUFF.DBF, PASSPORT.DBF и BROWSE-окна
для остальных. Описание экранов с GET-полями, а также условия ввода данных,
заложены в модулях WIEV1.PRG, WIEV2.PRG, WIEV3.PRG, WIEV4.PRG, WIEV5.PRG,
которые запускает R_W.PRG (чтобы не перечислять каждый раз, назову их
WIEVn). В зависимости от значения переменной edit, в GET-полях разрешено
или запрещено редактирование данных. Экраны, формируемые этими модулями,
кроме области редактирования данных содержат в верхней части экрана номер
«листа», Ф.И.О. сотрудника, вид операции, а в нижней части экрана - опции
управления:
| | | |
|ЛИСТАТЬ |ЗАПИСЬ | |
| | | |
- передает управление следующему экрану.
- передает управление предыдущему экрану
- переходит к следующему сотруднику.
- возвращается к предыдущему сотруднику
Если номер экрана больше 5, то управление передается экрану №1.
Если номер экрана меньше 1, то управление передается экрану №5.
Подобная же схема действует и на выбор следующего или предыдущего
сотрудника.
- позволяет не перебирать сотрудников по порядку, а сразу
выбрать его из списка.
- выводит на печать все данные о текущем сотруднике.
- возврат в главное меню.
Кроме данных опций, экраны содержат дополнительно опции, позволяющие
просмотреть связанную с ними дополнительную информацию. На каждом экране
эти опции разные. С правой части от опции - выводится количество записей в
разделе.
Все опции описаны LIGHTBAR-меню.
При выборе некоторой опции происходит выход из текущего модуля WIEVn
с возвращением списка переменных в модуль R_W.PRG. В соответствии со
значением переменных, управление передается тому или иному модулю.
|Переменная |Значение |Условие на |Действие |
| | |выполнение | |
| |Выбрано |не | | |
| | |выбрано | | |
|up |1 |5 |Up=1 |list=list+1 |
| | | | |(затем в соответствии со |
| | | | |значением list запускается |
| | | | |один из модулей WIEV.PRG) |
|down |1 |5 |Down=1 |list=list-1 |
| | | | |(затем в соответствии со |
Страницы: 1, 2, 3
|