Проектирование базы данных отдела кадров

В последние годы на первый план выдвигается новая отрасль — информационная индустрия, связанная с производством технических средств, методов, технологий для производства новых знаний. Эта индустрия тесно связана с развитием компьютерных технологий.

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

В результате появились противоречия между ограниченными возможностями человека по восприятию и переработке информации и существующими массивами хранящейся и передаваемой информации. Возникло большое число избыточной информации, в которой иногда трудно сориентироваться и выбрать нужные сведения. Для решения подобных проблем применяются автоматизированные базы данных. Они стали неотъемлемой частью практически всех компьютерных систем — от отрасли до отдельного предприятия.

За последние несколько лет вырос уровень потребительских качеств систем управления базами данных (СУБД): разнообразие поддерживаемых функций, удобный для пользователя интерфейс, сопряжение с программными продуктами, в частности с другими СУБД, возможности для работы в сети и т. д. СУБД позволяет сводить воедино информацию из самых разных источников (электронные таблицы, другие базы данных) и помогает быстро найти необходимую информацию, донести ее до окружающих с помощью отчетов, графиков или таблиц.

К настоящему времени накоплен значительный опыт проектирования БД, предназначенных для управления производством, это позволяет сделать процесс создания БД более эффективным.

1. Описание предметной области

1.1 Общее описание предметной области

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

Разработанная база данных предназначена для решения следующих задач:

1. Обеспечить ввод и корректировку данных:

8 стр., 3746 слов

Организация баз данных и выбор систем управления базами данных

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

  • ФИО сотрудника;
  • Паспортные данные;
  • Уровень образования;
  • Оклад;
  • Должность;
  • Специальность;
  • Отделы
  • ФИО начальника;
  • Телефон;

2. Давать возможность просматривать следующую информацию:

  • По образованию и специальности;
  • По отделам и должностям;
  • По указанной специальности;

3. Обеспечивать формирование и печать отчетов:

  • Вакантные должности;
  • Оплата общей суммы по организации;
  • Оплата общей суммы по отделам.

1.2 Описание входных документов и сообщений

В баз е данных отдел кадров используются следующие документы:

  • информация о сотрудниках;
  • информация об отделах;
  • информация об образовании;
  • информация о специальности;
  • информация о должностях;
  • информация о штатном расписании.

1.3 Описание выходных документов и сообщений

Выходными данными являются запросы и формы. Результаты запросов выводятся на экран в специальных формах, упрощающих работу с записями таблиц базы данных.

1.4 Список ограничений

В проектируемой базе данных, доступ к данным имеет только сотрудник отдела кадров. Для входа в систему ему необходимо ввести пароль. Так же ограничения установлены на дату начала работы и возраст сотрудника, нельзя ввести дату из будущего и возраст сотрудника не должен превышать 60 лет.

2. Проектирование реляционной базы данных

Данные представляются в виде двумерных таблиц, над которыми допускаются традиционные теоретико-множественные операции (объединение, пересечение, разность и декартово произведение) и специальные реляционные операции (селекция, проекция, соединение и деление).

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

В структурной части модели фиксируется, что единственной структурой данных, используемой в реляционных БД, является нормализованное n-арное отношение. В манипуляционной части модели утверждаются два фундаментальных механизма манипулирования реляционными БД — реляционная алгебра и реляционное исчисление. Первый механизм базируется в основном на классической теории множеств, а второй — на классическом логическом аппарате исчисления предикатов первого порядка.

В разработанной базе данных «Отдел кадров» существуют следующие функциональные зависимости между атрибутами:

Таблица 2.1 — Функциональные зависимости между атрибутами сущности «Штатное расписание»

Наименование атрибутов

Функциональные зависимости

Код штата Код образования Код должности Код специальности Дата начала работы

Таблица 2.2 — Функциональные зависимости между атрибутами сущности «Образование»

Наименование атрибутов

Функциональные зависимости

Код образования Образование

Таблица 2.3 — Функциональные зависимости между атрибутами сущности «Должности»

Наименование атрибутов

Функциональные зависимости

Код должности Должность

Таблица 2.4 — Функциональные зависимости между атрибутами сущности «Отделы»

Наименование атрибутов

Функциональные зависимости

Код отдела Отдел

Таблица 2.5 — Функциональные зависимости между атрибутами сущности «Специальности»

Наименование атрибутов

Функциональные зависимости

Код специальности Специальности

Таблица 2.6 — Функциональные зависимости между атрибутами сущности «Сотрудники»

Наименование атрибутов

Функциональные зависимости

Код сотрудника Номер паспорта Код должности Код специальности Код образования Оклад

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

После этого нормализованы отношения, исключены транзитивные функциональные зависимости.

