Создание автоматизированной информационной системы кадрового учета

Проектирование базы данных в среде MS Access 2000 для учета кадров РОВД г. Климовичи. Описание основных функций, которые должна выполнять данная информационная система. Верификация спроектированной логической модели. Результаты тестирования программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 06.09.2015
Размер файла 655,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

  • Введение
  • 1 Техническое задание
  • 1.1 Анализ предметной области
  • 1.2 Постановка задачи
  • 2 Технический проект информационной системы
  • 2.1 Функциональная модель
  • 2.1.1 Контекстная диаграмма и диаграммы детализации процессов
  • 2.1.2 Диаграмма дерева узлов
  • 2.2 Информационная модель
  • 2.2.1 Идентификация сущностей и связей. ER-диаграмма логического уровня
  • 2.2.2 ER-диаграмма физического уровня. Ограничения доменов. Ограничения ссылочной целостности. Переопределение триггеров. Индексирование отношений
  • 2.2.3 Определение представлений, хранимых процедур серверной компоненты. ER-диаграмма в режиме отображения представлений
  • 2.3 Верификация спроектированной логической модели
  • 3 Реализация системы
  • 3.1 T-SQL-определения регламентированных запросов
  • 3.2 T-SQL-определения триггеров
  • 3.3 T-SQL-определения хранимых процедур
  • 3.4 T-SQL-определения курсоров
  • 3.5 Распределение прав доступа
  • 4 Результат тестирования информационной системы
  • Заключение
  • Список использованных литературных источников
  • Введение
  • Создание современных электронных вычислительных машин позволило автоматизировать обработку данных во многих сферах человеческой деятельности. Без современных систем обработки данных трудно представить сегодня передовые производственные технологии, управление экономикой на всех ее уровнях, научные исследования, образование, издательское дело, функционирование средств массовой информации, проведение крупных спортивных состязаний. Значительно расширило сферу применения систем обработки данных появление персональных компьютеров.
  • Одним из наиболее распространенных классов систем обработки данных являются информационные системы. Хотя на уровне здравого смысла назначение таких систем понятно каждому, для серьезного обсуждения технологий современных информационных систем необходимо более четко определить, в чем заключаются их специфические особенности, чем они отличаются от других систем обработки данных, какие функции они могут выполнять, какими ресурсами они располагают.
  • Любой разумный вид деятельности основывается на информации о свойствах состояния и поведения той части реального мира, с которой связана эта деятельность. Для получения такой информации во многих случаях необходимо регулярно через некоторые интервалы времени проводить натурные измерения (или наблюдения), позволяющие определять характеристики состояния сущностей реального мира и протекающих процессов, соответствующие моментам времени, когда эти измерения производятся.
  • В других случаях удается воспользоваться «материализованной» информацией, содержащейся в различного рода бумажных документах, отчетах или публикациях, которые также выступают как часть реальности. Требуемую информацию можно извлечь из них путем своего рода «наблюдения».
  • Однако некоторые натурные измерения или наблюдения могут оказаться неосуществимыми в отведенное для них время в связи с большой трудоемкостью, высокой стоимостью, недоступностью объекта измерения (наблюдения) и по другим причинам.
  • Значительно сократить объем необходимых натурных измерений позволяет компьютерное моделирование реальности. Если компьютерная модель адекватно (относительно информационных потребностей пользователей) отражает состояние и динамику реальности, то многие необходимые сведения можно получать с помощью такой модели, избегая тем самым натурных измерений, с существенно меньшими затратами времени, а возможно, и при более низкой стоимости. Именно для поддержки таких моделей служит специальный класс систем обработки данных - автоматизированные информационные системы.
  • Автоматизированной информационной системой называется комплекс, включающий вычислительное и коммуникационное оборудование, программное обеспечение, лингвистические средства и информационные ресурсы, а также системный персонал и обеспечивающий поддержку динамической информационной модели некоторой части реального мира для удовлетворения информационных потребностей пользователей.
  • Поскольку модель предметной области, поддерживаемая информационной системой, материализуется в форме организованных необходимым образом информационных ресурсов, она называется информационной моделью.
  • Информационные системы уже многие десятки и даже сотни лет существуют и используются на практике в форме различного рода картотек и/или коллекций бумажных документов. Однако в таких системах отсутствует какая-либо автоматизация обработки данных. Они позволяют лишь регистрировать и поддерживать в систематизированной форме на бумажных носителях результаты произведенных натурных измерений.
  • Актуальность данной работы обусловлена теоретической и практической значимостью проблем, связанных с реализацией кадровой политики МВД в сфере подготовки кадров, как важнейшей гарантии укрепления законности и правопорядка, столь необходимых для формирования правового государства.
  • Однако, несмотря на высокий научный уровень исследований управленческих отношений и вопросов кадровой политики, слабо изученными остаются проблемы кадрового обеспечения ОВД и их взаимодействие в формировании и реализации целостной системы кадровой политики.
  • Все это в совокупности и обусловило определение цели, задач, объекта и предмета данной работы.
  • Целью данного курсового проекта является создание автоматизированной информационной системы заданной предметной области ? кадровый учет, определить состояние кадрового планирования в РОВД и специфику органов управления по формированию и реализации кадровой политики как целостной системы, выявить особенности управления персоналом в органах власти.
  • 1 Техническое задание

