Сетевая база данных "Трудовая биржа"

 

Содержание


Введение

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

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

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

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

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

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

.1 Триггер для добавления данных

.2 Триггер для удаления данных

.3 Триггер для обновления данных

. Разработка технологий доступа к базе данных

.1 Выбор пользователей базы данных

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

. Экономическое обоснование результатов внедрения программного продукта

. Требования к техническому обеспечению

. Инструкция по эксплуатации базы данных и клиентского приложения

Заключение

Список используемой литературы

Приложение 1. Экранные формы приложения

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


Введение


Приложение «DBcontroller» было разработано по заказу государственного учреждения «Ставропольская Трудовая Биржа», которое занимается трудоустройством безработных граждан. Данное приложение разработано для автоматизации рутинных процессов и более точного их контроля. База данных занимает одно из главенствующих мест в системе учета и контроля данного предприятия и требует особо внимания к своей работоспособности, при ее разработке учитывались мнение, как начальников данной организации, так и простых операторов ПК, непосредственно работающих с базой данных. Данное приложение использует технологии .Net Framework 4.0 в алгоритмически-логическом аспекте приложения, а так же Jquery Framework для создания диаграмм и отчетов. В качестве хранилища данных была использована реляционная база, управляемая языком SQL, из наличия использованных средств следует, что данное приложение будет использовано на операционных системах семейства Windows, однако может быть перенесено и на другие операционные системы, поскольку .Net легко переносимо с помощью кросс-платформенной технологии MONO. Остальные же элементы приложения уже изначально являются переносимыми.


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


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


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


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


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


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


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


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


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

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


На основе предыдущих данных была сформирована база данных.


Рисунок 2.1 - диаграмма


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


При концептуальном проектировании были выбраны основные сущности: работник и работа.


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

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


.1.2 Описание связей

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


Таблица 2.1

Связи в базе данных

Родительская таблицаДочерняя таблицаТип связиTable_1Table_21:МTable_3Table_41:M

.1.3 ER-диаграмма


Рисунок 2.1 - ER-диаграмма


2.2 Даталогическая модель


Таблица 2.2

Состав таблицы: таблица_1

имяТипРазмер поляНулевые значениясodeint16Not NULL[First Name]nchar20NULL[Last Name]nchar20NULLINNint16NULLprofessionnchar20NULLStatuschar35NULL

Таблица 2.3

Состав таблицы таблица_2

имяТипРазмер поляНулевые значенияСode1int16Not NULL[length of service]tinyint8NULL[higher education]nchar10NULL

Таблица 2.4

Состав таблицы таблица_3

ИмяТипРазмер поляНулевые значенияcode2int16Not NULLNamenchar20NULLprofession_neednchar20NULLStatnchar35NULL

Таблица 2.5

Состав таблицы таблица_4

имяТипРазмер поляНулевые значенияSome_codeint16Not NULL[Work]nchar35NULL

2.2.1Диаграмма связи по полям

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


Таблица 2.6

Функциональные зависимости между атрибутами таблицы «Table_1»

Наименование атрибутовФункциональные зависимостисode [First Name] [Last Name] INN profession Status

Таблица 2.7

Функциональные зависимости между атрибутами таблицы «Table_2»

Наименование атрибутовФункциональные зависимостиСode1 [length of service] [higher education]

Таблица 2.8

Функциональные зависимости между атрибутами таблицы «Table_3»

Наименование атрибутовФункциональные зависимостиcode2 Name profession_need Stat

Таблица 2.9

Функциональные зависимости между атрибутами таблицы «Table_4»

Наименование атрибутовФункциональные зависимостиSome_code [Work]база данный dbcontrolle трудоустройство


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


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

)выборка данных из связанных таблиц;


select [first_name], [higher education] ,[INN],[profession],[STATUS] from table_1, table_2 where table_1.code=table_2.code


Произвести выборку полей имени и высшего образования, ИНН, профессии и статуса из таблиц 1 и 2, где соответствующие поля кода совпадают


Таблица 3.1

Результат выполнения запроса 1

