Курсовая работа (т): Создание автоматизированной информационной системы кадрового учета

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

−         При удалении информации в таблице «Нормативные_документы_отделов» (или в таблице «Нормативные_документы») в таблице «Отделы» ничего не происходит, вставка и обновление возможно в том случае, если в таблице «Отделы» существует кортеж с соответственным первичным ключом. При удалении информации из таблицы «Отделы» в таблице «Нормативные_документы_отделов» (или «Нормативные_документы») удаляется соответствующий кортеж. При вставке кортежа в таблицу «Отделы», в таблице «Нормативные_документы_отделов» («Нормативные_документы») ничего не происходит.

Для приложения были разработаны следующие триггеры:срабатывает при удалении нормативного документа из таблицы. Все удаленные строки заносятся в таблицу «DeletedItem», а также имя пользователя, удалившего строку, и дату;срабатывает при добавлении в базу данных нового отдела и проверяет, чтобы номер штатного расписания нового отдела был в пределах 1000<номер_штатного_расписания<2000. Если номер не соответствует условию, появляется сообщение с предупреждением;_komandirovka проверяет, чтобы при вводе данных в таблицу «Командировки» год даты командировки «Дата_с» не был больше текущего года (например, 2015 год);_Tarif срабатывает при обновлении тарифной ставки в таблице «Отделы» и выдает изменённую среднюю тарифную ставку по отделам;_Otpusk проверяет, чтобы в таблицу «Табель_отпусков» не вносились увольнения, т.к. для этого существует отдельная таблица;_Otdel проверяет, чтобы при добавлении нового отдела в таблицу «Отделы» в поле «Количество_штатных_единиц» не было нуля. В противном случае появляется сообщение с предупреждением;записывает в отдельную таблицу «DeletedWorker» информацию о записях, удаленных из таблицы «Сотрудники», а также имя пользователя, который удалил записи, и дату удаления;_Komandirovka проверяет, чтобы при добавлении записи в таблицу «Командировки» было указано место командировки;_speczvania проверяет, чтобы при добавлении записи втаблицу «Спецзвания» было заполнено поле «Служба_в_ВС»;запрещает добавление новой записи в таблицу «Сотрудники», если не заполнено хотя бы одно из полей.

ER-диаграмма физического уровня приведена в графическом материале «ER-диаграмма физического уровня» (рисунок 14).

Для приложения были разработаны следующие индексы:

)        CREATE CLUSTERED INDEX UvolУвольнения (Личный_номер)

Колонка «Личный_номер» используется в представлении Dismiss в качестве критерия выборки и в хранимой процедуре Dismissal. Тип индекса был выбран кластерный, чтобы ускорить выборку данных.

)        CREATE NONCLUSTERED INDEX Trud

Рисунок 14 - ER-диаграмма физического уровня

база данные аccess

ON Трудовой_стаж (Стаж)

Колонка «Стаж» используется в представлении Expierence и в хранимой процедуре WorkerExperience. Тип индекса - некластерный, т.к. в таблице «Трудовой_стаж» часто изменяются данные.

)        CREATE NONCLUSTERED INDEX TabТабель_отпусков (Количество_дней)

Колонка «Количество_дней» используется в представлении Otpusk и в хранимой процедуре Vacation. Тип индекса - некластерный, т.к. в таблице «Табель_отпусков» часто изменяются данные.

)        CREATE NONCLUSTERED INDEX CpecСпецзвания (Выслуга)

Колонка «Выслуга» используется в представлении Sluzba_v_VS и в хранимой процедуре SpecZvanie. Тип индекса - некластерный, т.к. в таблице «Спецзвания» часто изменяются данные.

5)      CREATE NONCLUSTERED INDEX SotrСотрудники (Личный_номер)

GO