1.1 Анализ предметной области

Объект автоматизации - РОВД г. Климовичи.

Документы, на основании которых создается система:

? Положение о прохождении службы в органах внутренних дел Республики Беларусь;

? Закон об ОВД РБ;

? Должностные инструкции;

? Трудовое законодательство;

? Методические материалы по ведению документации по учету и движению персонала.

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

Программа позволяет хранить всю информацию о сотрудниках РОВД.

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

Сотрудник лично заполняет данные о себе, после этого специалист из отдела кадров принимает эти данные и вносит их в базу данных. Непосредственно из базы данных берутся необходимые данные для заполнения личного дела сотрудника, формирования приказов и отчётов, внесения в послужной список.

Отдел кадров выполняет следующие функции.

? Учёт личного состава РОВД;

? Обработка и хранение данных о сотрудниках;

? Планирование структуры РОВД и кадровой политики;

? Произведение оперативного учёта движения кадров;

? Ведение кадрового делопроизводства;

? Осуществление контроля над своевременным исполнением распоряжений, приказов и поручений начальника РОВД;

? Оформление приема, перевода и увольнения сотрудников в соответствии с трудовым законодательством, положениями и приказами начальника РОВД;

? Формирование и ведение личных дел работников, внесение изменений, связанных с трудовой деятельностью;

? Заполнение, учёт и хранение трудовых книжек, произведение подсчёта трудового стажа;

? Произведение записи в трудовых книжках о поощрениях и награждениях сотрудников;

? Ведение учёта предоставления отпусков работникам, осуществление контроля над составлением и соблюдением графиков очередных отпусков;

? Ведение учёта нарушений трудовой дисциплины и контролирование своевременности принятия соответствующих мер;

? Выполнение других служебных поручений начальника РОВД.

1.2 Постановка задачи

Данная ИС разрабатывается с расчётом на одного пользователя - заместителя начальника РОВД по работе личным составом. При работе с системой кадровик должен решать следующие задачи:

? Получать доступ к данным таблицы, в которых должна содержаться вся необходимая информация;

? Просматривать данные таблицы, при необходимости редактировать их;

? Создавать на основе исходных данных личные дела сотрудников, отчёты и приказы.

Таким образом, основные процессы, которые должна реализовывать система:

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

2) Предоставление сведений о штатной расстановке. Штатная расстановка применяется для оформления организационной структуры и штатного состава. Чтобы сформировать штатную расстановку, специалисту по кадрам приходится пересматривать и проверять большой объём документов. Это отнимает много времени. При помощи автоматизированной системы, кадровику будет быстро предоставлена необходимая информация: фамилия, имя и отчество сотрудников, номера и даты приказа о приёме на работу/должность, наименования и перечень структурных единиц, наименования должностей и т.д., собранная в одном месте. Это значительно облегчит и ускорит процесс формирования штатной расстановки.

3) Формирование списков личного состава РОВД. При составлении списков личного состава РОВД необходимо сортировать личные дела сотрудников по различным критериям (по половой принадлежности, возрасту, стажу, работы в ОВД, образовании, должности, звании и т.д.). Вручную это займёт достаточно долгое время, к тому же велика вероятность ошибки, например, пропустить личное дело какого-либо сотрудника милиции. Автоматизированная система осуществит обработку и формирование личного состава за очень короткое время.

