DIPLOM (664575), страница 3
Текст из файла (страница 3)
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 из них следует проиндексировать:
