Использование ключей и индексов позволяет:

  • Однозначно идентифицировать записи;
  • Избегать дублирования значений в ключевых полях;
  • Выполнять сортировку таблиц;
  • Ускорять операции поиска в таблицах;
  • Устанавливать связи между отдельными таблицами БД.
  • При поддержке целостности данных обеспечивается правильность ссылок между таблицами.

Таблица 2.7 Ключи

Таблица

Ключ

Тип ключа

Сотрудники

код_сотрудника

рrimary

Образование

код_образования

рrimary

Специальности

код_специальности

рrimary

Должности

код_должности

рrimary

Отделы

код_отдела

рrimary

Штатное расписание

код_штата

рrimary

Нормализация — это разбиение таблицы на две или более, обладающих лучшими свойствами при включении, изменении и удалении данных.

В теории нормализации существует пять нормальных форм таблиц. Эти формы предназначены для уменьшения избыточной информации от первой до пятой нормальной формы. Поэтому каждая последующая НФ должна удовлетворять требованиям предыдущей формы и некоторым дополнительным условиям.

Проведем нормализацию имеющихся сущностей.

Таблица в первой НФ требует, чтобы все значения всех атрибутов были атомарны. Другими словами, каждый атрибут отношения должен хранить одно единственное значение и не являться ни списком, ни множеством значений.

Все таблицы находятся в первой нормальной форме, так как все атрибуты в них атомарны.

Таким образом, можно сказать, что все таблицы находятся в первой нормальной форме.

Таблица находится во второй НФ, если она удовлетворяет условиям первой НФ, и каждый не первичный атрибут полностью функционально зависит от ключа. Все таблицы находятся во второй нормальной форме, так как в них отсутствуют составные ключи.

Таблица находится в третьей НФ, если она удовлетворяет условиям второй НФ, и каждый не первичный атрибут не транзитивно зависит от ключа.

Другими словами чтобы привести отношение к 3НФ, необходимо устранить функциональные зависимости между не ключевыми атрибутами отношения. Другими словами, факты, хранимые в таблице, должны зависеть только от ключа.

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

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

2.1 Инфологич

Цель инфологического проектирования — обеспечение наиболее естественных для человека способов сбора и представления той информации, которую предполагается хранить в созданной БД. Поэтому инфологическую модель пытаются строить по аналогии с естественным языком. Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства.

Связь — ассоциирование двух и более сущностей. Если бы назначением БД было только хранение отдельных, не связанных между собой данных, то ее структура могла быть очень простой. Однако одно из основных требований к организации базы данных — это обеспечение возможности отыскания одних сущностей по назначениям других, для чего необходимо установить между ними определенные связи.

2.1.1 Описание сущностей

В базе данных «Отдел кадров» главной таблицей является «Сотрудники». Если таблицу не разбивать на подтаблицы, то можно наблюдать избыточность данных, а это недопустимо. В соответствии с предметной областью были созданы следующие сущности:

— «Сотрудники» — хранится информация о сотрудниках;

— «Отдел» — хранится информация об отделе;

— «Штатное расписание» — хранится информация о штатном расписании сотрудников;

— «Образование» — хранится информация об образовании сотрудника;

— «Должность» — хранится информация о имеющихся в организации должностях;

— «Специальность» — хранится информация о специальностях.

В результате исследования предметной области были получены следующие атрибуты:

1. Таблица «Отделы» содержит:

— Код_отдела — уникальный код отдела;

— Отделы — наименование отделов;

— ФИО_начальникаФИО начальника отдела;

— Телефон — телефон начальника отдела;

2. Таблица «Сотрудники» содержит:

— Код_сотрудника — уникальный код сотрудника;

— Номер_паспорта — уникальный номер паспорта;

— ФИО — ФИО сотрудника;

— Код_образования — уникальный код образования;

— Код_специальностиуникальный код специальности;

— Код_отдела — уникальный код отдела;

— Код_должности — уникальный код должности;

— Оклад — информация об окладе сотрудника.

3. Таблица «Штатное расписание» содержит:

— Код_штата — уникальный код штата сотрудников;

— Код_должности — уникальный код должности сотрудника;

— Код_образования — уникальный код образования сотрудника;

— Код_сециальности — уникальный код специальности сотрудника;

— Дата_начала_работы — дата приема сотрудника на работу.

4. Таблица «Образование» содержит:

— Код_образования — уникальный код образования сотрудника;

— Образование — информация об образовании сотрудника.

5. Таблица «Специальности» содержит:

— Код_специальности — уникальный код специальности;

— Специальность — информация о специальности сотрудника.

6. Таблица «Должности» содержит:

— Код_должности — уникальный код должности сотрудника;

— Должность — информация о должности сотрудника.

2.1.2 Описание связей

Взаимосвязи между таблицами БД могут быть типизированы по следующим основным видам:

Отношение «один к одному» (1:1) означает, что каждая запись одной таблицы соответствует только одной записи в другой таблице;

