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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    213,09 Кб
  • Опубликовано:
    2017-09-16
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Введение

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

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

Автоматизация производственных процессов также стало распространённым явлением. Автоматизация облегчает и ускоряет работу.

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

Цель данной курсовой работы - разработка базы данных для автоматизации деятельности специалиста по ТБ и ОТ.

Задачи работы:

-       постановка задачи;

-       проектирование логической модели;

-       создание физической модели;

-       формирование БД;

-       создание запросов;

-       создание интерфейса к БД.

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

Контроль ТБ - это трудоёмкая задача. Функции для системы автоматизации деятельности специалиста по ТБ следующие:

-       учёт персонала;

-       учёт травм и несчастных случаев;

-       формирование графиков медосмотров;

-       учёт результатов медосмотров;

-       учёт результатов тестирования персонала;

-       учёт нарушений охраны труда;

-       формирование отчётов.

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

-       персонал;

-       работа;

-       медосмотры;

-       проверки;

-       прохождение медосмотра;

-       прохождение проверки;

-       инциденты;

-       участники;

-       предписания;

-       список инцидентов для основания.

Рассмотрим реквизиты персонала:

-       ФИО;

-       дата рождения;

-       пол;

-       адрес регистрации;

-       номер телефона;

-       СНИЛС;

-       серия и номер паспорта.

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

Реквизиты медосмотра:

-       дата проведения;

-       краткое описание.

Реквизиты проверки знаний:

-       дата проведения;

-       краткое описание.

Прохождение медосмотра это:

-       сотрудник;

-       пройдено или нет;

-       причина не прохождения.

Прохождение проверки это:

-       сотрудник;

-       пройдено или нет;

-       причина не прохождения.

Инцидент характеризуется:

-       номер инцидента;

-       дата и время;

-       тип инцидента;

-       описание;

-       была ли получена травма.

Участник:

-       сотрудник;

-       роль.

Предписание:

-       сотрудник;

-       дата создания;

-       действительно.

Список инцидентов содержит номера инцидентов.

Из рассмотренных данных видно, что медосмотр и проверка можно объединить в одну сущность: график. С также объединить прохождение в единое.

Следовательно, БД будет состоять из следующих сущностей:

-       персонал;

-       график;

-       инцидент;

-       предписание;

-       прохождение;

-       работа;

-       участник;

-       список.

Также, в системе должны фигурировать следующие справочники: должность; отдел; причина; тип инцидента; роль.

2. Логическая модель

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

-       данные о персонале;

-       данные о работе;

-       данные о графиках;

-       данные о прохождении;

-       данные о инцидентах;

-       данные об участниках;

-       данные о предписаниях;

-       списки.

Справочники:

-       отделы;

-       должности;

-       роли;

-       типы инцидентов;

-       причины.

Рассмотрим связи между сущностями и справочниками.

Рассмотрим связи между сущностями подробнее:

.        «Должность» - «Работает», тип связи «один-ко-многим», ограничение not null;

.        «Отделение» - «Работает», тип связи «один-ко-многим», ограничение not null;

.        «Персонал» - «Работает», тип связи «один-ко-многим», ограничение not null;

.        «График» - «Прохождение», тип связи «один-ко-многим», ограничение not null;

.        «Причина» - «Прохождение», тип связи «один-ко-многим»;

.        «Персонал» - «Прохождение», тип связи «один-ко-многим», ограничение not null;

.        «Тип случая» - «Случай», тип связи «один-ко-многим», ограничение not null;

.        «Случай» - «Участник», тип связи «один-ко-многим», ограничение not null;

.        «Роль» - «Участник», тип связи «один-ко-многим», ограничение not null;

.        «Персонал» - «Участник», тип связи «один-ко-многим», ограничение not null;

.        «Персонал» - «Предписание», тип связи «один-ко-многим», ограничение not null;

.        «Предписание» - «Список», тип связи «один-ко-многим», ограничение not null;

.        «Инцидент» - «Список», тип связи «один-ко-многим», ограничение not null.

Инфологическая модель представлена на рисунке 1.

Рисунок 1 - Инфологическая модель базы данных

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

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

инфологический программный логический

Таблица 1 - Атрибуты сущностей

Сущность