First Namehigher educationINNprofessionSTATUSВасилийСГУ53465476СлесарьFreeМарияМГТУ23423434Оп. станка с ЧПУFreeПетрВАУ42342342МонтажникFreeМарфаВШУ12312313ТехникFreeЕврипитNone31231245ПлотникFreeМаркСЕВ31231254Укладчик БетонаFreeМаринаМГУ34234234ШпалоукладчицаNon-free

2)выборка с использованием оператора (естественного) соединения;


SELECT * FROM table_1JOIN table_2 ON table_1.code = table_2.code


Произвести естественное соединение тех записей таблиц, где поля код совпадают


Таблица 3.2

Результат выполнения запроса 2

codeFirst NameLast NameINNprofessionSTATUSlength of servicehigher education9ВасилийТеркин53465476СлесарьFree24СГУ11МарияНиколаева23423434Оп. станка с ЧПУFree48МГТУ12ПетрПечкин42342342МонтажникFree60ВАУ13МарфаВасильева12312313ТехникFree72ВШУ14ЕврипитНикополидис31231245ПлотникFree84None15МаркАврелий31231254Укладчик БетонаFree96СЕВ16МаринаМаринова34234234ШпалоукладчицаNon-free36МГУ

3)выборка с использованием шаблона;


Select [first_name] from table_1 where [second_name] Like


Вывести имена людей из таблицы 1, у которых фамилия начинается на букву Н


Таблица 3.3

Результат выполнения запроса 3

First NameМарияЕврипид

)выборка информации в заданном диапазоне;


SELECT <#"justify">Вывести все имена из таблицы 1, чей код находится между 5 и 10


Таблица 3.3

Результат выполнения запроса 3

First NameВасилий

)выборка с использованием механизма подзапросов.


Select *talble_2code = (select code from table_1 where code = 5)


Вывести все поля из таблицы 2, где значение кода из таблицы равно 5 из соответствующей таблицы 1

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



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


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


Рисунок 4.1 - представление результатов выборки



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


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

[DB]

