Автор работы: Пользователь скрыл имя, 05 Декабря 2013 в 06:33, курсовая работа
База данных ассоциации шеф-поваров необходима для оперативного учета сотрудников и партнеров ассоциации; динамичного контроля актуальной информации.
Целью работы является составление и заполнение базы данных ассоциации шеф-поваров, заполнение всех сотрудников, партнеров, блюд и заказов.
Введение 4
Проектирование базы данных 5
Создание и заполнение таблиц 12
Запросы 35
Представления. 56
Процедуры 57
Триггеры 69
Курсор 71
Заключение. 74
Список используемой литературы 75
Рисунок 5.6 - Процедура 6
go
create procedure dbo.product2 @polka int as
select dbo.product.name_product, mesto_na_sklade,srok_dney, name_recept
from dbo.product, dbo.sklad, dbo.product_sklad, dbo.recept, dbo.recept_product
where dbo.product.product_id = dbo.product_sklad.product_id
AND dbo.product_sklad.sklad_id = dbo.sklad.sklad_id
AND dbo.product.product_id = dbo.recept_product.product_id
AND dbo.recept.recept_id =dbo.recept_product.recept_id
and dbo.sklad.polka_na_sklade = @polka
go
exec dbo.product2 @polka = '14';
Рисунок 5.7 - Процедура 7
go
create procedure dbo.Partnet @partnerr varchar(max) as
select dbo.partner.fio, telefon, uslugi, name_asp
from dbo.partner, dbo.assocciacia_shef_povarov
where dbo.partner.asp_id
= dbo.assocciacia_shef_povarov.
AND dbo.partner.fio = @partnerr;
go
exec dbo.Partnet @partnerr = 'Шипилов Андрей Васильевич';
Рисунок 5.8 - Процедура 8
go
create procedure dbo.NomerOkanchivaetsya5 @NomerTelefona varchar(max) as
select dbo.partner.fio, telefon
from dbo.partner
where dbo.partner.telefon LIKE @NomerTelefona
ORDER BY fio;
go
exec dbo.NomerOkanchivaetsya5 @NomerTelefona = '%5';
Рисунок 5.9 - Процедура 9
go
create procedure dbo.InfOSklade @sklad int as
select Polka_na_sklade, name_product
from dbo.sklad, dbo.Product, dbo.product_sklad
where dbo.sklad.Polka_na_sklade = @sklad
AND dbo.product_sklad.product_id=
and dbo.product_sklad.sklad_id=
go
exec dbo.InfOSklade @sklad = '4';
Рисунок 5.10 - Процедура 10
go
create procedure dbo.DataPoNomeryKlienta @klient int as
select dbo.Zakaz3.data_zakaza, Zakaz_id
from dbo.zakaz3, dbo.klient, dbo.klient_bludo1
where dbo.klient.klient_id = @klient
AND dbo.klient.klient_id=dbo.
and dbo.klient_bludo1.klient_
go
exec dbo.DataPoNomeryKlienta @klient = '4';
Рисунок 5.11 - Процедура 11
go
create procedure dbo.Nomerzakaza @dada date, @cena money as
select dbo.Zakaz3.zakaz_id, adres_dostavki
from dbo.zakaz3, dbo.klient, dbo.klient_bludo1
where dbo.Zakaz3.data_zakaza = @dada
AND dbo.klient.klient_id=dbo.
and dbo.klient_bludo1.klient_
and dbo.Zakaz3.cena_bluda_za_
go
exec dbo.Nomerzakaza @dada = '2013-05-03', @cena = '400';
Рисунок 5.12 - Процедура 12
go
create procedure dbo.PoBludu @kodBluda int as
select dbo.bludo1.name_bludo,
dbo.recept.name_recept, dbo.bludo1.time_prigotovlenia_
from dbo.product, dbo.recept, dbo.bludo1, dbo.recept_product
where dbo.bludo1.bludo_id = @kodBluda
AND dbo.bludo1.recept_product_id=
and dbo.recept_product.product_id=
and dbo.recept_product.recept_id=
and dbo.bludo1.bludo_id=@kodBluda ;
go
exec dbo.PoBludu @kodBluda = '8'
Рисунок 5.13 - Процедура 13
create procedure productcount @count int output as
select @count = count (product_id)
from product
declare @count int
exec productcount @count output
print 'Продуктов'
print @count
Рисунок 5.14 - Процедура 14
create procedure summazakazov1 @j int output as
select @j = SUM(cena_bluda_za_zakaz_rub)
from Zakaz3, bludo1, klient_bludo1
where dbo.Zakaz3.klient_bludo_id=
and dbo.klient_bludo1.bludo_id=
declare @j int
exec summazakazov1 @j output
print 'Сумма заказов'
print @j
Рисунок 5.15 - Процедура 15
create procedure kol_voPovarov1 @f int output as
select @f = count(povar_id)
from Povar, assocciacia_shef_povarov, shef
where dbo.Povar.shef_id=dbo.shef.
and dbo.shef.asp_id=dbo.
and dbo.assocciacia_shef_povarov.
declare @f int
exec kol_voPovarov1 @f output
print 'Количество поваров'
print @f
Рисунок 5.16 - Процедура 16
create procedure kol_voPart1 @x int output as
select @x = count(partner_id)
from Partner, assocciacia_shef_povarov
where dbo.partner.asp_id=dbo.
and dbo.assocciacia_shef_povarov.
declare @x int
exec kol_voPart1 @x output
print 'Количество партнеров'
print @x
Рисунок 5.17 - Процедура 17
create procedure NomerPart1 @x int output as
select @x = dbo.partner.telefon
from Partner, assocciacia_shef_povarov
where dbo.partner.asp_id=dbo.
and dbo.assocciacia_shef_povarov.
declare @x int
exec NomerPart1 @x output
print 'Номер'
print @x
Рисунок 5.18 - Процедура 18
create procedure ImyaPovara @x varchar(max) output as
select @x = dbo.povar.name_povar
from Povar, shef
where dbo.povar.shef_id=dbo.shef.
and dbo.shef.shef_id='3'
declare @x varchar(max)
exec ImyaPovara @x output
print 'Номер'
print @x
Рисунок 5.19 - Процедура 19
create procedure Imyaklienta2 @Imyaklienta varchar(max) output as
select @Imyaklienta = dbo.klient.adres_dostavki
from bludo1, klient, klient_bludo1
where dbo.klient.klient_id=dbo.
and dbo.klient_bludo1.bludo_id=
and dbo.bludo1.bludo_id='7'
declare @Imyaklienta varchar(max)
exec Imyaklienta2 @Imyaklienta output
print 'Имя'
print @Imyaklienta
Рисунок 5.20 - Процедура 20
go
create trigger Zapret_na_dobavlenie_zakaza_
on dbo.Zakaz3
after insert
as
begin
if(select cena_bluda_za_zakaz_rub from inserted)<'100'
begin
ROLLBACK TRANSACTION
print 'Меньше 100 рублей. Добавить запись нельзя!!!'
end
else print 'Добавлена в таблицу'
end;
go
insert into Zakaz3(cena_bluda_za_zakaz_
go
insert into Zakaz3(cena_bluda_za_zakaz_
Рисунок 6.1 - Триггер 1
go
create trigger YdalenieStarihZazov
on dbo.Zakaz3
after DELETE
as
begin
if (select Data_zakaza from deleted) > '2013.01.01'
begin
ROLLBACK TRANSACTION
print 'Удалить запись нельзя'
end
else
print 'Заказ удален'
end;
go
delete from dbo.Zakaz3 where Data_zakaza =
(select Data_zakaza from dbo.zakaz3 where zakaz_id = '19');
Рисунок 6.2 - Триггер 2.1
Рисунок 6.3 - Триггер 2.2
declare
@klient_id varchar(50),
@adres_dostavki varchar(80),
@name_bludo varchar(50),
@data_zakaza varchar(50),
@zakaz_id varchar(50),
@cena_bluda_za_zakaz_rub varchar(10)
declare Cursor_inf_o_zakaze cursor local for
select
dbo.klient.klient_id, adres_dostavki, name_bludo, data_zakaza, zakaz_id, cena_bluda_za_zakaz_rub
from
dbo.klient, dbo.zakaz3, dbo.bludo1, dbo.klient_bludo1
where
dbo.klient.klient_id = '2'
AND dbo.klient.klient_id = dbo.klient_bludo1.klient_id
AND dbo.klient_bludo1.bludo_id = dbo.bludo1.bludo_id
AND dbo.zakaz3.klient_bludo_id
= dbo.klient_bludo1.klient_
open Cursor_inf_o_zakaze
fetch next from Cursor_inf_o_zakaze into
@klient_id,@adres_dostavki,
@name_bludo,
@data_zakaza,@zakaz_id, @cena_bluda_za_zakaz_rub
' Номер заказа Дата заказа
+-----------------------------
|'+@zakaz_id+'|
Номер клиента Адрес доставки
+-----------------------------
|'+@klient_id+'|
Блюдо
+-----------------------------
| '+@name_bludo+' |
Цена блюда
+-----------------------------
| ' +@cena_bluda_za_zakaz_rub+' |
'
close Cursor_inf_o_zakaze
deallocate Cursor_inf_o_zakaze
Рисунок 7.1 - Курсор
В ходе выполнения практической части курсовой работы мной была изучена литература, касающаяся предложенной предметной области, после чего выполнены необходимые работы на этапах моделирования и создания базы данных. Я освоила подход к проектированию базы данных на основе концептуальной модели и технологий создания базы данных в архитектуре клиент-сервер.
База данных, разработанная для пользователей, контролирует и учитывает заказы, какие блюда заказаны, какие повара готовили блюда и сколько продуктов было израсходовано.
1. Карпова Т.С. «Базы данных: модели, разработка, реализация: Учебник для вузов» — СПб :Питер,2002
2. Диго, С.М. Базы данных : проектирование и использование : учеб. для вузов по спец. "Прикладная информатика (по областям)" / С. М. Диго .- М. : Финансы и статистика, 2005 .- 591 с .(МОРФ)
Рисунок 10.1 - Приложение 1.1
Рисунок 10.2 - Приложение 1.2
Рисунок 10.3 - Приложение 1.3
Рисунок 11.1 - Приложение 2.1
Рисунок 11.2 - Приложение 2.2
Рисунок 11.3 - Приложение 2.3
Рисунок 12.1 - Приложение 3.1
Рисунок 12.2 - Приложение 3.2
Рисунок 12.3 - Приложение 3.3