Атрибуты

Служащий

код; ФИО; дата рождения; пол; телефон; адрес; паспорт; СНИЛС.

Работа

код; должность; отдел; служащий; работает.

График

код; тип; начало; описание.

Прохождение

код; расписание; служащий; причина, по которой не прошёл; пройдено.

Инцидент

код; тип инцидента; произошло; описание; травма.

Участник

код; инцидент; служащий; роль.

Предписания

код; создано; описание; служащий.

Список инцидентов

код; предписание; инцидент.

Должность

код; название.

Отдел


Причина

код; название.

Тип инцидента

код; название.

Роль

код; название.


Рисунок 2 - Логическая модель базы данных

3. Физическая модель

База данных состоит из следующих таблиц:

.        Post;

.        Department;

.        Job;

.        Personal;

.        Schedule;

.        Reason;

.        Pass;

.        Incident;

.        TypeIncident;

.        Actor;

.        Role;

.        Instruction;

.        ListIncident.

В таблицах 2 - представлен состав таблиц базы данных.

Таблица 2 - «Post»

Поле

Тип

Ограничения

ID

int

PK

Name

varchar

50, not null


Таблица 3 - «Department»

ПолеТипОграничения



ID

int

PK

Name

varchar

50, not null


Таблица 4 - «Job»

Поле

Тип

Ограничения

ID

int

PK

Personal

int

FK, not null

Department

Int

FK, not null

Post

Int

FK, not null

EndJob

bit



Таблица 5 - «Personal»

Поле

Тип

Ограничения

ID

int

PK

FIO

varchar

60, not null

Birthdate

datetime


Sex

char

1, not null

Phone

varchar

15

Address

varchar

100

SNILS

varchar

12

Passport

varchar

10


Таблица 6 - «Schedule»

Поле

Тип

Ограничения

ID

int

PK

TypeSched

int

Not null

sDate

datetime

Not null

Description

varchar

100


Таблица 7 - «Reason»

Поле

Тип

Ограничения

ID

int

PK

Name

varchar

50, not null


Таблица 8 - «Pass»

Поле

Тип

Ограничения

ID

int

PK

Schedule

int

FK, not null

Personal

int

FK, not null

Reason

int

FK

EndPass

bit



Таблица 9 - «Incident»

Поле

Тип

Ограничения

ID

int

PK

TypeIncident

int

FK, not null

sDate

datetime

Not null

Description

text


Travma

bit



Таблица 10 - «TypeIncident»

Поле

Тип

Ограничения

ID

int

PK

Name

varchar

50, not null


Таблица 11 - «Actor»

Поле

Тип

Ограничения

ID

int

PK

Incident

int

FK, not null

Personal

int

FK, not null

Role

int

FK, not null


Таблица 12 - «Role»

Поле

Тип

Ограничения

ID

int

PK

Name

varchar

50, not null


Таблица 13 - «Instruction»

Поле

Тип

Ограничения

ID

int

PK

sDate

datetime

Not null

Description

Varchar

100

Personal

int

FK, not null

EndInstruction

bit



Таблица 14 - «ListInstruction»

Поле

Тип

Ограничения

ID

int

PK

Instruction

FK, not null

Incident

int

FK, not null


На рисунке 3 представлена ER-диаграмма базы данных АРМ инженера по ТБ.

Рисунок 3 - ER-модель базы данных

Сформируем из данной ER-модели схему данных в MS SQL Server - рисунок 4.

Рисунок 4 - Схема данных

4. Связь приложения с базой данных

Среда Delphi является одной из наилучших сочетаний объектно-ориентированного и визуального программирования.

Технология Microsoft ActiveX Data Objects обеспечивает универсальный доступ к источникам данных из приложений БД. Такую возможность предоставляют функции набора интерфейсов, созданные на основе общей модели объектов СОМ и описанные в спецификации OLE DB.

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

В Delphi была реализована возможность работы с технологией ADO через компоненты. Это позволяет быстро создавать системы управления базами данных любой сложности.

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

Четыре компонента наборов данных (ADODataSet, ADOTable, ADOQuery и ADOStoredProc) фактически полностью реализованы общим для них базовым классом TCustomADODataSet. Этот компонент несет ответственность за выполнение большинства функций, присущих набору данных. Производные компоненты являются тонкими оболочками, которые делают доступными для внешнего мира те или иные возможности базового компонента. Таким образом, компоненты обладают множеством общих черт.