Колонка «Личный_номер» используется в представлениях BD, Dismiss, Dolznost, Expierence, Komandirovki, Obrazovanie, Otdel, Otpusk, Sluzba_v_VS, Trip и в хранимых процедурах BDay, BusinessTrip, City, DeleteWorker, GetWorkerInfo, Lists, NewWorker, Position, Search, SearchWorker, SpecZvanie, UpdateWorker, Vacation, WorkerExperience. Тип индекса - некластерный, т.к. в таблице «Сотрудники» часто изменяются данные.

)        CREATE CLUSTERED INDEX PrSПриказы_сотрудников (Номер_приказа)

Колонка «Номер_приказа» используется в представлении Prikaz и в хранимой процедуре Orders. Тип индекса - кластерный, чтобы ускорить выборку данных.

7)      CREATE NONCLUSTERED INDEX Otd Отделы (Номер_штатного_расписания)

Колонка «Номер_штатного_расписания» используется в представлениях Basic Wage, Raspisanie и в хранимых процедурах BasicWageRateUp, NewDepartment, Schedule. Тип индекса - некластерный, т.к. в таблице «Отделы» часто изменяются данные.

8)      CREATE NONCLUSTERED INDEX NormD

ON Нормативные_документы (Номер_нормативного_документа)

GO

Колонка «Номер_нормативного_документа» используется в представлениях Docs, Ukaz и в хранимой процедуре Documents. Тип индекса - некластерный, т.к. в таблице «Нормативные_документы» часто изменяются данные.

9)      CREATE NONCLUSTERED INDEX KomКомандировки (Номер_командировки)

Колонка «Номер_командировки» используется в представлениях Komandirovki, Trip и в хранимых процедурах BusinessTrip, City. Тип индекса - некластерный, т.к. в таблице «Командировки» часто изменяются данные.

10)    CREATE NONCLUSTERED INDEX DR

ON День_рождения (Личный_номер)

GO

Колонка «Личный_номер» используется в представлении BD и в хранимых процедурах BDay, Search. Тип индекса - некластерный, т.к. в таблице «Командировки» часто изменяются данные.

.2.3 Определение представлений, хранимых процедур серверной компоненты. ER-диаграмма в режиме отображения представлений

Для приложения были разработаны следующие представления:

Dolznost предоставляет информацию обо всех начальниках РОВД (из таблицы «Сотрудники»);

BD предоставляет информацию о сотрудниках, у кого будет День рождения в следующем месяце (из таблиц «День_рождения» и «Сотрудники»);

Dismiss предоставляет информацию об уволенных сотрудниках (из таблицы «Увольнения»);

Raspisanie предоставляет информацию о штатном расписании (из таблицы «Отделы»);

Prikaz предоставляет информацию о приказах и ответственных за их выполнение (из таблицы «Приказы»);

Otpusk предоставляет информацию обо всех отпусках (из таблиц «Табель_отпусков» и «Сотрудники»);

Ukaz предоставляет информацию о нормативных документах типа «Закон РБ» (из таблицы «Нормативные_документы»);

Trip предоставляет информацию о всех командировках, которая также включает в себя личный номер сотрудника, его ФИО, отдел, должность (из таблиц «Командировки» и «Сотрудники»);

Sluzba_v_VS предоставляет информацию о сотрудниках, которые служили в ВС (из таблиц «Сотрудники» и «Спецзвания»);

Otdel предоставляет информацию обо всех сотрудниках, которые работают в отделе ООПиП (из таблицы «Сотрудники);

Obrazovanie предоставляет информацию о сотрудниках с высшим образованием (из таблицы «Сотрудники»);

Komandirovki предоставляет информацию обо всех командировках прошлого года, также информацию о командированном сотруднике: ФИО, должность, отдел (из таблиц «Командировки» и «Сотрудники»);

Experience предоставляет информацию о трудовых стажах всех сотрудников (из таблиц «Трудовой_стаж» и «Сотрудники»);

Docs предоставляет информацию о нормативных документах (из таблицы «Нормативные_документы»);

Basic Wage предоставляет информацию об отделах, где тарифная ставка выше 220000 (из таблицы «Отделы»).

