Создание базы данных Кадры предприятия

25



Министерство образования и науки Республики Казахстан

Карагандинский государственный технический университет

















ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовому проекту

по дисциплине «Технология разработки баз данных»

Тема:

Создание базы данных «Кадры предприятия»



























Караганда 2009


Аннотация



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


Содержание



Введение

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

2. Выбор программного обеспечения

3. Структура базы данных

3.1 Логическая модель данных

3.1.1 Структура таблиц

3.1.2 Логическая модель БД

3.2 Концептуальная модель данных

3.3 Нормализация отношений

4. SQL-запросы

5. Интерфейс программы

Заключение

Список использованных источников


Введение



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

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

Моделью данных называется набор понятий для описания и обработки данных, связей м/у ними и ограничений, накладываемых на данные. Существует 3 категории моделей данных: объектные, физические и логические. Объектные модели описывают состояние объекта и его поведение. Физические модели содержат сведения о том, какие данные хранятся, а также пути доступа к данным и пр. Логические модели делятся на 3 типа: реляционные, иерархические, сетевые.

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

Примерами реляционной СУБД является FoxPro, My SQL, Microsoft SQL-cервер, Oracle и т.д.

Наиболее распространенными СУБД, основанной на иерархической модели являются TDMS, MARK IV, System 2000 и пр.

Примерами СУБД сетевой модели являются IDS, IDMS, DTBG и т.п.

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




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



По заданию к курсовой работе необходимо было создать базу данных «Кадры предприятия», включающую в себя 3 таблицы:

1 Работник (табельный номер, ФИО, должность, цех, бригада, оклад...)

2 Цех (номер, наименование, ФИО начальника...)

3 Бригада (номер, наименование, цех, ФИО бригадира...)

Помимо создания таблиц необходимо было

Задача 1 Выдать список работников, поступивших на предприятие в течение последнего месяца.

Задача 2 Выдать состав бригад по стажу работы.

Задача 3 Выдать ФИО и адреса бригадиров.

Задача 4 Выдать ФИО и адреса начальников цехов.

Задача 5 Выдать ФИО работников, выходящих в этом году на пенсии

Задача 6 Выдать ФИО работников, уходящих в текущем месяце в отпуск.

Задача 7 Выдать список работающих пенсионеров.

Задача 8 Выдать список работников, находящихся в декретном отпуске.

Для задачи создания базы данных необходимо:

		Разработать структуру базы данных.

	Создать таблицы и установить взаимосвязь между ними.

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

	Разработать и сформировать отчеты.

	Организовать справочную систему.




2. Выбор программного обеспечения



Целью выполнения курсовой работы является создание базы данных “Кадры предприятия”. А также приобретение практических навыков проектирования баз данных и разработки программного обеспечения по управлению базами данных с использованием СУБД. На примере создаваемой базы данных необходимо научиться создавать таблицы, связывать их, писать запросы, как средствами СУБД, так и с помощью языка SQL, научиться разрабатывать формы, отчеты, системное меню и умело пользоваться всем многообразием инструментов СУБД.

			В качестве среды разработки базы данных, была выбрана СУБД MSSQL Server 2000. Эта СУБД была выбрана в качестве инструмента потому, что она способна работать на серверной основе, и имеет большие функциональные возможности. В качестве языка программирования был выбран язык Borland Delphi. Данная среда позволяет легко работать с базой данных, созданной в MSSQL Server 2000, редактировать и дополнять ее.

				Язык SQL(Structured Query Language) в настоящее время стал фактически стандартным языком доступа к реляционным базам данных. Целью стандартизации является переносимость приложений между различными СУБД. 

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

			предложение определения данных (определение баз данных, а также определение и уничтожение таблиц и индексов);

			предложение на выбор данных; 

			предложение управления данными (предоставление и отмена привилегии на доступ данным и др.);

			предложение на модификацию данных (добавление, удаление, изменение данных).

			Кроме того, предоставляет возможность выполнять в этих предложениях:

			арифметические вычисления, обработку текстовых строк;

			упорядочивание строк, столбцов при выводе содержимого таблиц;

			запоминание выводимого по запросу содержимого таблицы;

			создание представлений (виртуальных таблиц);

			агрегирование данных: группирование данных и применение к этим группам таких операций, как среднее, сумма, максимум, минимум, число элементов. 

			К инструментальным средствам, позволяющим обеспечить простое и эффективное использование MSSQL Server можно отнести:

			Enterprise Manager;

			Service Manager;

			Query Analyzer. 

			База данных SQL Server – это контейнер объектов, предназначенных для хранения, записи и извлечения данных в безопасном режиме – содержит следующие компоненты: 

			Таблицы;

			Хранимые процедуры;

			Индексы;

			Представления. 

			