4) Выведение на печать личного дела сотрудника. Если начальству РОВД необходимо личное дело какого-либо сотрудника, это легко осуществимо в один клик мыши. До использования автоматизированной системы нужно было обращаться в архив и искать дело по личному номеру (который до этого необходимо найти в специальном журнале), что долго и затруднительно. Такая функция системы, как выведение на печать личного дела сотрудника, облегчает работу специалиста по кадрам.

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

6) Поиск сотрудников по выбранному критерию. Без использования автоматизированной системы поиск производится вручную, отнимает очень много рабочего времени специалиста по кадрам. Автоматизированная система даёт возможность осуществить быстрый и удобный поиск сотрудников по определённому критерию, например, по должности или прохождению службы в Вооружённых силах РБ.

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

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

9) Поиск сотрудника милиции по личному номеру. Без автоматизированной системы поиск информации о нужном сотруднике милиции занимает значительное время, т.к. специалисту по кадрам приходиться просматривать много документов (личных дел сотрудников), чтобы найти нужный номер. Кроме того, из-за ошибок во время оформления и хранения этих личных дел, некоторые документы могут быть утеряны, а восстановление этих документов -- достаточно трудоемкий процесс. Автоматизированная система хранит эту информацию сколь угодно долго, поиск осуществляется за считанные секунды, достаточно лишь вбить нужные цифры в строку поиска, исключены ошибки и нет необходимости в дополнительных папках (а, следовательно, выделение площади под эти папки) для хранения документов и журналов с учётом личных номеров сотрудников.

10) Экспорт в MS Excel. Благодаря автоматизированной системе экспорт в excel осуществляется в один клик мыши. После того как данные перенесены в еxcel, их можно анализировать самыми разными методами. Можно применить автофильтр, чтобы оставить только те данные, которые действительно нужно просматривать; можно составлять отчеты сводных таблиц, чтобы систематизировать и суммировать данные для выявления тенденций и закономерностей; можно строить диаграммы на основе этих данных.

11) Экспорт в PDF. Формат переносимых документов (PDF) представляет собой универсальный файловый формат, следовательно, рационально его использовать. Файлы с таким форматом имеют небольшой размер, что удобно, если рабочий компьютер специалиста по кадрам является устаревшим ПК и ощущает недостаток оперативной памяти. Любой пользователь бесплатной программы Adobe Reader может просматривать и печатать файлы, а также обмениваться ими с другими пользователями. Автоматизированная система сможет помочь при затруднениях, обычно возникающих в работе с электронными документами.

12) Экспорт в MS Word. Экспорт в один из самых популярных текстовых редакторов в мире, который может использоваться для самых разнообразных целей -- Microsoft Word. Главные его достоинства -- функциональность, быстродействие и простота в эксплуатации, при всей своей многогранности и обилии предлагаемых функций приложение не снижает производительность компьютера и занимает достаточно мало места на жестком диске. Также Microsoft Word одно из тех приложений, в которых может работать даже самый неопытный пользователь персональных компьютеров. С автоматизированной системой специалисту по кадрам не придётся перепечатывать всю информацию о сотрудниках вручную.

13) Оповещение по дням рождения. В реализуемой автоматизированной системе предполагается создать возможность оповещение по дням рождения сотрудников с выводом таблиц в MS Excel и выведением на печать. Чтобы узнать, когда у какого сотрудника День рождения, специалисту по кадрам приходится заводить специальный журнал, или же каждый раз просматривать огромное количество личных дел сотрудника. Автоматизированная система избавит кадровика от лишних дел, в нужное время оповестив его.

14) Оповещение о присвоении спецзваний. Специальные звания присваиваются по истечению определенного срока выслуги (например, для полковника нужно отслужить 5 лет подполковником). Отслеживать за каждым сотрудником время его службы в определённой должности сложно и трудоёмко. Специалисту по кадрам приходится либо заводить специальный журнал, где вести учёт выслуг, либо держать все данные в уме, что невозможно. При помощи автоматизированной системы можно производить контроль сроков выслуг и занимаемой сотрудником штатной должности, а также вести учёт квалификации сотрудников и образования.

15) Увольнение сотрудника. Предполагается с помощью автоматизированной системы легко и быстро удалить данные об уволенном сотруднике. Функция требует проставление данному сотруднику реквизитов уволенного. Также требуется ввод причины увольнения.

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