Компоненты доступа к данным ADO могут использовать два варианта подключения к хранилищу данных. Это стандартный метод ADO и стандартный метод Delphi.

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

Connectionstring.

Свойство connectionstring предназначено для хранения информации о соединении с объектом ADO. В нем через точку с запятой перечисляются все необходимые параметры. Как минимум, это должны быть имена провайдера соединения или удаленного сервера:

Connectionstring: = 'Remote Server=ServerName;Provider=ProviderName';

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

Connectionstring: = 'Remote Provider=ProviderName';

…и параметры, необходимые провайдеру:

'User Name=User_Name;Password=Password';

Каждый компонент, обращающийся к хранилищу данных ADO самостоятельно, задавая параметры соединения в свойстве Connectionstring, открывает собственное соединение. Чем больше приложение содержит компонентов ADO, тем больше соединений может быть открыто одновременно.

Поэтому целесообразно реализовать механизм соединения ADO через специальный компонент - TADOConnection. Этот компонент открывает соединение, также заданное свойством Connectionstring, и предоставляет разработчику дополнительные средства управления соединением.

Настройку свойства connectionstring можно осуществлять с помощью мастера. В начале, нужно указать провайдер данных, в случае подключения к MS SQl Server - Microsoft OLE DB Provider for SQL Server. Пример показан на рисунке 5.

Рисунок 5 - Выбор провайдера данных

Затем, указываем имя сервера, указываем параметры для входа в сервер. После чего, становится доступным выбор каталога базы данных. Пример данного окна настройки показан на рисунке 6.

Рисунок 6 - Настройка подключения

В данном приложении для связи с базой данных используется технология ADO. Для подключения к БД компонент ADOConnection. Для получения данных из каждой таблицы используется компонент класса TADOTable. Для создания запросов к базе данных, например формирования отчётов применяется компонент класса TADOQuery.

На рисунке 7 представлен пример дата модуля, где настроена связь с БД.

Рисунок 7 - Модуль данных

5. Разработка приложения

Для формирования отчётов требуется разработать запросы к базе данных. Ниже представлены запросы для всех отчётов.

Для отчёта о графике медосмотров за период требуется запрос:

«select(varchar,s.sDate,104) +' '+ isNull(s.Description,'') as [Осмотр]

,isNull(pr.FIO,'Не начинался') as [Работник]