Для приложения были разработаны следующие хранимые процедуры:

−       NewDepartment для вставки новых данных в таблицу «Отделы», NewWorker − в таблицу «Сотрудники»;

−         DeleteWorker для удаления данных из таблицы «Сотрудники»;

−         UpdateWorker для обновления записей в таблице «Сотрудники», BasicWageRateUp - в таблице «Отделы»;

−         Search (по возрасту) для поиска записей в таблице «Сотрудники» и «День_рождения», SearchWorker (на фамилии или началу фамилии) Search (по возрасту) в таблице«Сотрудники»;

−         BDay для предоставления информации о дне рождении по личному номеру сотрудника;

−         BusinessTrip для просмотра командировок определенного сотрудника (по личному номеру);

−         City для поиска всех командировок в определенном городе (город передается через параметр);

−         Dismissal для просмотра уволенных сотрудников;

−         Documents поиск всех нормативных документов отдела (название отдела передается через параметр);

−         GetWorkerInfo для просмотра личного дела сотрудника по его личному номеру;

−         Lists для просмотра штатной расстановки определенного отдела (название отдела передается через параметр);

−         Orders поиск приказа по его номеру;

−         Position для просмотра сотрудников, занимающих определенную должность (должность передается через параметр);

−         Schedule для просмотра штатного расписания отдела по его номеру;

−         SpecZvanie для просмотра сотрудников, которые служили в ВС;

−         Vacation для просмотра отпусков определенного сотрудника (по личному номеру);

−         WorkerExperience для подсчёта трудового стажа определенного сотрудника (по личному номеру).

.3 Верификация спроектированной логической модели

После разработки информационной модели ее следует связать с функциональной моделью. Такая связь гарантирует завершенность анализа, гарантирует, что есть источники данных (сущности) для всех работ. Связывание моделей способствует согласованности, корректности и завершенности анализа. Стрелки в функциональной модели обозначают некоторую информацию, использующуюся в моделируемой системе. В информационной модели на логическом уровне информация изображается в виде сущностей. Сущности состоят из совокупностей экземпляров сущностей (кортежи отношений). К информационной модели предъявляется требование нормализации, что должно обеспечить компактность и непротиворечивость хранения данных. Информация, которая моделируется одной стрелкой в функциональной модели, может содержаться в нескольких сущностях и атрибутах информационной модели. На функциональной модели могут присутствовать различные стрелки, изображающие одни и те же данные. Информация о таких стрелках находится в одних и тех же сущностях. Следовательно, одной и той же стрелке в функциональной модели могут соответствовать несколько сущностей в информационной модели и, наоборот, одной сущности может соответствовать несколько стрелок.

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

Таблица 1 - Отчет о верификации модели

Arrow Name

Entity Name

Attribute Name

Данные о сотрудниках

Адрес




Город



Дом



Квартира



Личный_номер



Область



Страна



Улица


День_рождения




Дата_рождения



Количество_полных_лет



Личный_номер


Сотрудники




Должность



Звание



Имя



Личный_номер



Образование



Отчество



Фамилия

Нормативные документы

Нормативные_документы




Дата_документа



Номер_нормативного_документа



Тип

Приказы и отчёты

Приказы




Дата_приказа



Номер_приказа



Ответственный

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

Командировки




Дата_с



Личный_номер



Место



Номер_командировки



Срок


Отделы




Имя_начальника



Количество_штатных_единиц



Личный_номер



Название_отдела



Номер_штатного_расписания



Отчество_начальника



Примечание



Тарифная ставка



Телефон



Факс



Фамилия_начальника


Спецзвания




Выслуга



Личный_номер



Служба_в_ВС


Табель_отпусков




Дата_с



Количество_дней



Личный_номер



Номер_табеля



Тип_отпуска


Трудовой_стаж




Дата_приёма_на_работу



Личный_номер



Стаж


Увольнения




Дата_документа



Личный_номер



Номер_документа