2 Технический проект информационной системы

2.1 Функциональная модель

2.1.1 Контекстная диаграмма и диаграммы детализации процессов

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

После того как контекст описан, проводится построение следующих диаграмм в иерархии. Каждая последующая диаграмма является более подробным описанием (декомпозицией) одной из работ на диаграмме вышестоящего уровня.

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

Рисунок 1 - Контекстная диаграмма

Рисунок 2 - Декомпозиция процесса A0 “Автоматизировать отдел кадров РОВД г. Климовичи”

В дальнейшем диаграмма разбивается на уровни. Первый уровень - это диаграмма (рисунок 2), с помощью которой производится детализация основного процесса, находящегося на контекстной диаграмме. Контекстную диаграмму разбиваем на 2 блока в соответствии с поставленными целями.

Полученные блоки - «Автоматизировать контроль над штатной расстановкой» и «Автоматизировать формирование отчетов и выведение их на печать» - также подлежат дальнейшей детализации (рисунки 3, 4).

Рисунок 3 - Декомпозиция процесса A1 “Автоматизировать контроль над штатной расстановкой”

Рисунок 4 - Декомпозиция процесса A2 “Автоматизировать формирование отчётов и выведение их на печать”

Блок «Автоматизировать учёт личных дел сотрудников» разбиваем на 4 блока: «Формирование личного дела сотрудника», «Формирование списков личного состава», «Формирование списка дней рождения» и «Осуществление поиска сотрудника по личному номеру» (рисунок 5).

Рисунок 5 - Декомпозиция процесса A1.1 “Автоматизировать учёт личных дел сотрудников”

Блок «Автоматизировать формирование штатной расстановки» разбиваем на 4 блока: «Формирование штатной расстановки», «Увольнение сотрудника», «Контроль отпусков» и «Контроль командировок» (рисунок 6).

Рисунок 6 - Декомпозиция процесса A1.2 “Автоматизировать формирование штатной расстановки”

Блок «Автоматизировать учёт о присвоении спецзваний» разбиваем на 2 блока: «Формирование отчёта о выслугах сотрудников» и «Формирование списка выслуг сотрудников» (рисунок 7).

Рисунок 7 - Декомпозиция процесса A1.3 “Автоматизировать учет о присвоении спецзваний”

Блок «Автоматизировать подсчёт трудового стажа» разбиваем на 2 блока: «Подсчёт трудового стажа» и «Формирование отчёта о трудовом стаже» (рисунок 8).

Рисунок 8 - Декомпозиция процесса A1.4 “Автоматизировать подсчёт трудового стажа”

Блок «Автоматизировать формирование отчётов и выведение их на печать» разбиваем на 2 блока, которые подлежат детализации (рисунок 9).

Блок «Автоматизировать экспорт приказов и отчетов в табличные и текстовые редакторы» разбиваем на 3 блока: «Экспорт приказов и отчетов в MS Word», «Экспорт приказов и отчетов в PDF» и «Экспорт приказов и отчетов в MS Excel» (рисунок 10).

Рисунок 9 - Декомпозиция процесса A2 “Автоматизировать формирование отчетов и выведение их на печать”

Рисунок 10 - Декомпозиция процесса A2.1 “Автоматизировать экспорт приказов и отчётов в табличные и текстовые редакторы”

Блок «Автоматизировать выведение необходимых документов на печать» разбиваем на 4 блока: «Отправление приказов и отчётов на печать», «Отправление данных о сотруднике на печать», «Отправление нормативных документов на печать на печать» и «Отправление штатного расписания на печать» (рисунок 11).

Рисунок 11 - Декомпозиция процесса A2.2 “ Автоматизировать выведение необходимых документов на печать”

2.1.2 Диаграмма дерева узлов

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

На диаграмме дерево узлов нижний уровень детализации представляется в виде списка, остальные процессы в виде прямоугольников.

Диаграмма дерева узлов проектируемой базы данных приведена в графическом материале «Диаграмма дерева узлов» (рисунок 12).

Рисунок 12 - Диаграмма дерева узлов

2.2 Информационная модель

2.2.1 Идентификация сущностей и связей. ER - диаграмма логического уровня

Erwin имеет два уровня представления модели: логический и физический. Логический уровень - это абстрактный взгляд на данные. Объекты модели, представляемые на нем, называются сущностями и атрибутами. Логическая модель данных является универсальной, т.к. не зависит от конкретной СУБД.