,case when isNull(r.Name,'''')='''' then '''' else isNull(r.Name,'''') end as [Причина]

,case when isNull(pr.FIO,'''')='' then '''' else (case when isNull(p.PassEnd,0)=1 then '' Пройдено'' else ''Не пройдено'' end) end as [Пройдено]Schedule sjoin Pass p on p.Schedule=s.IDjoin Personal pr on pr.ID=p.Personaljoin Reason r on r.ID=p.Reason».

Для отчёта о графике проверок за период требуется запрос:

«select(varchar,s.sDate,104) +' '+ isNull(s.Description,'') as [Проверка]

,isNull(pr.FIO,'Не начинался') as [Работник]

,case when isNull(r.Name,'''')='''' then '''' else isNull(r.Name,'''') end as [Причина]

,case when isNull(pr.FIO,'''')='' then '''' else (case when isNull(p.PassEnd,0)=1 then '' Пройдено'' else ''Не пройдено'' end) end as [Пройдено]Schedule sjoin Pass p on p.Schedule=s.IDjoin Personal pr on pr.ID=p.Personaljoin Reason r on r.ID=p.Reason».

Для отчёта о инцидентах с травмами за период требуется запрос:

«cast(i.ID as varchar(5))+'' ''+i.Name+'' ''+ti.Name as [Инцидент]

,r.Name+'' ''+p.FIO as [Участник]Incident ijoin actor a on a.Incident = i.IDjoin Personal p on p.ID=a.Personaljoin Role r on r.ID=a.Rolejoin TypeIncident ti on ti.ID=i.TypeIncident(i.sDate between :sdt and :edt) and (isNull(i.Travma,0)=0)

order by i.sDate».

Для отчёта о инцидентах по работнику за период требуется запрос:

«select.ID as [Номер]

,i.Name as [Название]

,ti.Name as [Тип]

,r.Name as [Роль]Incident ijoin actor a on a.Incident = i.IDjoin Personal p on p.ID=a.Personaljoin [Role] r on r.ID=a.Rolejoin TypeIncident ti on ti.ID=i.TypeIncident(a.Personal=:pr) and (i.sDate between :sdt and :edt) by i.sDate».

На рисунке 8 представлено главное окно, разработанное в среде Delphi. В верхней части окна расположена таблица инцидентов. Под ней расположены поля управления данными. Ниже расположена таблица участников инцидентов.

Рисунок 8 - Главное окно

Для редактирования списка участников требуется в нижней таблице вызвать всплывающее меню и выбрать пункт добавить. Откроется окно управление участниками - рисунок 9.

Рисунок 9 - Окно управление участниками

Для управления данными о медосмотрах требуется в главном меню выбрать пункты: «Основное» - «Медосмотр». Откроется окно, которое изображено на рисунке 10.

Рисунок 10 - Окно медосмотров

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

Рисунок 11 - Окно прохождения

Рассмотрим окно управления данными о предписаниях - рисунок 12. Окно выдержано в том же стиле.

Рисунок 12 - Окно предписаний

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

Рисунок 13 - Список инцидентов

6. Листинг программы

unit uMain;

interface

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.Menus, Vcl.Grids,

Vcl.DBGrids, Vcl.DBCtrls, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.Mask, Vcl.ExtCtrls;

TfrmMain = class(TForm)

pnlMain: TPanel;

pnlGrid: TPanel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

btnCancel: TButton;

btnSave: TButton;

pnlLeft: TPanel;

pnlRight: TPanel;

pmLeft: TPopupMenu;

pmRight: TPopupMenu;

edtFIO: TDBEdit;

dtpBirthdate: TDateTimePicker;

cbWork: TDBCheckBox;

edtPhone: TDBEdit;

cbSpec: TDBLookupComboBox;

grdLeft: TDBGrid;

grdRight: TDBGrid;

mm: TMainMenu;

imWorker: TMenuItem;

imEdit: TMenuItem;

N5: TMenuItem;

imSearch: TMenuItem;

imLibrary: TMenuItem;

imLibrary1: TMenuItem;

imLibrary3: TMenuItem;

imLibrary4: TMenuItem;

N14: TMenuItem;

imItem: TMenuItem;

imReport: TMenuItem;

imSettings: TMenuItem;

imLinking: TMenuItem;

imReport1: TMenuItem;

imReport2: TMenuItem;

imReport3: TMenuItem;

imAddLeft: TMenuItem;

imEditLeft: TMenuItem;

imDeleteLeft: TMenuItem;

imAddRight: TMenuItem;

imEditRight: TMenuItem;

imDeleteRight: TMenuItem;

Label6: TLabel;

edtNomer: TDBEdit;

cbCeh: TDBLookupComboBox;

Label5: TLabel;

imCeh2: TMenuItem;

cbSex: TDBComboBox;

edtRazr: TDBEdit;

Label7: TLabel;

Label8: TLabel;

procedure FormShow(Sender: TObject);

procedure pmLeftPopup(Sender: TObject);

procedure pmRightPopup(Sender: TObject);

procedure btnSaveClick(Sender: TObject);

procedure imEditClick(Sender: TObject);

procedure btnCancelClick(Sender: TObject);

procedure imAddLeftClick(Sender: TObject);

procedure imEditLeftClick(Sender: TObject);

procedure imAddRightClick(Sender: TObject);

procedure imEditRightClick(Sender: TObject);

procedure imDeleteLeftClick(Sender: TObject);

procedure imDeleteRightClick(Sender: TObject);

procedure imSearchClick(Sender: TObject);

procedure imItemClick(Sender: TObject);

procedure imLibraryClick(Sender: TObject);

procedure imLinkingClick(Sender: TObject);

procedure imReportClic(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

procedure ModeView(mode: boolean); //true - Veiw; false - Modify

public

{ Public declarations }

end;

frmMain: TfrmMain;

{$R *.dfm}

uDM, Search, uItem, uList, uVzisk, uLibrary, uReport;

//Дополнительные функцииTfrmMain.btnCancelClick(Sender: TObject);

DM.tblWorker.Cancel;

ModeView(true);;

TfrmMain.btnSaveClick(Sender: TObject);

DM.tblWorker.FieldByName('ДР').AsDateTime:=dtpBirthdate.DateTime;

DM.tblWorker.Post;

ModeView(true);;

TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);

frmSearch.Show;

self.Free;;

TfrmMain.FormShow(Sender: TObject);

ModeView(Tag=0);

if Tag=1 then DM.tblWorker.Append

else dtpBirthDate.DateTime:=DM.tblWorker.FieldByName('ДР').AsDateTime;

imSettings.Visible:=DM.user.admin;

imLibrary.Visible:=not DM.user.gost;

imWorker.Visible:=not DM.user.gost;;

TfrmMain.imAddLeftClick(Sender: TObject);

frm: TfrmList;

Application.CreateForm(TfrmList, frm);

DM.tblList.Append;

frm.Tag:=0;

frm.ShowModal;

DM.tblList.Refresh;;

TfrmMain.imAddRightClick(Sender: TObject);

frm: TfrmVzisk;

Application.CreateForm(TfrmVzisk, frm);

DM.tblVzisk.Append;

frm.Tag:=0;

frm.ShowModal;

DM.tblVzisk.Refresh;;

TfrmMain.imDeleteLeftClick(Sender: TObject);

if MessageDlg('Вы действительно хотите удалить запись?',mtWarning,mbOkCancel,0)=mrOk then

DM.tblList.Delete;;

TfrmMain.imDeleteRightClick(Sender: TObject);

if MessageDlg('Вы действительно хотите удалить запись?',mtWarning,mbOkCancel,0)=mrOk then

DM.tblVzisk.Delete;;

TfrmMain.imEditClick(Sender: TObject);

ModeView(false);

DM.tblWorker.Edit;;

TfrmMain.imEditLeftClick(Sender: TObject);

frm: TfrmList;

Application.CreateForm(TfrmList, frm);

DM.tblList.Edit;

frm.Tag:=1;

frm.ShowModal;;

TfrmMain.imEditRightClick(Sender: TObject);

frm: TfrmVzisk;

Application.CreateForm(TfrmVzisk, frm);

DM.tblVzisk.Edit;

frm.Tag:=1;

frm.ShowModal;;TfrmMain.imLibraryClick(Sender: TObject);

frm: TfrmLibrary;

Application.CreateForm(TfrmLibrary,frm);

frm.LoadLibrary((Sender as TMenuItem).Tag);

frm.ShowModal;

frm.Free;;TfrmMain.imReportClic(Sender: TObject);

frm: TfrmReport;

Application.CreateForm(TfrmReport,frm);

frm.Tag:=(Sender as TMenuItem).Tag;

frm.ShowModal;

frm.Free;;TfrmMain.imLinkingClick(Sender: TObject);

DM.SettingLink;;TfrmMain.imItemClick(Sender: TObject);

frm: TfrmItem;

Application.CreateForm(TfrmItem, frm);

frm.ShowModal;;TfrmMain.imSearchClick(Sender: TObject);

frmSearch.Show;

self.Free;;TfrmMain.ModeView(mode: boolean);//true - Veiw; false - Modify

pnlGrid.Enabled:= mode;

pnlMain.Enabled:= not mode;

btnSave.Visible:= not mode;

btnCancel.Visible:= not mode;;TfrmMain.pmLeftPopup(Sender: TObject);

if DM.user.gost then

begin

imAddLeft.Visible:=false;

imEditLeft.Visible:=false;

imDeleteLeft.Visible:=false;

end

else

begin

imAddLeft.Enabled:=edtNomer.Text<>'';

imEditLeft.Enabled:=grdLeft.DataSource.DataSet.RecordCount>0;

imDeleteLeft.Enabled:=grdLeft.DataSource.DataSet.RecordCount>0;

end;;TfrmMain.pmRightPopup(Sender: TObject);

if DM.user.gost then

begin

imAddRight.Visible:=false;

imEditRight.Visible:=false;

imDeleteRight.Visible:=false;

end

else

begin

imAddRight.Enabled:=edtNomer.Text<>'';

imEditRight.Enabled:=grdRight.DataSource.DataSet.RecordCount>0;

imDeleteRight.Enabled:=grdRight.DataSource.DataSet.RecordCount>0;

end;

end;.

Дамп базы данных

USE [master]

/****** Object: Database [TB] Script Date: 05/14/2017 11:12:25 ******/DATABASE [TB] ON PRIMARY

( NAME = N'TB', FILENAME = N'c:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008\MSSQL\DATA\TB.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )

LOG ON

( NAME = N'TB_log', FILENAME = N'c:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008\MSSQL\DATA\TB_1.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)DATABASE [TB] SET COMPATIBILITY_LEVEL = 100(1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))[TB].[dbo].[sp_fulltext_database] @action = 'enable'DATABASE [TB] SET ANSI_NULL_DEFAULT OFFDATABASE [TB] SET ANSI_NULLS OFFDATABASE [TB] SET ANSI_PADDING OFFDATABASE [TB] SET ANSI_WARNINGS OFFDATABASE [TB] SET ARITHABORT OFFDATABASE [TB] SET AUTO_CLOSE OFFDATABASE [TB] SET AUTO_CREATE_STATISTICS ONDATABASE [TB] SET AUTO_SHRINK OFFDATABASE [TB] SET AUTO_UPDATE_STATISTICS ONDATABASE [TB] SET CURSOR_CLOSE_ON_COMMIT OFFDATABASE [TB] SET CURSOR_DEFAULT GLOBALDATABASE [TB] SET CONCAT_NULL_YIELDS_NULL OFFDATABASE [TB] SET NUMERIC_ROUNDABORT OFFDATABASE [TB] SET QUOTED_IDENTIFIER OFFDATABASE [TB] SET RECURSIVE_TRIGGERS OFFDATABASE [TB] SET DISABLE_BROKERDATABASE [TB] SET AUTO_UPDATE_STATISTICS_ASYNC OFFDATABASE [TB] SET DATE_CORRELATION_OPTIMIZATION OFFDATABASE [TB] SET TRUSTWORTHY OFFDATABASE [TB] SET ALLOW_SNAPSHOT_ISOLATION OFFDATABASE [TB] SET PARAMETERIZATION SIMPLEDATABASE [TB] SET READ_COMMITTED_SNAPSHOT OFFDATABASE [TB] SET HONOR_BROKER_PRIORITY OFFDATABASE [TB] SET READ_WRITEDATABASE [TB] SET RECOVERY SIMPLEDATABASE [TB] SET MULTI_USERDATABASE [TB] SET PAGE_VERIFY CHECKSUMDATABASE [TB] SET DB_CHAINING OFF[TB]

/****** Object: Table [dbo].[Department] Script Date: 05/14/2017 11:12:26 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[Department](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

CONSTRAINT [PK_Department] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[TypeIncident] Script Date: 05/14/2017 11:12:26 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[TypeIncident](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

CONSTRAINT [PK_TypeIncident] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[Schedule] Script Date: 05/14/2017 11:12:26 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[Schedule](

[ID] [int] IDENTITY(1,1) NOT NULL,

[TypeSched] [int] NOT NULL,

[sDate] [datetime] NOT NULL,

[Description] [varchar](100) NULL,

CONSTRAINT [PK_Schedule] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[Role] Script Date: 05/14/2017 11:12:26 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[Role](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

CONSTRAINT [PK_Role] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[Reason] Script Date: 05/14/2017 11:12:26 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[Reason](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

CONSTRAINT [PK_Reason] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[Post] Script Date: 05/14/2017 11:12:26 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[Post](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

CONSTRAINT [PK_Post] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[Personal] Script Date: 05/14/2017 11:12:26 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[Personal](

[ID] [int] IDENTITY(1,1) NOT NULL,

[FIO] [varchar](60) NOT NULL,

[Birthdate] [datetime] NOT NULL,

[Sex] [char](1) NOT NULL,

[Phone] [varchar](15) NOT NULL,

[Address] [varchar](100) NULL,

[SNILS] [varchar](12) NULL,

[Passport] [varchar](10) NULL,

CONSTRAINT [PK_Personal] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[Pass] Script Date: 05/14/2017 11:12:26 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[Pass](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Schedule] [int] NOT NULL,

[Personal] [int] NOT NULL,

[Reason] [int] NULL,

[PassEnd] [bit] NULL,

CONSTRAINT [PK_Pass] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[Job] Script Date: 05/14/2017 11:12:26 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[Job](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Personal] [int] NOT NULL,

[Department] [int] NOT NULL,

[Post] [int] NOT NULL,

[EndJob] [bit] NULL,

CONSTRAINT [PK_Job] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

[ID] [int] IDENTITY(1,1) NOT NULL,

[sDate] [datetime] NOT NULL,

[Description] [varchar](100) NULL,

[Personal] [int] NOT NULL,

[EndInstruction] [bit] NULL,

CONSTRAINT [PK_Instruction] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[Incident] Script Date: 05/14/2017 11:12:26 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONANSI_PADDING ONTABLE [dbo].[Incident](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Name] [varchar](50) NOT NULL,

[TypeIncident] [int] NOT NULL,

[sDate] [datetime] NOT NULL,

[Description] [text] NULL,

[Travma] [bit] NULL,

CONSTRAINT [PK_Incident] PRIMARY KEY CLUSTERED

([ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]ANSI_PADDING OFF

/****** Object: Table [dbo].[Actor] Script Date: 05/14/2017 11:12:26 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[Actor](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Incident] [int] NOT NULL,

[Personal] [int] NOT NULL,

[Role] [int] NOT NULL,

CONSTRAINT [PK_Actor] PRIMARY KEY CLUSTERED

([ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: Table [dbo].[ListIncident] Script Date: 05/14/2017 11:12:26 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ONTABLE [dbo].[ListIncident](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Instruction] [int] NOT NULL,

[Incident] [int] NOT NULL,

CONSTRAINT [PK_ListIncident] PRIMARY KEY CLUSTERED

([ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

/****** Object: ForeignKey [FK_Pass_Personal] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[Pass] WITH CHECK ADD CONSTRAINT [FK_Pass_Personal] FOREIGN KEY([Personal])[dbo].[Personal] ([ID])UPDATE CASCADEDELETE CASCADETABLE [dbo].[Pass] CHECK CONSTRAINT [FK_Pass_Personal]

/****** Object: ForeignKey [FK_Pass_Reason] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[Pass] WITH CHECK ADD CONSTRAINT [FK_Pass_Reason] FOREIGN KEY([Reason])[dbo].[Reason] ([ID])UPDATE CASCADETABLE [dbo].[Pass] CHECK CONSTRAINT [FK_Pass_Reason]

/****** Object: ForeignKey [FK_Pass_Schedule] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[Pass] WITH CHECK ADD CONSTRAINT [FK_Pass_Schedule] FOREIGN KEY([Schedule])[dbo].[Schedule] ([ID])UPDATE CASCADEDELETE CASCADETABLE [dbo].[Pass] CHECK CONSTRAINT [FK_Pass_Schedule]

/****** Object: ForeignKey [FK_Job_Department] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[Job] WITH CHECK ADD CONSTRAINT [FK_Job_Department] FOREIGN KEY([Department])[dbo].[Department] ([ID])UPDATE CASCADEDELETE CASCADETABLE [dbo].[Job] CHECK CONSTRAINT [FK_Job_Department]

/****** Object: ForeignKey [FK_Job_Personal] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[Job] WITH CHECK ADD CONSTRAINT [FK_Job_Personal] FOREIGN KEY([Personal])[dbo].[Personal] ([ID])UPDATE CASCADEDELETE CASCADETABLE [dbo].[Job] CHECK CONSTRAINT [FK_Job_Personal]

/****** Object: ForeignKey [FK_Job_Post] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[Job] WITH CHECK ADD CONSTRAINT [FK_Job_Post] FOREIGN KEY([Post])[dbo].[Post] ([ID])UPDATE CASCADEDELETE CASCADETABLE [dbo].[Job] CHECK CONSTRAINT [FK_Job_Post]

/****** Object: ForeignKey [FK_Instruction_Personal] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[Instruction] WITH CHECK ADD CONSTRAINT [FK_Instruction_Personal] FOREIGN KEY([Personal])[dbo].[Personal] ([ID])UPDATE CASCADEDELETE CASCADETABLE [dbo].[Instruction] CHECK CONSTRAINT [FK_Instruction_Personal]

/****** Object: ForeignKey [FK_Incident_TypeIncident] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[Incident] WITH CHECK ADD CONSTRAINT [FK_Incident_TypeIncident] FOREIGN KEY([TypeIncident])[dbo].[TypeIncident] ([ID])UPDATE CASCADEDELETE CASCADETABLE [dbo].[Incident] CHECK CONSTRAINT [FK_Incident_TypeIncident]

/****** Object: ForeignKey [FK_Actor_Incident] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[Actor] WITH CHECK ADD CONSTRAINT [FK_Actor_Incident] FOREIGN KEY([Incident])[dbo].[Incident] ([ID])UPDATE CASCADEDELETE CASCADETABLE [dbo].[Actor] CHECK CONSTRAINT [FK_Actor_Incident]

/****** Object: ForeignKey [FK_Actor_Personal] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[Actor] WITH CHECK ADD CONSTRAINT [FK_Actor_Personal] FOREIGN KEY([Personal])[dbo].[Personal] ([ID])UPDATE CASCADEDELETE CASCADETABLE [dbo].[Actor] CHECK CONSTRAINT [FK_Actor_Personal]

/****** Object: ForeignKey [FK_Actor_Role] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[Actor] WITH CHECK ADD CONSTRAINT [FK_Actor_Role] FOREIGN KEY([Role])[dbo].[Role] ([ID])UPDATE CASCADEDELETE CASCADETABLE [dbo].[Actor] CHECK CONSTRAINT [FK_Actor_Role]

/****** Object: ForeignKey [FK_ListIncident_Incident] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[ListIncident] WITH CHECK ADD CONSTRAINT [FK_ListIncident_Incident] FOREIGN KEY([Incident])[dbo].[Incident] ([ID])UPDATE CASCADEDELETE CASCADETABLE [dbo].[ListIncident] CHECK CONSTRAINT [FK_ListIncident_Incident]

/****** Object: ForeignKey [FK_ListIncident_Instruction] Script Date: 05/14/2017 11:12:26 ******/TABLE [dbo].[ListIncident] WITH CHECK ADD CONSTRAINT [FK_ListIncident_Instruction] FOREIGN KEY([Instruction])[dbo].[Instruction] ([ID])UPDATE CASCADEDELETE CASCADETABLE [dbo].[ListIncident] CHECK CONSTRAINT [FK_ListIncident_Instruction]

Заключение

В данной курсовой работе требовалось спроектировать АРМ инженера по ТБ.

Определены функции приложения:

-       учёт персонала;

-       учёт травм и несчастных случаев;

-       формирование графиков медосмотров;

-       учёт результатов медосмотров;

-       учёт результатов тестирования персонала;

-       учёт нарушений охраны труда;

-       формирование отчётов.

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

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

Спроектирована физическая модель БД, база данных состоит из следующих таблиц: Post; Department; Job; Personal; Schedule; Reason; Pass; Incident; TypeIncident; Actor; Role; Instruction; ListIncident.

Построены запросы. Создан интерфейс пользователя.

Литература

1.      Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. - СПб.: Питер, 2015. - 368с.

.        Грофф Д., Вайнберг П., Оппель Э. SQL. Полное руководство. - СПб.: Вильямс, 214. - 960с.

.        Илюшечкин В. Основы использования и проектирования баз данных. Учебник. - М.:Юрайт, 2014. - 214с.

.        Коваленко В. Проектирование информационных систем. / Коваленко В. - М.: Форум, 2012. - 320с.

.        Кузнецов С. Базы данных. - М.: Academia, 2012. - 496с.

.        Основы использования и проектирования баз данных. Учебник / Илюшечкин В. - М.: Юрайт, 2014. - 214с.

.        Осипов Д. Delphi. Программирование для Windows, OS X, iOS и Android. - СПб.: БХВ-Петербург, 2016. - 310с.

Похожие работы на - Разработка базы данных для автоматизации деятельности специалиста по технике безопасности и охраны труда

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!