/*** Площадь суши и земли *****/TRIGGER plosh_sushSushainsert, update@S_plosh int, @Z_plosh int@S_plosh=S.Ploshad_sushi_mln_km2, @Z_plosh=Z.Ploshad_mln_km2SUSHA SZEMLYA ZS.Zemlya=Z.Zemlya(@S_plosh>=@Z_plosh)
begintran('Площадь суши не может быть больше площади земли', 16, 10)
end;SUSHAploshad_sushi_mln_km2=511
where rakurss=N'Суша'
/****Площадь воды и земли ******/
CREATE TRIGGER plosh_VodaVodainsert, update@V_plosh int, @Z_plosh int@V_plosh=V.ploshad_vody_mln_km2, @Z_plosh=Z.Ploshad_mln_km2Voda VZEMLYA ZV.Zemlya=Z.Zemlya(@V_plosh>=@Z_plosh)
begin tran('Площадь воды не может быть больше площади земли', 16, 10)
end;VODAploshad_vody_mln_km2=511
where rakurs=N'Вода'
/**** Площадь океана не может быть больше площади ракурса воды*****/
CREATE TRIGGER Plosh_OkeanOkeanyinsert, update@O_plosh int, @V_plosh int@O_plosh=O.Ploshad_mln_km2, @V_plosh=V.ploshad_vody_mln_km2Okeany O Voda VO.Zemlya=V.Zemlya(@O_plosh>=@V_plosh)
begin tran('Площадь океана не может быть больше ракурса воды', 16, 10)
end;OkeanyPloshad_mln_km2=362
/**** Площадь континента не может быть больше площади суши ******/
CREATE TRIGGER Plosh_KontKontinentyinsert, update@K_plosh int, @S_plosh int@K_plosh=K.Ploshad_mln_km2, @S_plosh=S.ploshad_sushi_mln_km2Kontinenty KSUSHA SK.Rakurss=S.Rakurss(@K_plosh>=@S_plosh)
begintran('Площадь континента не может быть больше площади суша', 16, 10)
end;KontinentyPloshad_mln_km2=149
/****Площадб страны не может быть больше площади континента *****/
CREATE TRIGGER Str_KontStranyupdate@S_Plosh int, @K_Plosh int@S_Plosh=S.Ploshad_km2, @K_Plosh=K.Ploshad_mln_km2*1000000 Strany SKontinenty KS.Kontinent_ID=K.Kontinent_ID(@K_Plosh>=@S_Plosh)
begintran('Площадь страны не может быть больше площади континента!', 16, 10)
end;StranyPloshad_km2=9976139strana_ID=73StranyPloshad_km2=44000000
where strana_ID=79
/***** Таблица для журналирования (Имена)******/
CREATE TABLE jour
(_operats varchar(30),datetime,varchar(30),_table varchar(30),_NAME nvarchar(30),_NAME nvarchar(30)
);
/**** Okean_NAME ****/TRIGGER jour1Okeanyupdate@new_n nvarchar(30), @old_n nvarchar(30)@new_n=I.Okean_NAME, @old_n=O.Okean_NAMEOkeany O, inserted iO.Okean_ID=I.Okean_IDINTO jour('Obnovlena', current_TIMESTAMP, current_USER, 'Okeany', @new_n, @old_n);OkeanyOkean_NAME=N'Твва'Okean_ID=1* from jour
/*** Pustynya_NAME ****/TRIGGER jour2Pustyniupdate@new_n nvarchar(30), @old_n nvarchar(30)@new_n=I.Pustinya_NAME, @old_n=P.Pustinya_NAMEPustyni P, inserted iP.Pustinya_NAME=I.Pustinya_NAMEINTO jour('Obnovlena', current_TIMESTAMP, current_USER, 'Pustyni', @new_n, @old_n);PustyniPustinya_NAME=N'Аравийские'Pustinya_ID=1* from Jour TRIGGER jour2
/**** Таблица журналирования (Объем)*****/
CREATE TABLE jour_plosh
(_operats varchar(30),datetime,varchar(30),_table varchar(30),_Plosh int,_Plosh int
);TRIGGER jour_plosh2Okeanyupdate@new_p float, @old_p
float@new_p=I.Obyem_mln_km3, @old_p=O.Obyem_mln_km3Okeany O, inserted iINTO
jour_plosh('Obnovlena', current_TIMESTAMP, current_USER, 'Okeany', @new_p,
@old_p);okeanyObyem_mln_km3=20.32Okean_ID=4* from jour_plosh
6. Стратегии безопасности базы данных
Под безопасностью подразумевается защита базы данных от несанкционированного доступа. В современных СУБД поддерживается избирательный и обязательный тип стратегий обеспечения безопасности базы данных.
Безопасность базы данных реализуется с помощью стратегии избирательного управления безопасность. Сущность данной стратегии заключается в том, что для каждого пользователя базы данных устанавливаются различные права и полномочиями при работе с различными объектами.
Было выделено 4 основных пользователя «Meru», «Inka»,
«Tima», «Nura»:
CREATE LOGIN Meru with password='mmm',_DATABASE=kurs_LAURA;LOGIN Inka with password='iii',_DATABASE=kurs_LAURA;LOGIN Tima with password='ttt',_DATABASE=kurs_LAURA;LOGIN Nura with password='nnn',_DATABASE=kurs_LAURA;user Meru1 for login Meru;user Inka1 for login Inka;user Tima1 for login Tima;user Nura1 for login Nura;ROLE AAA;ROLE BBB;ROLE ccc;_addrolemember 'AAA', 'Meru1';_addrolemember 'AAA', 'Inka1';_addrolemember 'BBB', 'Tima1';
sp_addrolemember 'CCC', 'Nura1';
Установим права для каждой роли:
GRANT EXECUTE on St_Kont to AAAEXECUTE on Mor_Okean to
AAAEXECUTE on St_More to AAAEXECUTE on Pr_okean to AAAEXECUTE on St_Proliv to
AAAEXECUTE on Rer_Ok to AAAEXECUTE on Rek_Str to AAAEXECUTE on Ozer_Str to
AAAEXECUTE on Kont_Vodopad to AAACREATE TABLE on database:: kurs_laura to
AAAupdate on database:: kurs_laura to AAAinsert on database:: kurs_laura to
AAAselect on database:: kurs_LAURA to BBBupdate on database:: kurs_laura to
BBBcreate table on database:: kurs_laura to BBB
Заключение
В ходе курсовой работы была спроектирована и реализована базы данных учебный атлас мира.
В результате проектирования базы данных была построена модель процессов предметной области, осуществлено логическое и физическое проектирование базы данных, написаны запросы на выборку и манипуляцию данными на языке SQL.
Ограничение целостности и безопасности базы данных было обеспечено за
счет использования представлений, хранимых процедур, триггеров, ссылочной
целостности, делегирования прав и полномочий.
Список литературы
1. Хансен Г., Хансен Д. Базы данных: разработка и управление. - М.: ЗАО «Издательство БИНОМ», 1999.
2. Питер Роб, Карлос Коронел Системы баз данных: проектирование, реализация и управление, 5-е издание, - BHV Санкт-Петербург, 2004. -1040 с.,
. Кренке Д. Теория и практика построения баз данных. Изд.9 - Питер, 2005.
4. MICROSOFT SQL SERVER 2005. Реализация и обслуживание. Учебный курс Microsoft/ Пер. с английского - М. «Русская редакция», Спб.: «Питер», 2007. - 768 стр. ил.
. Мамаев Е. MS SQL Server 2000. Проектирование и реализация баз данных. Сертификационный экзамен. - BHV, СПб. 2004г., 416с
6. Плю Р., Стефенс Р., Райан К. Освой самостоятельно SQL за 24 часа. - М.: Издательский дом «Вильямс», 2000.
. Кандзюба С.П., Громов В.Н. Delphi 6/7. Базы данных и приложения. - СПб: ООО «ДиаСофт», 2002.
. Географическая энциклопедия