Для отображения информационной модели рассматриваемого процесса на логической модели используются следующие сущности:

? «Сотрудники» - для хранения информации о сотрудниках, которые работают в РОВД г. Климовичи;

? «День_рождения» - для хранения информации о дате рождения сотрудников, количестве полных лет;

? «Спецзвания» - для ведения учёта выслуги сотрудников и службе в Вооружённых силах;

? «Трудовой_стаж» - для хранения информации о дате приёма на работу и учёта трудового стажа;

? «Отделы» - для фиксации информации об отделах РОВД. Содержит название отдела, номер его штатного расписания, личный номер и ФИО начальника отдела, количество штатных единиц и тарифную ставку;

? «Нормативные_документы» - для хранения информации о нормативных документах, их типах и дат принятия;

? «Приказы» - для хранения информации о приказах, ФИО ответственного за приказ и дату приказа;

? «Командировки» - хранит информацию о местах командировок, сроках, дате и личных номерах камандированных сотрудников;

? «Увольнения» - для хранения информация об уволенных сотрудниках;

? «Табель_отпусков» - хранит информацию об отпусках сотрудников.

Связь между сущностями «Сотрудники» и «Командировки» неидентифицирующая, не разрешающая присутствие нулей, т.к. номер командировки уникален. Тип связи: один ко многим, т.к. в один сотрудник может побывать в нескольких командировках. и 1 ко многимттствие нулейтрудники библиотеки.

Связь между сущностями «Сотрудники» и «Увольнения» идентифицирующая, т.к. для ввода данных в таблицу «Увольнения» необходима информация из таблицы «Сотрудники». Тип связи: один к одному, т.к. увольнение осуществляется только для одного сотрудника.

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

Связь между сущностями «Сотрудники» и «Табель_отпусков» идентифицирующая, т.к. отпуск оформляется для сотрудника, информация о котором находится в таблице «Сотрудники». Тип связи: один ко многим, т.к. один сотрудник может побывать в отпуске несколько раз.

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

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

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

Связь между сущностями «Сотрудники» и «Приказы» многие-ко-многим, т.к. один сотрудник может быть ответственный на несколько приказов, а один приказ может быть на несколько сотрудников.

Связь между сущностями «Отделы» и «Нормативные_документы» многие-ко-многим, т.к. на один отдел может быть несколько нормативных документов, а один нормативный документ может быть на несколько отделов.

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

Рисунок 13 - ER-диаграмма логического уровня

2.2.2 ER - диаграмма физического уровня. Ограничения доменов. Ограничения ссылочной целостности. Переопределение триггеров. Индексирование отношений.

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

Реализация ссылочной целостности:

? При изменении, удалении или обновлении информации в таблице «Сотрудники» не должно ничего происходить в таблице «Командировки», и наоборот;

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

? При вставке/удалении/обновлении кортежей в таблице «Увольнения» для поддержания ссылочной целостности не происходят никакие действия в таблице «Сотрудники».

? Вставка или обновление данных в таблице «Трудовой_стаж» возможно, только если в таблице «Сотрудники» существуют кортежи с соответствующими первичными ключами. При удалении ничего не происходит. При удалении или обновлении данных в таблице «Сотрудники» кортежи в таблице «Трудовой_стаж» удаляются/обновляются соответственно.

? При вставке/удалении/обновлении данных в таблице «Табель_отпусков» для поддержания ссылочной целостности не происходят никакие действия в таблице «Сотрудники». При удалении или обновлении данных в таблице «Сотрудники» кортежи в таблице «Табель_отпусков» удаляются/обновляются соответственно.

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

? Вставка или обновление данных в таблице «День_рождения» возможно, только если в таблице «Сотрудники» существуют кортежи с соответствующими первичными ключами. При удалении ничего не происходит. При удалении или обновлении данных в таблице «Сотрудники» кортежи в таблице «День_рождения» удаляются/обновляются соответственно.

? При вставке/удалении/обновлении данных в таблице «Отделы» для поддержания ссылочной целостности не происходят никакие действия в таблице «Сотрудники». При удалении или обновлении данных в таблице «Сотрудники» кортежи в таблице «Отделы» удаляются/обновляются соответственно.

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

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

