Отдел кадров предприятия

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

кКодСотрудникаNumberФИОStringКодПодразделенияNumberКодДолжностиNumberОбразованиеStringПолStringВозрастNumberТелефонNumber

В результате данного этапа были определены сущности логической модели, а также свойства сущностей и ключевые атрибуты, логические связи между сущностями с помощью программы Erwin Data Modeler.

 

3.СОЗДАНИЕ БАЗЫ ДАННЫХ В СУБД MS ACCESS

 

На основе проведенного анализа предметной области и проведенного в ErWin моделирование базы данных для управления АЗС была создана автоматически база данных в СУБД Access. Схема созданной базы данных приведена на рисунке 3.1.

 

 

Рисунок 3.1 Схема базы данных в СУБД MS ACCESS.

 

4.Создание базы данных в SQL Server Management Studio

 

Следующим этапом в выполнении задания является создание SQL-скрипта, который сгенерирует аналогичную базу данных для MS SQL Server 2005. Код создания базы данных и ввода в таблицы некоторых значений, приведен в ПРИЛОЖЕНИИ 1.

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

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

-Номер

КодСотрудника

КоличествоЧасов

Пропуски

Причина

Контракт

-КодКонтракта

КодСотрудника

ДатаОт

ДатаДо

Заметки

Должность

-КодДолжности

Должность

Премия

Разряд

Оклад

Подразделение

-КодПодразделения

Подразделение

Численность

Руководитель

Военнообязанные

-Номер

КодСотрудника

СемейноеПоложение

ДолгЛет

Отсрочка

Сотрудник

-КодСотрудника

ФИО

КодПодразделения

КодДолжности

Образование

Пол

Возраст

Телефон

А также мы ввели в таблицу значения, представленные на рисунке 4.1.

 

Рисунок 4.1. Созданные таблицы и введенные в них значения.

 

5 ВЫПОЛНЕНИЕ ПРОЦЕДУР И ФУНКЦИЙ

 

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

Код данной процедуры представлен ниже:

 

 

CREATE PROCEDURE pr_ПодсчетСтрок

@ИмяТаблицы VARCHAR(20),

@ЧислоСтрок INT OUTPUT( @ИмяТаблицы = Подразделения )@ЧислоСтрок = COUNT(*)ПодразделенияIF ( @ИмяТаблицы = Должность )@ЧислоСтрок = COUNT(*)ДолжностьIF ( @ИмяТаблицы = Сотрудник )@ЧислоСтрок = COUNT(*)СотрудникIF ( @ИмяТаблицы = ШтатноеРасписание )@ЧислоСтрок = COUNT(*)ШтатноеРасписаниеIF ( @ИмяТаблицы = Контракт )@ЧислоСтрок = COUNT(*)КонтрактIF ( @ИмяТаблицы = Военнообязанные)@ЧислоСтрок = COUNT(*)Военнообязанные@NAME_TABLE VARCHAR(20), @COUNT_STR INT@NAME_TABLE = Контрактpr_ПодсчетСтрок @NAME_TABLE, @COUNT_STR OUTPUT @NAME_TABLE [НАЗВАНИЕ_ТАБЛИЦЫ],@COUNT_STR [ЧИСЛО_СТРОК]

 

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

 

Рисунок 6.1. Результаты работы процедуры.

 

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

Код данной процедуры представлен ниже:

 

SELECT *КонтрактPROCEDURE pr_ИзменениеДаты

@ФЛАГ VARCHAR(20),

@КОЛ_ДНЕЙ INT( @ФЛАГ = + )

UPDATE Контракт

SET ДатаОт = ДатаОт + @КОЛ_ДНЕЙ

ELSE

UPDATE Контракт

SET ДатаОт = ДатаОт - @КОЛ_ДНЕЙ

IF( @ФЛАГ = + )

UPDATE Контракт

SET ДатаДо = ДатаДо + @КОЛ_ДНЕЙ

ELSE

UPDATE Контракт

SET ДатаДо = ДатаДо - @КОЛ_ДНЕЙ

GO@FLAG VARCHAR(20), @KOL_DNEJ INT@FLAG = +@KOL_DNEJ = 4 pr_ИзменениеДаты @FLAG, @KOL_DNEJ

SELECT *

FROM Контракт

GO

 

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

 

Рисунок 6.2. Результаты работы процедуры.

 

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

Код данной процедуры представлен ниже:

 

CREATE PROCEDURE pr_MinAvrMaxSum_КоличествоЧасов

@ИМЯ_СТОЛБЦА VARCHAR(20),

@МИНИМУМ INT OUTPUT,

@СРЕДНЕЕ INT OUTPUT,

@МАКСИМУМ INT OUTPUT,

@СУММАРНОЕ INT OUTPUT

IF ( @ИМЯ_СТОЛБЦА = КоличествоЧасов )

SELECT @МИНИМУМ = MIN(КоличествоЧасов), @СРЕДНЕЕ = AVG(КоличествоЧасов), @МАКСИМУМ = MAX(КоличествоЧасов), @СУММАРНОЕ = SUM(КоличествоЧасов)

FROM ШтатноеРасписание

IF ( NOT @ИМЯ_СТОЛБЦА LIKE КоличествоЧасов )

SELECT @МИНИМУМ = 0, @СРЕДНЕЕ = 0, @МАКСИМУМ = 0, @СУММАРНОЕ = 0@MIN INT, @MAX INT, @AVG INT, @SUM INT, @IMYA_ST VARCHAR(20)@IMYA_ST = КоличествоЧасовpr_MinAvrMaxSum_КоличествоЧасов @IMYA_ST, @MIN OUTPUT, @AVG OUTPUT, @MAX OUTPUT, @SUM OUTPUT @MIN [МИН], @AVG [СРЕДН], @MAX [МАКС], @SUM [СУММ]

GO

 

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

 

Рисунок 6.3. Результаты работы процедуры.

 

 

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

Код данной процедуры представлен ниже:

 

C