3. Структура базы данных



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



	Созданная база данных содержит три таблицы, хранящих информацию о Цехах, Бригадах и Работниках предприятия.

	Информацию о Цехах содержит таблица «Ceh», имеющая следующие атрибуты:

	«Nomer_ceha» -уникальный номер цеха, выступающий в роли первичного ключа таблицы (int 4);

	«Naimenovanie_ceha» - символьный атрибут, содержит название цеха (char 20);

	«FIO_nach_ceha» - содержит фамилии начальников цехов (char 30);

	«Adres» - содержит адреса начальников цехов (char 15);

	«Brigada» включает в себя информацию о бригадах

	1 «Nomer_brigadi» -индивидуальний номер бригады (int 4);

	2 «Naimenovanie_brigadi» - полное название бригады, является первичным ключом (char 20);

	«Naimenovanie_Ceha» - символьный атрибут, содержит название цеха (char 20);

	4 «FIO_brigadira» - содержит ФИО бригадиров (char 30);

	5 «Adres» - содержит адреса бригадиров (char 15)

	«Rabotnik» содержит информацию обо всех работниках предприятия

		«tabel_nomer» - индивыдуальный номер работника, является первичным ключом (int 4);

	«FIO_rabotnika»- ФИО работника (char 30);

	«Doljnost» - Должность (char 15)

	«Ceh» - название цеха, в котором работает сотрудник (char 10)

	«Naimenovanie_brigadi» - наименование бригады, в которой состоит сотрудник (char 15)

	«Data_postupleniya» - дата поступления сотрудника на работу (date)

	«Primechanie» - примечание есть

	«Staj» - стаж работы, если есть



3.2 Логическая модель БД



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

Наглядно связь между таблицами изображена на рисунке 1.

			



Рисунок 1 - Структура базы данных



3.3 Концептуальная модель данных



Концептуальное моделирование – это переход от неформализованного описания предметной области к ее формальному изложению с помощью специальных языковых средств. На рисунке 2 представлена концептуальная модель БД «WC3 CyberSport DataBase».

										


Номер цеха

Бригада

Работник

Nomer_ceha

Naimenovanie_ceha

FIO_nach_ceha

Adres_nach_ceha

Nomer_brigadi

Naimenovanie_brigadi

Naimenovanie_Ceha

FIO_brigadira

Adres_brigadira

tabel_nomer

FIO_rabotnika

Doljnost

Ceh

Naimenovanie_brigadi

Data_postupleniya

Primechanie

Staj

Цехи

Бригады

Работники

Рисунок 2 – Концептуальная модель данных




отпуск

ЯЗЫК

ДАТА РОЖ.

СТАЖ

ДОЛЖНОСТЬ

АДРЕС

ФИО СОТР.

ШИФР СОТР.

ФИО ЗАВ.КАФ.

НАЗВАН.

ШИФР.КАФ

ФИО ДЕК.

НАИМЕН.

ШИФР ФАК.4. SQL-запросы



[Список работников, поступивших на предприятие в течение последнего месяца]

SELECT FIO_rabotnika,Doljnost, Data_postupleniya 

FROM Rabotnik 