Причина


3 Реализация системы

3.1 T-SQL-определения регламентированных запросов


1.      Вывод информации об отделах, где тарифная ставка выше 220000

CREATE VIEW Basic Wage

ASНазвание_отдела, Номер_штатного_расписания, Тарифная_ставкаdbo.Отделы(Тарифная_ставка > 220000) // Выборка строк таблицы, где значения в колонке «Тарифная_ставка» больше 220000

.        Предоставление информации о сотрудниках, у кого будет День рождения в следующем месяце

CREATE VIEW BD

AS

SELECT dbo.Сотрудники.Фамилия, dbo.Сотрудники.Имя, dbo.Сотрудники.Отчество, dbo.День_рождения.Дата_рождения

FROM dbo.Сотрудники INNER JOIN dbo.День_рождения ON dbo.Сотрудники.Личный_номер = dbo.День_рождения.Личный_номер

WHERE (MONTH(dbo.День_рождения.Дата_рождения) = MONTH(DATEADD(MONTH, 1, GETDATE()))) // Выборка строк таблицы, где месяц, указанный в колонке «Дата_рождения», совпадает со следующим месяцем, в соответствии с текущей датой, установленной на данном сервере

.        Предоставление информации об уволенных сотрудниках

CREATE VIEW Dismiss

AS

SELECT dbo.Сотрудники.Личный_номер, LOWER(dbo.Сотрудники.Название_отдела) AS [Название отдела],

// LOWER - функция преобразования текста в нижний регистр

dbo.Сотрудники.Фамилия, dbo.Сотрудники.Имя, dbo.Сотрудники.Отчество, dbo.Сотрудники.Должность, dbo.Сотрудники.Звание, dbo.Увольнения.Номер_документа, dbo.Увольнения.Дата_документа, dbo.Увольнения.Причина, GETDATE() //GETDATE - функция, которая возвращает текущую системную отметку времени базы данных в виде значения datetime

AS Сегодня

FROM dbo.Увольнения INNER JOIN dbo.Сотрудники ON dbo.Увольнения.Личный_номер = dbo.Сотрудники.Личный_номер

.        Предоставление информации о нормативных документах

CREATE VIEW Docs

AS

SELECT dbo.Нормативные_документы.Номер_нормативного_документа, dbo.Нормативные_документы.Тип, DATEPART(YEAR, dbo.Нормативные_документы.Дата_документа) AS [Год принятия]

// DATEPART - функция, которая возвращает целое число, представляющее указанный компонент YEAR указанной даты «Дата_документа»

FROM dbo.Нормативные_документы INNER JOIN dbo.Нормативные_документы_отделов ON dbo.Нормативные_документы.Номер_нормативного_документа = dbo.Нормативные_документы_отделов.Номер_нормативного_документа

.        Предоставление информации обо всех начальниках РОВД

CREATE VIEW Dolznost

ASНазвание_отдела, Личный_номер, Фамилия, Имя, Отчество, Должность, Званиеdbo.Сотрудники(Должность LIKE 'начальник') // Выборка строк таблицы, где значение колонки «Должность» совпадает с указанным значением «начальник»

.        Предоставление информации о трудовых стажах сотрудников

CREATE VIEW Expierence

ASdbo.Сотрудники.Личный_номер, dbo.Сотрудники.Фамилия, dbo.Сотрудники.Имя, dbo.Сотрудники.Должность, dbo.Сотрудники.Название_отдела, CAST(dbo.Трудовой_стаж.Стаж AS varchar(50)) AS Стаж // CAST - функция преобразования типа данных в varchar(50) значений колонки «Трудовой_стаж»

FROM dbo.Сотрудники INNER JOIN dbo.Трудовой_стаж ON dbo.Сотрудники.Личный_номер = dbo.Трудовой_стаж.Личный_номер

.        Предоставление информации обо всех командировках в прошлом году

Источник: https://www.bibliofond.ru/detail.aspx?id=870948