/****** Object: StoredProcedure [dbo].[vasya] Script Date: 06/13/2011

:48:41 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ON

- =============================================

- Author:<Author,,Name>

- Create date: <Create Date,,>

- Description:<Description,,>

- =============================================PROCEDURE [dbo].[vasya]

- Add the parameters for the stored procedure hereBEGIN

- SET NOCOUNT ON added to prevent extra result sets from

- interfering with SELECT statements.NOCOUNT ON;

- Insert statements for procedure heredbo.Table_1 Set code = code+2dbo.Table_2 Set [length of service] = [length of service]*12


Данная процедура увеличивает поле code в таблице 1 и выводит количество опыта каждого работника в месяцах, а не в годах.

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


6.1 Триггер для добавления данных


Данный триггер разрешает добавлять лишь только те данные, которые удовлетворяют условию, где поле INN больше 100000000 или меньше 999999999, если поле будет заполнено неверными данными, то программа выдаст сообщение: 'Неверно введен номер'.


SET ANSI_NULLS ONQUOTED_IDENTIFIER ONTRIGGER [dbo].[INSERTION_CHECK][dbo].[Table_1]INSERT, UPDATENOCOUNT ON;@INN INT@INN = (SELECT [INN] FROM [inserted]) (@INN<100000000 OR @INN>999999999)

BEGIN

PRINT 'Неверно введен номер ИНН' ROLLBACK TRAN

END@@ERROR != 0'Error occurred during related tables' ROLLBACK TRAN

END


.2 Триггер для удаления данных


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


SET ANSI_NULLS ONQUOTED_IDENTIFIER ONTRIGGER [dbo].[DELETE_CHECK][dbo].[Table_1]DELETENOCOUNT ON;((SELECT Count(*) FROM [deleted] WHERE ([First Name] LIKE

'Вас%')) >0 )'Нельзя удалить человека с именем Вася!!!' ROLLBACK TRAN@@ERROR != 0'Error occurred during related tables' ROLLBACK TRAN

END


6.3 Триггер для обновления данных


Данный триггер запрещает производить обновление поля INN, для уже существующих записей.


SET ANSI_NULLS ONQUOTED_IDENTIFIER ONTRIGGER [dbo].[UPDATE_CHECK][dbo].[Table_1]UPDATENOCOUNT ON;(NOT ( (SELECT [INN] FROM [inserted]) = (SELECT [INN] FROM [deleted]) ) )'Нельзя менять ИНН' ROLLBACK TRAN@@ERROR != 0'Error occurred during related tables' ROLLBACK TRAN

END


7. Разработка технологий доступа к базе данных


7.1 Выбор пользователей базы данных


В данном случае было выбрано 3 группы пользователей: администраторы, секретари и непосредственно работники (рис. 7.1).


Рисунок 7.1 - Выбор роли


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


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



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


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

В данном приложении осуществляется обмен данных между jquery framework для вывода отчетов, в результате чего автоматически открывается и просматривается вызванный отчет, главное приложение взаимодействует непосредственно SQL Server.



8. Экономическое обоснование результатов внедрения программного продукта


Данный программный проект является относительно не требовательным к ресурсам как сервера, так и отдельной рабочей станции. Для сервера достаточно будет не менее 500 мегабайт оперативной памяти и одноядерного процессора семейства Intel Pentium 4, для рабочей станции - не менее 400 мегабайт оперативной памяти и одноядерного процессора семейства Intel Pentium 4. Затраты на прокладку ЛВС надо рассматривать в каждом отдельном случае.



9. Требования к техническому обеспечению


Объем ОЗУ для эффективной работы приложения определяется по формуле:


, (1)


где - минимальные требования со стороны операционной системы, - минимальный размер подгружаемых модулей, - дополнительное пространство ОЗУ.

Итак, имеем:


V= 200+150+50=400 мегабайт


Свободное пространство на жестком диске определяется равенством:


, (2)


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

Итак, имеем


W=2+4+1=9 мегабайт



10. Инструкция по эксплуатации базы данных и клиентского приложения


Вызов данной программы не отличается от запуска любой другой программы из среды операционной систем: пользователю необходимо скопировать файлы приложения на жесткий диск и запустить приложение с расширением .exe в корневом каталоге программы. Данное приложение для работы требует наличие установленного .net framework 3.5 версии и выше, Jquery framework (поставляется вместе с приложением). Никаких дополнительных действий от пользователя не требуется.



Заключение


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


Список используемой литературы


1.Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных: Учебник для высших учебных заведений / Под ред. проф. А.Д. Хомоненко. - Издание второе, дополненное и переработанное. - СПб.: КОРОНА принт, 2002.- 672 с.

2.Глушаков С.В., Ломотько Д.В. Базы данных: Учебный курс. - Харьков: Фолио; Ростов н/Д: Феникс; Киев: Абрис, 2000. - 504 с.

.Мишенин А.И. Теория экономических информационных систем -М.: Финансы и статистика, 1999. - 168 с.

4.Смирнова Г.Н., Сорокин А.А., Тельнов Ю.Ф. Проектирование экономических информационных систем: Учебник для высших учебных заведений / Под ред. Ю. Ф.


ПРИЛОЖЕНИЕ 1


Экранные формы приложения


Рисунок 1 - выбор роли


Рисунок 2 - ввод логина и пароля


Рисунок 3- главное окно программы


Рисунок 4 - вид отчета о заходе пользователями в систему


Рисунок 4 - вид отчета-диаграммы



ПРИЛОЖЕНИЕ 2


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


Файл: Form1.cs

public partial class Form1 : Form

{Form1()

{();

}string login;void Form1_Load(object sender, EventArgs e)

{(login == "noob")

{ textBox1.Enabled = false; dataGridView1.Enabled = false; ataGridView2.Enabled = false;.Enabled = false; button2.Enabled = false; menuStrip1.Enabled = false;

}(login == "user")

{ report1ToolStripMenuItem.Enabled= false; }

// TODO: данная строка кода позволяет загрузить данные в таблицу "dBDataSet.Table_2". При необходимости она может быть перемещена или удалена..table_2TableAdapter.Fill(this.dBDataSet.Table_2);

// TODO: данная строка кода позволяет загрузить данные в таблицу "dBDataSet.Table_1". При необходимости она может быть перемещена или удалена..table_1TableAdapter.Fill(this.dBDataSet.Table_1);

}

void Form1_FormClosing(object sender, FormClosingEventArgs e)

{.table_1TableAdapter.Update(this.dBDataSet);.table_2TableAdapter.Update(this.dBDataSet);.Exit();

}

void button1_Click(object sender, EventArgs e)

{.table_1TableAdapter.Connection.Open();.table_2TableAdapter.Connection.Open();query = textBox1.Text;.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(query, .table_1TableAdapter.Connection);

{

// Выполняем комманду. в результате новая запись будет добавлена

cmd.ExecuteReader().Close();

}

{.Show("Ошибка!!!", "Ошибка!!!", MessageBoxButtons.OK, .Error, MessageBoxDefaultButton.Button1);

}.table_1TableAdapter.Fill(this.dBDataSet.Table_1);.table_1TableAdapter.Connection.Close();.table_2TableAdapter.Fill(this.dBDataSet.Table_2);.table_2TableAdapter.Connection.Close();.Text = "";

}

void button2_Click(object sender, EventArgs e)

{newform = new Form2();.ShowDialog();

}

void report1ToolStripMenuItem_Click(object sender, EventArgs e)

{newform = new Form4();.ShowDialog();

}

void report2ToolStripMenuItem_Click(object sender, EventArgs e)

{target = "file:///" + Application.StartupPath + "/HTMLPage2.htm";

//Use no more than one assignment when you test this code.

//string target = ''ftp://ftp.microsoft.com'';

//string target = ''C:\Program Files\Microsoft Visual Studio\INSTALL.HTM'';


try

{.Diagnostics.Process.Start(target);

}

(.ComponentModel.Win32Exception noBrowser)

{(noBrowser.ErrorCode == -2147467259).Show(noBrowser.Message);

}(System.Exception other)

{.Show(other.Message);

}

}

void saveToolStripMenuItem_Click(object sender, EventArgs e)

{.table_1TableAdapter.Update(this.dBDataSet);.table_2TableAdapter.Update(this.dBDataSet);

}

void exitWithoutSaveingToolStripMenuItem_Click(object sender, EventArgs e)

{.Exit();

}void saveAndExitToolStripMenuItem_Click(object sender, EventArgs e)

{.table_1TableAdapter.Update(this.dBDataSet);.table_2TableAdapter.Update(this.dBDataSet);.Exit();

}void button2_Click_1(object sender, EventArgs e)

{.table_1TableAdapter.Connection.Open();.table_2TableAdapter.Connection.Open();query = "Execute dbo.vasya";.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(query, this.table_1TableAdapter.Connection);

try

{

// Выполняем комманду. в результате новая запись будет добавлена.ExecuteReader().Close();

}

{.Show("Ошибка!!!", "Ошибка!!!", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);

}.table_1TableAdapter.Fill(this.dBDataSet.Table_1);.table_1TableAdapter.Connection.Close();.table_2TableAdapter.Fill(this.dBDataSet.Table_2);.table_2TableAdapter.Connection.Close();

}void button3_Click(object sender, EventArgs e)

{

}

}

}partial class Form2 : Form

{Form2()

{();

}void button1_Click(object sender, EventArgs e)

{(((textBox1.Text == "admin") & (textBox2.Text == "282209")) | ((textBox1.Text == "user") & (textBox2.Text == "user")) | ((textBox1.Text == "noob") & (textBox2.Text == "noob")))

{.Hide();newform = new Form1();.login = textBox1.Text;.ShowDialog();

}

{ MessageBox.Show("Ошибка!!!", "Ошибка!!!", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); }

StreamWriter sw; // объект потока для записи

StringBuilder builder; // построитель строк= new StringBuilder();

// добавляем текст.AppendFormat("<p>"+textBox1.Text +" {0:F}. " + "</p> ", DateTime.Now);

// создаем поток для записи - file.txt с добавлением в конец файла, кодировка UTF8

using (sw = new StreamWriter(@Application.StartupPath + "/HTMLPage1.htm", true, Encoding.UTF8))

{.Write(builder.ToString()); // запись сформированного списка строк

// сбрасываем буфера и даем доступ к файлу

sw.Close();

}

}void Form2_FormClosing(object sender, FormClosingEventArgs e)

{.Exit();

}

}

}


Содержание Введение . Описание предметной области . Проектирование базы данных . Организация выборки информации из базы данных . Разработка п

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