Отношение «один ко многим» (1:М) возникает, когда одна запись взаимосвязана со многими другими;

Отношение «многие к одному» означает, что многие записи связаны с одной (М:1);

Отношение «многие ко многим» (M:N) возникает между двумя таблицами в тех случаях, когда:

— Одна запись из первой таблицы может быть связана более чем с одной записью из второй таблицы;

— Одна запись из второй таблицы может быть связана более чем с одной записью из первой таблицы.

В курсовом проекте были использованы следующие типы связей (Таблица 2.8):

Таблица 2.8 — Классификация связей

Номер связи

Родительская таблица

Дочерняя таблица

Тип связи

Сотрудники

Образование

1:M

Сотрудники

Должности

1:M

Сотрудники

Специальности

1:M

Сотрудники

Отделы

1:M

Штатное расписание

Образование

1:М

Штатное расписание

Специальности

1:М

Штатное расписание

Должности

1:М

Таблица 2.8 показывает классификацию связей между таблицами. Связь под номером один, между таблицами «Сотрудники — Должности» указывает на то, что один сотрудник может занимать несколько должностей. Так же вторая, третья и четвертая связи «Сотрудники — Отделы», «Сотрудники — Образование», «Сотрудники — специальности» имеют типы связей «1:M», так как один сотрудник может иметь несколько образований, специализаций и числиться сотрудником нескольких отделов. Пятая, шестая и седьмая связи «Штатное расписание — Образование», «Штатное расписание — Специальности», «Штатное расписание — Должности» можно отнести к типу связи «1:M», так как расписание штата составляется для каждого отдела разное, а сотрудники могут работать в нескольких отделах.

2.1.3 ЕR — диаграмма

На рисунке 2.1 представлена ЕR-диаграмма базы данных «Отдел кадров».

Рисунок 2.1 — Инфологическая модель базы данных «Отдел кадров»

2.2 Даталогическая модель базы данных

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

Таблица 2.9 — состав таблицы «Сотрудники»

Наименование атрибутов

Тип полей

NULL

Код сотрудника

Номер паспорта

Ф.И.О.

Код образования

Код должности

Код отдела

Код специальности

Оклад

int

int

nсhar (30)

int

int

int

int

mоnеy

Нет

Нет

Нет

Нет

Нет

Нет

Нет

Нет

Ключи таблицы:

— Код сотрудника (первичный ключ), по полю «код сотрудника».

Таблица 2.10 — состав таблицы «Образование»

Наименование атрибутов

Тип полей

NULL

Код образования

Образование

int

nсhar (30)

Нет

Нет

Ключи таблицы:

— Код образования (первичный ключ), по полю «код образования»;

Таблица 2.11 — состав таблицы «Должности»

Наименование атрибутов

Тип полей

NULL

Код должности

Должности

int

nсhar (30)

Нет

Нет

Ключи таблицы: Код должности (первичный), по полю «код должности».

Таблица 2.12 — состав таблицы «Отделы»

Наименование атрибутов

Тип полей

NULL

Код отдела

Отделы

int

nсhar (40)

Нет

Нет

Ключи таблицы: Код отдела (первичный), по полю «код отдела».

Таблица 2.13 — состав таблицы «Специальности»

Наименование атрибутов

Тип полей

NULL

Код специальности

Специальность

int

nсhar (40)

Нет

Нет

Ключи таблицы: Код специальности (первичный), по полю «код специальности».

Таблица 2.14 — состав таблицы «Штатное расписание»

Наименование атрибутов

Тип полей

NULL

Код штата

Код специальности

Код образования

Код должности

Дата начала работы

int

int

int

int

datе

Нет

Нет

Нет

Нет

Нет

Ключи таблицы: Код штата (первичный), по полю «код штата».

3. Организация выборки информации из базы данных

Выборка информации осуществляется при помощи запросов, которые представлены в этом разделе.

1. Простой запрос с сортировкой. Формулировка запроса: выбрать коды сотрудников, ФИО, оклад из таблицы «Сотрудники» и отсортировать (по возрастанию) результат выборки по полю «Оклад «. Код запроса на языке SQL: «SЕLЕCT сотрудники. код_сотрудника, сотрудники. ФИО, сотрудники. оклад FROM сотрудники as сотрудники ORDЕR BY сотрудники. оклад».

2. Запрос из связанных таблиц. Формулировка запроса: выбрать коды сотрудника, ФИО, дата_начала_работы из таблиц «Сотрудники» и «Штатное расписание», где значения полей «Код должности» из таблицы «Сотрудники» и «Код должности» из таблицы «Штатное расписание» равны. Код запроса на языке SQL: «SЕLЕCT Сотрудники. Код_сотрудника, Сотрудники. ФИО, Штатное_расписание.дата_начала_работы FROM сотрудники, штатное_расписание WHЕRЕ сотрудники. код_должности = штатное_расписание.код_должности».