deletedBy срабатывает при удалении нормативного документа из таблицы. Все удаленные строки заносятся в таблицу «DeletedItem», а также имя пользователя, удалившего строку, и дату;

NomerOtdela срабатывает при добавлении в базу данных нового отдела и проверяет, чтобы номер штатного расписания нового отдела был в пределах 1000<номер_штатного_расписания<2000. Если номер не соответствует условию, появляется сообщение с предупреждением;

proverka_komandirovka проверяет, чтобы при вводе данных в таблицу «Командировки» год даты командировки «Дата_с» не был больше текущего года (например, 2015 год);

Upd_Tarif срабатывает при обновлении тарифной ставки в таблице «Отделы» и выдает изменённую среднюю тарифную ставку по отделам;

Ins_Otpusk проверяет, чтобы в таблицу «Табель_отпусков» не вносились увольнения, т.к. для этого существует отдельная таблица;

Ins_Otdel проверяет, чтобы при добавлении нового отдела в таблицу «Отделы» в поле «Количество_штатных_единиц» не было нуля. В противном случае появляется сообщение с предупреждением;

DelWorker записывает в отдельную таблицу «DeletedWorker» информацию о записях, удаленных из таблицы «Сотрудники», а также имя пользователя, который удалил записи, и дату удаления;

Ins_Komandirovka проверяет, чтобы при добавлении записи в таблицу «Командировки» было указано место командировки;

proverka_speczvania проверяет, чтобы при добавлении записи втаблицу «Спецзвания» было заполнено поле «Служба_в_ВС»;

Worker запрещает добавление новой записи в таблицу «Сотрудники», если не заполнено хотя бы одно из полей.

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

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

1) CREATE CLUSTERED INDEX Uvol

ON Увольнения (Личный_номер)

GO

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

2) CREATE NONCLUSTERED INDEX Trud

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

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

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

GO

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

3) CREATE NONCLUSTERED INDEX Tab

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

GO

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

4) CREATE NONCLUSTERED INDEX Cpec

ON Спецзвания (Выслуга)

GO

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

5) CREATE NONCLUSTERED INDEX Sotr

ON Сотрудники (Личный_номер)

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. Тип индекса - некластерный, т.к. в таблице «Сотрудники» часто изменяются данные.

6) CREATE CLUSTERED INDEX PrS

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

GO

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

7) CREATE NONCLUSTERED INDEX Otd

ON Отделы (Номер_штатного_расписания)

GO

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

8) CREATE NONCLUSTERED INDEX NormD

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

GO

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

9) CREATE NONCLUSTERED INDEX Kom

ON Командировки (Номер_командировки)

GO

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

10) CREATE NONCLUSTERED INDEX DR

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

GO

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

2.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 для подсчёта трудового стажа определенного сотрудника (по личному номеру).

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

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

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

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

Arrow Name

Entity Name

Attribute Name

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

Адрес

Город

Дом

Квартира

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

Область

Страна

Улица

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

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

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

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

Сотрудники

Должность

Звание

Имя

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

Образование

Отчество

Фамилия

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

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

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

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

Тип

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

Приказы

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

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

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

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

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

Дата_с

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

Место

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

Срок

Отделы

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

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

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

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

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

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

Примечание

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

Телефон

Факс

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

Спецзвания

Выслуга

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

Служба_в_ВС

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

Дата_с

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

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

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

Тип_отпуска

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

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

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

Стаж

Увольнения

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

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

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

Причина

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

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

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

CREATE VIEW Basic Wage

AS

SELECT Название_отдела, Номер_штатного_расписания, Тарифная_ставка

FROM dbo.Отделы

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

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

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()))) // Выборка строк таблицы, где месяц, указанный в колонке «Дата_рождения», совпадает со следующим месяцем, в соответствии с текущей датой, установленной на данном сервере

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

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.Сотрудники.Личный_номер

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

CREATE VIEW Docs

AS

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

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

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

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

CREATE VIEW Dolznost

AS

SELECT Название_отдела, Личный_номер, Фамилия, Имя, Отчество, Должность, Звание

FROM dbo.Сотрудники

WHERE (Должность LIKE 'начальник') // Выборка строк таблицы, где значение колонки «Должность» совпадает с указанным значением «начальник»

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

CREATE VIEW Expierence

AS

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

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

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

CREATE VIEW Komandirovki

AS

