Проектирование и реализация базы данных учебного атласа мира
Определение базовых сущностей предметной области. Представление базы данных реляционной моделью. Построение ER-диаграмм. Функции и архитектура информационной системы. Создание таблиц БД на языке SQL Server. Запросы на выборку и манипулирование данными.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 06.05.2015 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
@Poisk nvarchar(50)
as begin
select * from Okeany
where Okean_NAME like (@Poisk + N'%')
end
exec poisk_Ok N'Тих'
CREATE PROC poisk_St
@Poisk nvarchar(50)
as begin
select * from Strany
where Strana_NAME like (@Poisk + N'%')
end
exec poisk_St N'ал'
CREATE PROC poisk_Mr
@Poisk nvarchar(50)
as begin
select * from Morya
where More_NAME like (@Poisk + N'%')
end
exec poisk_Mr N''
CREATE PROC poisk_Mr_St
@Poisk nvarchar(50)
as begin
select * from Morya_Strany1
where More_NAME like (@Poisk + N'%')
end
exec poisk_Mr_St N'азовс'
CREATE PROC poisk_Pr
@Poisk nvarchar(50)
as begin
select * from Prolivy
where Proliv_NAME like (@Poisk + N'%')
end
exec poisk_Pr N''
CREATE PROC poisk_Pr_razd
@Poisk nvarchar(50)
as begin
select * from Proliv_razd1
where Proliv_NAME like (@Poisk + N'%')
end
exec poisk_Pr_razd N'Бас'
CREATE PROC poisk_Pr_St
@Poisk nvarchar(50)
as begin
select * from Prol_strana1
where Proliv_NAME like (@Poisk + N'%')
end
exec poisk_Pr_St N''
CREATE PROC poisk_Rek
@Poisk nvarchar(50)
as begin
select * from Reki
where Reka_NAME like (@Poisk + N'%')
end
exec poisk_Rek N''
CREATE PROC poisk_Rk_St
@Poisk nvarchar(50)
as begin
select * from Reka_STRANA1
where Reka_NAME like (@Poisk + N'%')
end
exec poisk_Rk_St N''
CREATE PROC poisk_Oz
@Poisk nvarchar(50)
as begin
select * from Ozera
where Ozera_NAME like (@Poisk + N'%')
end
exec poisk_Oz N''
CREATE PROC poisk_Oz_St
@Poisk nvarchar(50)
as begin
select * from Ozera_strana1
where Ozera_NAME like (@Poisk + N'%')
end
exec poisk_Oz_St N''
CREATE PROC poisk_Vod
@Poisk nvarchar(50)
as begin
select * from Vodopady
where Vodopad_NAME like (@Poisk + N'%')
end
exec poisk_Vod N''
CREATE PROC poisk_Ost
@Poisk nvarchar(50)
as begin
select * from OSTROVA
where Ostrov_NAME like (@Poisk + N'%')
end
exec poisk_Ost N''
CREATE PROC poisk_Ost_St
@Poisk nvarchar(50)
as begin
select * from Ost_Strana1
where Ostrov_NAME like (@Poisk + N'%')
end
exec poisk_Ost_St N''
CREATE PROC poisk_Pust
@Poisk nvarchar(50)
as begin
select * from Pustyni
where Pustinya_NAME like (@Poisk + N'%')
end
exec poisk_Pust N''
CREATE PROC poisk_Ps_St
@Poisk nvarchar(50)
as begin
select * from Pustinya_strana1
where Pustinya_NAME like (@Poisk + N'%')
end
exec poisk_Ps_St N''
CREATE PROC poisk_Gr
@Poisk nvarchar(50)
as begin
select * from GORNYYE_SYSTEMY
where Gora_NAME like (@Poisk + N'%')
end
exec poisk_Gr N''
CREATE PROC poisk_Gr_St
@Poisk nvarchar(50)
as begin
select * from Gor_St1
where Gora_NAME like (@Poisk + N'%')
end
exec poisk_Gr_St N''
CREATE PROC poisk_Grn
@Poisk nvarchar(50)
as begin
select * from GORNYYE_VERSHINY
where Gorn_NAME like (@Poisk + N'%')
end
exec poisk_Grn N''
CREATE PROC poisk_Grn_St
@Poisk nvarchar(50)
as begin
select * from Gorn_Strana1
where Gorn_NAME like (@Poisk + N'%')
end
exec poisk_Grn_St N''
CREATE PROC poisk_Pesh
@Poisk nvarchar(50)
as begin
select * from PESHCHERY
where Peshchera_NAME like (@Poisk + N'%')
end
exec poisk_Pesh N''
CREATE PROC poisk_Vulk
@Poisk nvarchar(50)
as begin
select * from VULKANY
where Vulkan_NAME like (@Poisk + N'%')
end
exec poisk_Vulk N''
/*****ПОИСК МАЛЕНЬКИХ, БОЛЬШИХ СТРАН, МОРЕЙ...**** **/
CREATE VIEW Kont_plosh
as
select K.Kontinent_ID, K.Kontinent_NAME, S.Ploshad_km2
from Kontinenty K
join Strany S
on K.Kontinent_ID=S.Kontinent_ID
CREATE PROC malenk_Str_Kont
@poisk nvarchar(50)
as begin
select kontinent_NAME as 'Континенты', min(Ploshad_km2) as 'Площадь самой маленькой страны'
from Kont_plosh
group by kontinent_NAME
having Kontinent_NAME like (@poisk + N'%')
end
exec malenk_Str_Kont N'Северная Америка'
CREATE VIEW Mor_Ok
as
select O.Okean_ID, O.Okean_NAME, M.ploshad
from Okeany O
join Morya M
on O.Okean_ID=M.Okean_ID
CREATE PROC mal_Mor_Ok
@poisk nvarchar(50)
as begin
select Okean_NAME as 'Океаны', min(Ploshad) as 'Самый маленький площадь моря', max(Ploshad) as 'Самый большой площадь моря'
from Mor_Ok
group by Okean_NAME
having Okean_NAME like (@poisk + N'%')
end
exec mal_Mor_Ok N'Атлантический'
/****ПОИСК КОНТИНЕНТЕ с островами *******/
CREATE PROC Kont_Ost
@poisk nvarchar(20)
as begin
select K.Kontinent_NAME as 'Континент', O.Ostrov_NAME as 'Остров'
from OSTROVA O
join Kontinenty K
on O.Kontinent_ID=K.Kontinent_ID
where Kontinent_NAME like (@poisk + N'%')
end
exec Kont_Ost N'Аз'
/****ПОИСК ОСТРОВОВ В КОНТИНЕНТЕ *******/
CREATE PROC Ost_Kont
@poisk nvarchar(20)
as begin
select O.Ostrov_NAME as 'Остров', K.Kontinent_NAME as 'Континент'
from OSTROVA O
join Kontinenty K
on O.Kontinent_ID=K.Kontinent_ID
where Ostrov_NAME like (@poisk + N'%')
end
exec Ost_Kont N''
5.4 Триггеры
Триггер - специальный вид хранимой процедуры, используемый в реляционных БД. Триггер не может вызываться непосредственно пользователем, он привязывается к какой-либо базовой таблице и выполняется автоматически СУБД при вставке, удалении или модификации записей в таблице.
/*** Площадь суши и земли *****/
CREATE TRIGGER plosh_sush
on Susha
for insert, update
as
declare @S_plosh int, @Z_plosh int
select @S_plosh=S.Ploshad_sushi_mln_km2, @Z_plosh=Z.Ploshad_mln_km2
from SUSHA S
join ZEMLYA Z
on S.Zemlya=Z.Zemlya
IF (@S_plosh>=@Z_plosh)
begin
rollback tran
raiserror('Площадь суши не может быть больше площади земли', 16, 10)
end;
update SUSHA
set ploshad_sushi_mln_km2=511
where rakurss=N'Суша'
/****Площадь воды и земли ******/
CREATE TRIGGER plosh_Voda
on Voda
for insert, update
as
declare @V_plosh int, @Z_plosh int
select @V_plosh=V.ploshad_vody_mln_km2, @Z_plosh=Z.Ploshad_mln_km2
from Voda V
join ZEMLYA Z
on V.Zemlya=Z.Zemlya
IF (@V_plosh>=@Z_plosh)
begin
rollback tran
raiserror('Площадь воды не может быть больше площади земли', 16, 10)
end;
UPDATE VODA
set ploshad_vody_mln_km2=511
where rakurs=N'Вода'
/**** Площадь океана не может быть больше площади ракурса воды*****/
CREATE TRIGGER Plosh_Okean
on Okeany
for insert, update
as
declare @O_plosh int, @V_plosh int
select @O_plosh=O.Ploshad_mln_km2, @V_plosh=V.ploshad_vody_mln_km2
from Okeany O
join Voda V
on O.Zemlya=V.Zemlya
IF (@O_plosh>=@V_plosh)
begin
rollback tran
raiserror ('Площадь океана не может быть больше ракурса воды', 16, 10)
end;
UPDATE Okeany
set Ploshad_mln_km2=362
/**** Площадь континента не может быть больше площади суши ******/
CREATE TRIGGER Plosh_Kont
on Kontinenty
for insert, update
as
declare @K_plosh int, @S_plosh int
select @K_plosh=K.Ploshad_mln_km2, @S_plosh=S.ploshad_sushi_mln_km2
from Kontinenty K
join SUSHA S
on K.Rakurss=S.Rakurss
IF (@K_plosh>=@S_plosh)
begin
rollback tran
raiserror ('Площадь континента не может быть больше площади суша', 16, 10)
end;
UPDATE Kontinenty
set Ploshad_mln_km2=149
/****Площадб страны не может быть больше площади континента *****/
CREATE TRIGGER Str_Kont
on Strany
for update
as
declare @S_Plosh int, @K_Plosh int
select @S_Plosh=S.Ploshad_km2, @K_Plosh=K.Ploshad_mln_km2*1000000
from Strany S
join Kontinenty K
on S.Kontinent_ID=K.Kontinent_ID
IF (@K_Plosh>=@S_Plosh)
begin
rollback tran
raiserror ('Площадь страны не может быть больше площади континента!', 16, 10)
end;
UPDATE Strany
set Ploshad_km2=9976139
where strana_ID=73
UPDATE Strany
set Ploshad_km2=44000000
where strana_ID=79
/***** Таблица для журналирования (Имена)******/
CREATE TABLE jour
(
Tip_operats varchar(30),
Data datetime,
Users varchar(30),
Name_table varchar(30),
New_NAME nvarchar(30),
Old_NAME nvarchar(30)
);
/**** Okean_NAME ****/
CREATE TRIGGER jour1
on Okeany
for update
as
declare @new_n nvarchar(30), @old_n nvarchar(30)
select @new_n=I.Okean_NAME, @old_n=O.Okean_NAME
from Okeany O, inserted i
where O.Okean_ID=I.Okean_ID
INSERT INTO jour
Values ('Obnovlena', current_TIMESTAMP, current_USER, 'Okeany', @new_n, @old_n);
Update Okeany
set Okean_NAME=N'Твва'
where Okean_ID=1
select * from jour
/*** Pustynya_NAME ****/
CREATE TRIGGER jour2
on Pustyni
for update
as
declare @new_n nvarchar(30), @old_n nvarchar(30)
select @new_n=I.Pustinya_NAME, @old_n=P.Pustinya_NAME
from Pustyni P, inserted i
where P.Pustinya_NAME=I.Pustinya_NAME
INSERT INTO jour
Values ('Obnovlena', current_TIMESTAMP, current_USER, 'Pustyni', @new_n, @old_n);
update Pustyni
set Pustinya_NAME=N'Аравийские'
where Pustinya_ID=1
select * from Jour
drop TRIGGER jour2
/**** Таблица журналирования (Объем)*****/
CREATE TABLE jour_plosh
(
Tip_operats varchar(30),
Data datetime,
Users varchar(30),
Name_table varchar(30),
New_Plosh int,
Old_Plosh int
);
CREATE TRIGGER jour_plosh2
on Okeany
for update
as
declare @new_p float, @old_p float
select @new_p=I.Obyem_mln_km3, @old_p=O.Obyem_mln_km3
from Okeany O, inserted i
INSERT INTO jour_plosh
Values ('Obnovlena', current_TIMESTAMP, current_USER, 'Okeany', @new_p, @old_p);
update okeany
set Obyem_mln_km3=20.32
where Okean_ID=4
select * from jour_plosh
6. Стратегии безопасности базы данных
Под безопасностью подразумевается защита базы данных от несанкционированного доступа. В современных СУБД поддерживается избирательный и обязательный тип стратегий обеспечения безопасности базы данных.
Безопасность базы данных реализуется с помощью стратегии избирательного управления безопасность. Сущность данной стратегии заключается в том, что для каждого пользователя базы данных устанавливаются различные права и полномочиями при работе с различными объектами.
Было выделено 4 основных пользователя «Meru», «Inka», «Tima», «Nura»:
CREATE LOGIN Meru with password='mmm',
DEFAULT_DATABASE=kurs_LAURA;
CREATE LOGIN Inka with password='iii',
DEFAULT_DATABASE=kurs_LAURA;
CREATE LOGIN Tima with password='ttt',
DEFAULT_DATABASE=kurs_LAURA;
CREATE LOGIN Nura with password='nnn',
DEFAULT_DATABASE=kurs_LAURA;
CREATE user Meru1 for login Meru;
CREATE user Inka1 for login Inka;
CREATE user Tima1 for login Tima;
CREATE user Nura1 for login Nura;
CREATE ROLE AAA;
CREATE ROLE BBB;
CREATE ROLE ccc;
sp_addrolemember 'AAA', 'Meru1';
sp_addrolemember 'AAA', 'Inka1';
sp_addrolemember 'BBB', 'Tima1';
sp_addrolemember 'CCC', 'Nura1';
Установим права для каждой роли:
GRANT EXECUTE on St_Kont to AAA
GRANT EXECUTE on Mor_Okean to AAA
GRANT EXECUTE on St_More to AAA
GRANT EXECUTE on Pr_okean to AAA
GRANT EXECUTE on St_Proliv to AAA
GRANT EXECUTE on Rer_Ok to AAA
GRANT EXECUTE on Rek_Str to AAA
GRANT EXECUTE on Ozer_Str to AAA
GRANT EXECUTE on Kont_Vodopad to AAA
DENY CREATE TABLE on database:: kurs_laura to AAA
DENY update on database:: kurs_laura to AAA
DENY insert on database:: kurs_laura to AAA
GRANT select on database:: kurs_LAURA to BBB
Grant update on database:: kurs_laura to BBB
Grant create table on database:: kurs_laura to BBB
Заключение
В ходе курсовой работы была спроектирована и реализована базы данных учебный атлас мира.
В результате проектирования базы данных была построена модель процессов предметной области, осуществлено логическое и физическое проектирование базы данных, написаны запросы на выборку и манипуляцию данными на языке SQL.
Ограничение целостности и безопасности базы данных было обеспечено за счет использования представлений, хранимых процедур, триггеров, ссылочной целостности, делегирования прав и полномочий.
Список литературы
1. Хансен Г., Хансен Д. Базы данных: разработка и управление. - М.: ЗАО «Издательство БИНОМ», 1999.
2. Питер Роб, Карлос Коронел Системы баз данных: проектирование, реализация и управление, 5-е издание, - BHV Санкт-Петербург, 2004. -1040 с.,
3. Кренке Д. Теория и практика построения баз данных. Изд.9 - Питер, 2005.
4. MICROSOFT SQL SERVER 2005. Реализация и обслуживание. Учебный курс Microsoft/ Пер. с английского - М. «Русская редакция», Спб.: «Питер», 2007. - 768 стр. ил.
5. Мамаев Е. MS SQL Server 2000. Проектирование и реализация баз данных. Сертификационный экзамен. - BHV, СПб. 2004г., 416с
6. Плю Р., Стефенс Р., Райан К. Освой самостоятельно SQL за 24 часа. - М.: Издательский дом «Вильямс», 2000.
7. Кандзюба С.П., Громов В.Н. Delphi 6/7. Базы данных и приложения. - СПб: ООО «ДиаСофт», 2002.
8. Географическая энциклопедия
Размещено на Allbest.ru
Подобные документы
Системный анализ предметной области. Нормальные формы таблиц. Физическое проектирование базы данных. Реализация структуры БД в СУБД MySQL. Запросы на создание таблиц, добавление и выборку данных. Реализация триггера и функции. Программный код WEB-страниц.
курсовая работа [748,9 K], добавлен 01.11.2014Анализ предметной области - магазин "Канцелярские товары". Проектирование и реализация базы данных в MS SQL Server. Перечень хранимой информации: таблицы, поля, типы. Моделирование предметной области. Выделение сущностей, атрибутов, ключей, связей.
курсовая работа [2,2 M], добавлен 05.02.2015Анализ предметной области. Перечень хранимой информации: таблицы, поля, типы. Выделение сущностей, атрибутов, ключей, связей. Начальное заполнение данными БД. Создание и запуск базовых запросов. Проектирование базы данных в среде Enterprise Architect.
курсовая работа [1,6 M], добавлен 16.02.2016Понятия реляционных баз данных. Структура и создание таблиц. Заполнение базы данных. Запросы на выборку. Запросы с вычисляемыми полями. Создание форм, кнопочной формы, макросов и отчетов. Итоговые и перекрестные запросы. Перечень сущностей и атрибутов.
курсовая работа [1,3 M], добавлен 18.10.2015Анализ предметной области и введение ограничений. Выделение базовых сущностей. Концептуальная модель данных. Построение схемы реляционной модели базы данных магазина одежды в третьей нормальной форме. Описание физической БД. Проектирование интерфейса.
курсовая работа [2,6 M], добавлен 20.11.2013- Анализ, разработка и реализация базы данных встраиваемого модуля информационной системы IP-телефонии
Анализ предметной области. Проектирование диаграммы "сущность-связь" в Enterprise Architect. Общие сведения о базовых запросах. Создание базы данных в MySQL. Выделение сущностей, атрибутов, ключей, связей. Применение табличных и скалярных функций.
курсовая работа [1,8 M], добавлен 28.01.2016 Проектирование и реализация базы данных для обеспечения автоматизированного учета результатов футбольного турнира. Осуществление логического, а также физического проектирования базы данных. Описание запросов на выборку и манипуляцию данными на языке SQL.
курсовая работа [1,9 M], добавлен 17.06.2012Создание таблиц базы данных с помощью MS Access "Страны Азии". Форма базы данных и запросы к выборкам данных. Модификация структуры таблиц, создания связей между главными таблицами, редактирование данных и проектирование форм для реальной базы данных.
контрольная работа [723,9 K], добавлен 25.11.2012Выбор методологии проектирования и системы управления базами данных. Описание предметной области и проектирование физической структуры базы данных. Реализация проекта в MS SQL Server 2008. Построение инфологической модели. Ограничения целостности связи.
курсовая работа [679,2 K], добавлен 22.01.2013Описание предметной области, определение функциональных требований к системе и построение диаграммы потока данных. Построение модели "сущность-связь", описание сущностей и атрибутов модели. Построение реляционной базы данных и описание ее таблицы.
курсовая работа [624,5 K], добавлен 30.05.2019