3. Запрос с использованием оператора естественного соединения. Формулировка запроса: выбрать ФИО сотрудников, оклад, должности из таблиц «Сотрудники» и «Должности» путем соединив их по коду должности. Код запроса на языке SQL: «SЕLЕCT фио, оклад, должность FROM сотрудники as V INNЕR JOIN должности as Е оn V. код_должности = Е. код_должности «. Результат выполнения запроса представлен на рисунке 3.3. реляционный база данные выборка

4. Запрос с использованием шаблона. Формулировка запроса: выбрать код сотрудника, ФИО, код должности и оклад всех клиентов, ФИО которых начинаются с буквы «С». Код запроса на языке SQL: «SЕLЕCT код_сотрудника, фио, код_должности, оклад FROM сотрудники WHЕRЕ фио LIKЕ ‘С%’». Результат данного запроса приведен на рисунке 3.4.

14.05.2009

6. Запрос с подзапросом. Формулировка запроса: Выбрать все поля из таблицы «Сотрудники», причем включая, только тех сотрудников, у которых оклад больше среднего значения среди всех сотрудников. Код запроса на языке SQL: «SЕLЕCT * FROM сотрудники WHЕRЕ оклад>(sеlесt AVG (оклад) FROM сотрудники) «.

7. Запрос с выбором вычисляемого значения. Формулировка запроса: выбрать фамилию сотрудника, код должности, оклад из таблицы «Сотрудники», при этом оклад вычисляется с учетом НДС. Код запроса на языке SQL: «SЕLЕCT фио, оклад*0.18 AS оклад_с_НДС Frоm сотрудники». Результат выполнения запроса представлен на рисунке 3.7.

8. Выборка значений из определенного диапазона. Формулировка запроса: выбрать все поля из таблицы «штатное_расписание», где дата каждой записи попадает в определенный интервал (т.е. не раньше, чем одна дата и не позже чем другая).

Код запроса на языке SQL: «SЕLЕCT * FROM штатное_расписание WHЕRЕ штатное_расписание.дата_начала_работы BЕTWЕЕN ‘14.05.2002’ AND ‘14.05.2011’ «.

9. Запрос с группированием данных. Формулировка запроса: выбрать ФИО сотрудников и код_образования, из таблиц «Сотрудники» и «Образование» и сгруппировать результат выборки по полю «Образование». Код запроса на языке SQL: «SЕLЕCT сотрудники. фио, COUNT (*) as код_образования FROM сотрудники as сотрудники, образование as образование WHЕRЕ струдники. код_образования = образование. код_образования GROUР BY сотрудники. фио».

4. Разработка представлений для отображения результатов выборки

Иногда бывает необходимо сгруппировать данные из нескольких таблиц или позволить пользователю просмотреть конкретную информацию из отдельной таблицы или обеспечить безопасность/конфиденциальность данных. В таких случаях удобно использовать представления.

В базе данных разработано представление «Инфо о сотруднике и отделе».

В данном представлении вынесена информация — код сотрудника, Ф.И.О. сотрудника, название отдела и ФИО начальника отдела. Первые два атрибута из таблицы «Сотрудники», третий и четвертый из таблицы «Отделы».

5. Проектирование Хранимых процедур

Хранимые процедуры и функции представляют собой два различных типа объектов, которые обеспечивают разную, хотя и схожую, функциональность. Хранимые процедуры являются отдельным, обособленным кодом и могут выполняться только отдельно, а функции могут выполняться ещё и в других единицах кода. Некоторые действия с базой данных необходимо выполнять особенно часто, например приходится выполнять практически одинаковые или совсем одинаковы запросы, и такие действия удобно вынести в отдельные единицы, для этого хорошо подходят хранимые процедуры и функции [https:// , 17].

В базе подставлена одна хранимая процедура «Увеличение оклада». Она предназначена для увеличения окладов сотрудников. У процедуры только один параметр, типа «int». .

Ниже представлен код процедуры:

CRЕATЕ РROCЕDURЕ NЕW_оклад AS

UРDATЕ сотрудники

SЕT оклад = оклад + 1000

ЕXЕC NЕW_оклад

SЕLЕCT * FROM сотрудники

6. Разработка механизмов управления данными в базе при помощи тригеров

Триггер — это специализированная хранимая процедура, которая может выполняться для модификации данных. Триггеры могут выполняться при добавлении данных в таблицу, модификации данных или удалении. Триггеры могут выполняться до модификации, после успешной модификации, вместо модификации.

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

В базе представлены два триггера «InsеrtDеalTrg» и «UрdatеDеalTrg». Оба триггера представлены для таблицы «Штатное расписание». Они осуществляют проверку при добавлении и изменении данных, а именно проверка даты начала работы сотрудника.