SELECT dbo.Сотрудники.Название_отдела, dbo.Сотрудники.Личный_номер, LTRIM(dbo.Сотрудники.Фамилия) AS Фамилия, dbo.Сотрудники.Имя, dbo.Сотрудники.Отчество, // LTRIM - функция, которая возвращает значение колонки «Фамилия» после удаления начальных пробелов

dbo.Сотрудники.Должность, dbo.Командировки.Номер_командировки, dbo.Командировки.Дата_с

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

WHERE (YEAR(dbo.Командировки.Дата_с) = YEAR(DATEADD(YEAR, - 1, GETDATE()))) // Выборка строк таблицы, где год в колонке «Дата_с» совпадает с прошлым годом, в соответствии с текущей датой, установленной на данном сервере

8. Вывод в таблицу всех сотрудников, имеющий высшее образование

CREATE VIEW Obrazovanie

AS

SELECT Личный_номер, LTRIM(Фамилия) AS Фамилия, Имя, Отчество, // LTRIM - функция, которая возвращает значение колонки «Фамилия» после удаления начальных пробелов

Должность, Звание, UPPER(Образование) AS Образование

FROM dbo.Сотрудники

WHERE (Образование LIKE '%высшее') // Выборка строк таблицы, где значение колонки «Образование» совпадает с указанным значением «высшее»

9. Вывод в таблицу сотрудников, работающих в отделе ООПиП

CREATE VIEW Otdel

AS

SELECT Название_отдела, Личный_номер, LTRIM(Фамилия) AS

// LTRIM - функция, которая возвращает значение колонки «Фамилия» после удаления начальных пробелов

Фамилия, Имя, Отчество, Должность, Звание

FROM dbo.Сотрудники

WHERE (Название_отдела LIKE '%ООПиП') // Выборка строк таблицы, где значение колонки «Название_отдела» совпадает с указанным значением «ООПиП»

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

CREATE VIEW Otpusk

AS

SELECT dbo.Сотрудники.Личный_номер, dbo.Сотрудники.Название_отдела, dbo.Сотрудники.Фамилия, dbo.Сотрудники.Имя, dbo.Сотрудники.Отчество, dbo.Сотрудники.Должность, dbo.Табель_отпусков.Номер_табеля, dbo.Табель_отпусков.Тип_отпуска, dbo.Табель_отпусков.Дата_с, DATEDIFF(day, dbo.Табель_отпусков.Дата_с, GETDATE()) AS [Количество дней] // DATEDIFF - функция, которая возвращает интервал времени day, прошедшего от указанной даты Дата_с до текущей даты, установленной на данном сервере, GETDATE - возвращает текущую дату, установленную на данном сервере

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

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

CREATE VIEW Prikaz

AS

SELECT dbo.Приказы.Номер_приказа, dbo.Приказы_сотрудников.Название_отдела, RTRIM(dbo.Приказы.Ответственный) AS Ответственный, // RTRIM - функция, которая возвращает значение колонки «Фамилия» после удаления пробелов из конца строки

dbo.Приказы.Дата_приказа

FROM dbo.Приказы INNER JOIN dbo.Приказы_сотрудников ON dbo.Приказы.Номер_приказа = dbo.Приказы_сотрудников.Номер_приказа

12. Предоставление информации о штатном расписании

CREATE VIEW Raspisanie

AS

SELECT Номер_штатного_расписания, Название_отдела, RTRIM(Фамилия_начальника) + SPACE(2) + LTRIM(Имя_начальника) + SPACE(2) + LTRIM(Отчество_начальника) AS Начальник, // RTRIM - функция, которая возвращает значение колонки «Фамилия» после удаления пробелов из конца строки, LTRIM - функция, которая возвращает значение колонки «Фамилия» после удаления начальных пробелов, SPACE - функция, которая возвращает строку пробелов

Количество_штатных_единиц, Тарифная_ставка, Примечание

FROM dbo.Отделы

13. Вывод в таблицу сотрудников, которые служили в ВС

CREATE VIEW Sluzba_v_VS

AS

SELECT dbo.Сотрудники.Личный_номер, dbo.Сотрудники.Название_отдела, dbo.Сотрудники.Фамилия, dbo.Сотрудники.Имя, dbo.Сотрудники.Отчество,

UPPER(dbo.Сотрудники.Должность) AS Expr1, dbo.Сотрудники.Звание,

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