WHERE 	((Data_postupleniya) >('12.01.2007))



[Состав бригад по стажу работы]

SELECT FIO_rabotnika, Brigada, Staj 

FROM Rabotnik 

WHERE (Brigada='Бригада_1')



[ФИО и адрес бригадиров]

SELECT FIO_brigadira, Adres 

FROM Brigada



[ФИО и адрес начальников]

SELECT FIO_nach_ceha, Adres 

FROM Ceh



[ФИО работников, выходящих в этом году на пенсию]

SELECT FIO_rabotnika, Primechanie 

FROM Rabotnik WHERE Primechanie='на пенсию'



[ФИО работников, уходящих в текущем месяце в отпуск]

SELECT FIO_rabotnika, Primechanie 

FROM Rabotnik WHERE Primechanie='в отпуске'



[Список работающих пенсионеров]

SELECT FIO_rabotnika, Primechanie 

FROM Rabotnik WHERE Primechanie='пенсионер'



[Список работников, находящихся в декретном отпуске]

SELECT FIO_rabotnika, Primechanie 

FROM Rabotnik WHERE Primechanie='декрет'




5. Интерфейс программы



Интерфейс программы состоит из одного окна, содержащего две основные вкладки При запуске программы открывается окно с активной вкладкой «Таблицы» (рисунок 3). 

Здесь переключатели с названиями всех таблиц БД «Кадры предприятия»





Рисунок 3 - Окно программы



При нажатии на переключатель «Цех», «Бригада» или «Работник» появляется таблица, содержащая данные о цехе, бригаде или работниках (рисунок 4).

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





Рисунок 4 –Окно программы


Аналогично, нажав на вкладку «Запросы», выводится список всех запросов (рисунок 5).





Рисунок 5 – Окно программы.



 

Рисунок 6 – Результат запроса: «Список работников, поступивших на предприятие в течение последнего месяца»





Рисунок 7 - Результат запроса: «Состав бригады по стажу работы»




Рисунок 8 - Результат запроса: «ФИО и адрес бригадиров»





Рисунок 9. Результат запроса: «ФИО и адрес начальников цеха»





Рисунок 10. Результат запроса: «ФИО рабо тников по примечанию»




Рисунок 11 – Отчет по запросу: «ФИО и адрес бригадиров»


Заключение



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

- построение удобного пользовательского интерфейса;

-справки;

-ввод, корректировка,обработка данных;

-формирование отчетов и запросов с возможностью вывода нужной информации.


Список использованных источников



	Терлецкая А.М. – лекции.

	Т.Карпова – Базы данных: модели, разработка, реализация. Уч. пособие – СПб: Питер,2001. 

	Бойко В.В., Савинков В.М. Проектирование баз данных информационных систем. – М.: Финансы и статистика, 1989. – 351 с. 




Приложение А. Листинг программы



unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, DB, ADODB, ComCtrls,

QRCtrls, QuickRpt, Menus;

type

TForm1 = class(TForm)

ADOConnection1: TADOConnection;

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

ADOTable1: TADOTable;

DataSource1: TDataSource;

DataSource2: TDataSource;

ADOTable2: TADOTable;

DBGrid2: TDBGrid;

DBNavigator2: TDBNavigator;

ADOTable3: TADOTable;

DataSource3: TDataSource;

DBGrid3: TDBGrid;

DBNavigator3: TDBNavigator;

RadioGroup1: TRadioGroup;

RadioGroup2: TRadioGroup;

Button1: TButton;

ADOQuery1: TADOQuery;

DataSource4: TDataSource;

DBGrid4: TDBGrid;

ComboBox1: TComboBox;

Label1: TLabel;

ComboBox2: TComboBox;

Label2: TLabel;

Button2: TButton;

QuickRep1: TQuickRep;

TitleBand1: TQRBand;

QRLabel1: TQRLabel;

ColumnHeaderBand1: TQRBand;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

DetailBand1: TQRBand;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

procedure RadioGroup1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure RadioGroup2Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure ComboBox2Change(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

// Выбор таблицы (Цех, Бригада или Работник)

procedure TForm1.RadioGroup1Click(Sender: TObject); 

begin

if RadioGroup1.ItemIndex=0 then // Цех

begin

dbgrid1.Visible:=true;

dbNavigator1.Visible:=true;

dbgrid2.Visible:=false;

dbNavigator2.Visible:=false;

dbgrid3.Visible:=false;

dbNavigator3.Visible:=false;

end;

if RadioGroup1.ItemIndex=1 then // Бригада

begin

dbgrid2.Visible:=true;

dbNavigator2.Visible:=true;

dbgrid1.Visible:=false;

dbNavigator1.Visible:=false;

dbgrid3.Visible:=false;

dbNavigator3.Visible:=false;

end;

if RadioGroup1.ItemIndex=2 then // Работник

begin

dbgrid3.Visible:=true;

dbNavigator3.Visible:=true;

dbgrid2.Visible:=false;

dbNavigator2.Visible:=false;

dbgrid1.Visible:=false;

dbNavigator1.Visible:=false;

end;

end;



// Кнопка Выполнить запрос

procedure TForm1.Button1Click(Sender: TObject);

begin

DbGrid4.Visible:=true;

case RadioGroup2.ItemIndex of

0: // Запрос 'Список работников, поступивших на //предприятие в течение последнего месяца'

begin

QRLabel1.Caption:='Список работников, поступивших на предприятие в течение последнего месяца';

QRLabel2.Caption:='ФИО работника';

QRLabel3.Caption:='Должность';

ADOQuery1.SQL.Text:='SELECT FIO_rabotnika,Doljnost, Data_postupleniya FROM Rabotnik WHERE 	((Data_postupleniya) >(''12'+'-'+'01'+'-'+'2007''))';

ADOQuery1.Active:=true;

QRDBText1.DataField:='FIO_rabotnika';

QRDBText2.DataField:='Doljnost';

button2.Enabled:=true;

end;

1: // Запрос 'Состав бригады по стажу работы'

begin

QRLabel1.Caption:='Состав '+Combobox2.Text+' по стажу работы';

QRLabel2.Caption:='ФИО работника';

QRLabel3.Caption:='Стаж';

ADOQuery1.SQL.Text:='SELECT FIO_rabotnika, Naimenovanie_brigadi, Staj FROM Rabotnik WHERE (Naimenovanie_brigadi='''+Combobox2.Text+''')';

ADOQuery1.Active:=true;

QRDBText1.DataField:='FIO_rabotnika';

QRDBText2.DataField:='Staj';

button2.Enabled:=true;

end;

2: // Запрос 'ФИО и адрес бригадиров'

begin

QRLabel1.Caption:='ФИО и адрес бригадиров';

QRLabel2.Caption:='ФИО бригадира';

QRLabel3.Caption:='Адрес';

ADOQuery1.SQL.Text:='SELECT FIO_brigadira, Adres FROM Brigada';

ADOQuery1.Active:=true;

QRDBText1.DataField:='FIO_brigadira';

QRDBText2.DataField:='Adres';

button2.Enabled:=true;

end;



3: // Запрос 'ФИО и адрес начальников'

begin

QRLabel1.Caption:='ФИО и адрес начальников';

QRLabel2.Caption:='ФИО начальника цеха';

QRLabel3.Caption:='Адрес';

ADOQuery1.SQL.Text:='SELECT FIO_nach_ceha, Adres FROM Ceh';

ADOQuery1.Active:=true;

QRDBText1.DataField:='FIO_nach_ceha';

QRDBText2.DataField:='Adres';

button2.Enabled:=true;

end;


4: // Запрос 

begin

QRLabel1.Caption:='ФИО работников по запросу';

QRLabel2.Caption:='ФИО работника';

QRLabel3.Caption:='Примечание';

ADOQuery1.SQL.Text:='SELECT FIO_rabotnika, Primechanie FROM Rabotnik WHERE Primechanie='''+Combobox1.Text+'''';

ADOQuery1.Active:=true;

QRDBText1.DataField:='FIO_rabotnika';

QRDBText2.DataField:='Primechanie';

button2.Enabled:=true;

end;

end;

end;

procedure TForm1.RadioGroup2Click(Sender: TObject);

begin

Case Radiogroup2.ItemIndex of

0:

begin

button2.Enabled:=false;

Label1.Visible:=false;

Combobox1.Visible:=false;

Label2.Visible:=false;

Combobox2.Visible:=false;

end;

1:

begin

button2.Enabled:=false;

Label1.Visible:=false;

Combobox1.Visible:=false;

Label2.Visible:=true;

Combobox2.Visible:=true;

end;

2:

begin

button2.Enabled:=false;

Label1.Visible:=false;

Combobox1.Visible:=false;

Label2.Visible:=false;

Combobox2.Visible:=false;

end;

4:

begin

button2.Enabled:=false;

Label1.Visible:=true;

Combobox1.Visible:=true;

Label2.Visible:=false;

Combobox2.Visible:=false;

end;

3:

begin

button2.Enabled:=false;

Label1.Visible:=false;

Combobox1.Visible:=false;

Label2.Visible:=false;

Combobox2.Visible:=false;

end;

end;

end;


// Кнопка «Сформировать отчет»

procedure TForm1.Button2Click(Sender: TObject);

begin

quickrep1.Preview;

end;

procedure TForm1.ComboBox2Change(Sender: TObject);

begin

button2.Enabled:=false;

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

button2.Enabled:=false;

end;

end.