Министерство по образованию российской федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЭКОНОМИКИ И УПРАВЛЕНИЯ
КАФЕДРА ЭКОНОМИЧЕСКОЙ ИНФОРМАТИКИ
КУРСОВАЯ РАБОТА
ПО КУРСУ «БАЗЫ ДАННЫХ»
Тема: Акт о приеме-сдаче отремонтированных, реконструированных, модернизированных объектов основных средств
Номер группы: 9091
Наименование специальности: Прикладная информатика (в экономике)
Ф.И.О. студента и номер зачетной книжки: Ларин Максим Васильевич; 091378
Дата регистрации кафедрой: «_____» __________________ 20__ г.
Проверила: Родионова З.В.
(фамилия, имя, отчество)
Новосибирск
2012
Оглавление
Оглавление 2
1.Описание предметной области 9
2.Цели и задачи создания базы данных 11
3.Концептуальная модель базы данных 12
4.Реляционная модель базы данных 12
5.Модель данных 13
6.Создание таблиц 15
7.Структура таблиц и данные 16
--ЗАПРОСЫ 23
--1)вывести фио сотрудников долность которых - бухгалтер 23
select worker_name 23
from dbo.worker 23
where job='7'; 23
--2)вывести информацию о строительной фирме 23
select * 23
from dbo.build_org; 23
--3)вывести код сотрудника c фио петров петр петрович 23
select kod_worker 23
from dbo.worker 23
where worker_name='петров петр петрович' 23
--4)вывести фио сотрудника код которого - 4007 23
select worker_name 23
from dbo.worker 23
where kod_worker='4007' 23
--5)вывести объекты ОС инвентарный номер которых начинается с "8" 23
select * 23
from dbo.info_os_object 23
where inventory_number like '8%' 23
--6)вывести объекты ОС названия которых соответствуют коду "106" 23
select * 23
from dbo.info_os_object 23
where os_object_name='106' 23
--7)вывести обьекты ОС срок использования которых = "5" 23
select * 23
from dbo.info_os_object 23
where fact_usage= '5' 23
--8)вывести обьекты ОС срок использования которых > "50" 23
select * 23
from dbo.info_os_object 23
where fact_usage>'50' 23
--9) вывести обьекты ОС срок использования которых < "10" 23
select * 23
from dbo.info_os_object 23
where fact_usage< '10' 23
--10) вывести имя о заказчике которы йнаходится на улице "фабричная" 23
select name 23
from dbo.zakazchik 23
where adres like 'фабричная%' 23
--ВСТРОЕНЫЕ ФУНКЦИИ 24
--1)вывести количество составленных актов 24
select COUNT (act_number) as [количество актов] 24
from dbo.act_ps 24
--2)кличество объектов ОС 24
select COUNT (info_kod) as [количество объектов] 24
from dbo.info_os_object 24
--3) кличество актов составленных в 2011 году 24
select COUNT (act_number) as [акты за 2011] 24
from dbo.act_PS 24
where sign_date like '2011%' 24
--4)количество работ стоимостью 50000 24
select COUNT (service_price) as [услуги 50000] 24
from dbo.service 24
where service_price='50000' 24
--5)количество клиентов фирмы 24
select COUNT (kod_zakazchika) as [количество клиентов] 24
from dbo.zakazchik 24
--Сложные функции (group by & having) 24
--1.Вывести количество составленных документов на каждую дату подписания актов. 24
select sign_date, COUNT(act_number)as[Кол-во документов] 24
from act_PS 24
group by sign_date 24
--2.Вывести код должности, в которых более 1 сотрудников. 24
select job, COUNT(kod_worker)as[Кол-во сотрудников] 24
from dbo.worker 24
group by job 24
having COUNT(job)>1 24
--3.Вывести код услуги, стоимость которых больше или равно 50000. 24
select service_price, COUNT(servce_name)as[Кол-во услуг] 24
from dbo.service 24
group by service_price 24
having COUNT(service_price)>=50000 24
--4.Вывести коды должностей и количество сотрудников, работающих по этой должности. 24
select job, COUNT(job)as[Кол-во сотрудников] 24
from dbo.worker 24
group by job 24
--5.Сколько раз каждый из сотрудников подписывал акт. 24
select response_person, COUNT(act_number)as[Кол-во актов] 24
from dbo.act_PS 24
group by response_person 24
--6. Сколько ремонтов осуществлено по каждому обьекту ОС. 25
select result, COUNT(act_number)as[Кол-во ремонтов] 25
from dbo.act_PS 25
group by result 25
--8. Сколько раз подписывал акт сотрудник с табельным номером 4003. 25
select response_person, COUNT(act_number)as[Кол-во актов] 25
from dbo.act_PS 25
group by response_person 25
having response_person='4003' 25
--10. Показать профессию на которой работает 1 сотрудник 25
SELECT kod_job AS код_должности 25
FROM dbo.worker,dbo.job 25
where (select COUNT(dbo.job.kod_job) from dbo.job WHERE dbo.worker.job=dbo.job.kod_job)=1 25
GROUP BY kod_job 25
--Хранимые процедуры 25
--1. Какую должность занимает каждый сотрудник. 25
go 25
create procedure doljnost_sotrudnika 25
as 25
select dbo.worker.worker_name, dbo.job.job_name 25
from dbo.worker, dbo.job 25
where dbo.worker.job=dbo.job.kod_job 25
go 25
exec doljnost_sotrudnika 25
--2. список обьектов отремонтированных в конкретную дату 25
go 25
create procedure act @r date 25
as 25
select dbo.os_object.os_object_kod, dbo.act_PS.sign_date,dbo.act_PS.finish_date, dbo.act_PS.result 25
from dbo.os_object,dbo.act_PS 25
where dbo.act_PS.result=dbo.os_object.os_object_kod and sign_date=@r 25
go 25
exec act'2011.03.12' 25
--3. По табельному номеру определить профессию 25
GO 25
CREATE PROCEDURE prof_vibran_sotryd12 @kod int 25
AS 25
SELECT kod_worker,worker_name,job_name 25
FROM dbo.worker, dbo.job 25
WHERE dbo.worker.job= dbo.job.kod_job and dbo.worker.kod_worker=@kod 25
go 25
EXEC prof_vibran_sotryd12 @kod=4004 25
--4. Возвращает должность по коду сотрудника 25
Go 26
create procedure work 26
AS 26
select dbo.worker.kod_worker,dbo.job.kod_job 26
from dbo.worker,dbo.job 26
where dbo.worker.kod_worker=dbo.job.kod_job 26
Go 26
exec work 26
--5. Возвращает код должности и ФИО по табельному номеру 26
GO 26
CREATE PROCEDURE koddol @TAB_N int 26
AS 26
SELECT dbo.job.kod_job,kod_worker,worker_name 26
FROM dbo.job,dbo.worker 26
WHERE dbo.worker.job=dbo.job.kod_job and dbo.worker.kod_worker=@TAB_N 26
go 26
EXEC koddol @TAB_N=4006 26
--6. Возвращает табельный номер и ФИО по коду должности 26
GO 26
CREATE PROCEDURE n_fio @job int 26
AS 26
SELECT kod_worker,dbo.job.kod_job,worker_name 26
FROM dbo.worker,dbo.job 26
WHERE dbo.worker.job=dbo.job.kod_job and dbo.job.kod_job=@job 26
go 26
EXEC n_fio @job=4 26
--7. Возвращает номер акта по коду всех отремонтированных обьектов 26
Go 26
create procedure nact 26
AS 26
select dbo.act_PS.act_number,dbo.os_object.os_object_kod 26
from dbo.act_PS,dbo.os_object 26
where dbo.act_PS.act_number=dbo.os_object.os_object_kod 26
Go 26
exec nact 26
--8. Показать данные о акта 26
GO 26
CREATE PROCEDURE actsigndate @actn_N int 26
AS 26
SELECT act_number,response_person,result 26
FROM dbo.act_PS,dbo.worker,dbo.os_object 26
WHERE dbo.act_PS.response_person=dbo.worker.worker_name and dbo.act_PS.result=dbo.os_object.os_object_name and dbo.act_PS.act_number=@actn_N 26
go 26
EXEC actsigndate @actn_N=6001 26
--9. Показать табельный номер и код должности 27
GO 27
CREATE PROCEDURE koddponworker @worker_N int 27
AS 27
SELECT kod_worker,kod_job 27
FROM dbo.worker,dbo.job 27
WHERE dbo.worker.job=dbo.job.kod_job and dbo.worker.kod_worker=@worker_N 27
EXEC koddponworker @worker_N=4002 27
--10. Возвращает табельный номер и ФИО по квалификации 27
GO 27
CREATE PROCEDURE kvalif_trebyem @kval_tred varchar (50) 27
AS 27
SELECT kod_worker,worker_name 27
FROM dbo.worker,dbo.job 27
WHERE dbo.worker.job=dbo.job.kod_job and 27
dbo.job.job_name=@kval_tred 27
go 27
EXEC kvalif_trebyem @kval_tred='прораб' 27
--Триггеры 27
--1.При добавлении новой записи выводит сообщение:"В таблицу Должности внесена новая запись!" 27
use build2 27
go 27
create trigger dobavlenie 27
on dbo.job 27
for insert 27
as print 'В таблицу Должности внесена новая запись!' 27
go 27
insert into dbo.job values(9,'уборщик') 27
27
--2.При удалении записи выводит сообщение: "Из таблицы Должности удалена запись!" 27
go 27
create trigger udalenie 27
on dbo.job 27
for delete 27
as print 'Из таблицы Работник удалена запись!' 27
go 27
delete from dbo.job where kod_job=3 27
27
--3.При изменении таблицы выводит сообщение:"Таблица Должности изменена!" 27
go 27
create trigger izmenenie 27
on dbo.job 27
for update 27
as print 'Таблица Должности изменена!' 27
go 27
update dbo.job 27
set job_name=('сантехник') where kod_job=9 27
27
--Представления 28
--1. Выводит таблицу Работник и заполняет в ней столбцы Наименование должности и Наименование структурного подразделения, соответственно из таблиц Должность и Структурное подразделение. 28
use build2 28
go 28
create view [kod_worker_job] as 28
select kod_worker as "Код сотрудника", worker_name as "ФИО", kod_job as "Должность" 28
from dbo.worker,dbo.job 28
where dbo.worker.job=dbo.job.kod_job 28
--2. Выводит таблицу затраты и заполняет в ней столбцы тип работ и Обьект ОС. 28
go 28
create view [zatrat] as 28
select kod_zatrat, os_object, work_type, adittion 28
from dbo.money_lost,dbo.service, dbo.os_object 28
where dbo.money_lost.work_type=dbo.service.service_kod and dbo.money_lost.os_object=dbo.os_object.os_object_kod 28
Заключение 29
Список используемой литературы 30