dbo.Спецзвания.Выслуга

FROM dbo.Сотрудники INNER JOIN dbo.Спецзвания ON dbo.Сотрудники.Личный_номер = dbo.Спецзвания.Личный_номер AND dbo.Сотрудники.Название_отдела = dbo.Спецзвания.Название_отдела

WHERE (dbo.Спецзвания.Служба_в_ВС = 'да') // Выборка строк таблицы, где значения в колонке «Служба_в_ВС» равны «да»

14. Предоставляет информацию обо всех командировках

CREATE VIEW Trip

AS

SELECT dbo.Сотрудники.Личный_номер, dbo.Сотрудники.Название_отдела, dbo.Сотрудники.Фамилия, dbo.Сотрудники.Имя, dbo.Сотрудники.Отчество, dbo.Сотрудники.Должность, dbo.Командировки.Номер_командировки, dbo.Командировки.Место, CONVERT(VARCHAR(11), dbo.Командировки.Дата_с, 106) // CONVERT - функция преобразования типа данных в varchar(11) значений колонки «Дата_с», 106 - формат даты дд мм гггг

AS Дата_с, dbo.Командировки.Срок

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

15. Предоставляет информацию о нормативных документах типа «Закон РБ»

CREATE VIEW Ukaz

AS

SELECT Номер_нормативного_документа, REPLACE('Закон РБ', 'РБ', 'Республики Беларусь') AS Тип, Дата_документа // REPLACE - функция замены всех вхождений значения «РБ» в значении «Закон РБ» на «Республики Беларусь»

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

WHERE (Тип LIKE '%Закон РБ') // Выборка строк таблицы, где значение колонки «Тип» совпадает с указанным значением «Закон_РБ»

3.2 T-SQL-определения триггеров

1. Триггер, который будет срабатывать при удалении нормативного документа из таблицы «Нормативные_документы_отделов». Все удаленные строки будут заноситься в таблицу «DeletedItem», а также имя пользователя, удалившего строку, и дату

CREATE TABLE DeletedItem

([Номер_нормативного_документа] [int] NOT NULL,

[Название_отдела] [varchar] (100) NULL,

[Имя_пользователя] [varchar](50) NULL,

[Дата_удаления][datetime] NULL )

ON [PRIMARY]

CREATE TRIGGER deletedBy

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

FOR DELETE // Триггер будет срабатывать на удаление из таблицы «Нормативные_документы_отделов»

AS

INSERT INTO DeletedItem

(Номер_нормативного_документа, Название_отдела, Имя_пользователя, Дата_удаления)

SELECT Номер_нормативного_документа, Название_отдела,SYSTEM_USER, GETDATE() // SYSTEM_USER - вставка в таблицу значение текущего имени входа, GETDATE ? возвращает текущую дату, установленную на данном сервере

FROM deleted // Deleted - временная таблица, куда заносятся удаляемые данные

2. Срабатывает при добавлении в базу данных нового отдела и проверяет, чтобы номер штатного расписания нового отдела был в пределах 1000<номер_штатного_расписания<2000. Если номер не соответствует условию, появляется сообщение с предупреждением

CREATE TRIGGER NomerOtdela

ON Отделы

FOR INSERT // Триггер будет срабатывать на вставку в таблице «Отделы»

AS

DECLARE @@f int // Объявление переменной

Set @@f=1000

IF NOT EXISTS (SELECT * FROM Отделы, inserted // Проверка на отсутствие строк в таблице

WHERE Отделы.Номер_штатного_расписания = inserted.Номер_штатного_расписания)

Set @@f=0

IF EXISTS (SELECT * FROM Отделы, inserted

WHERE inserted.Номер_штатного_расписания>2000 OR inserted.Номер_штатного_расписания<1000) // Проверка при вводе строки в таблицу, чтобы значение в колонке «Номер_штатного_расписания» не был больше 2000 и меньше 1000

Set @@f=0

If @@f=0

BEGIN

PRINT UPPER ('Ошибка! Проверьте номер штатного расписания.')

// Предупреждающее сообщение с преобразованием в верхний регистр

ROLLBACK TRANSACTION // Откат транзакции

END

3. Будет проверять, чтобы при вводе данных в таблицу «Командировки» год даты командировки «Дата_с» не был больше текущего года (например, 2015 год)


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.