Проектирование и реализация базы данных учебного атласа мира

Определение базовых сущностей предметной области. Представление базы данных реляционной моделью. Построение 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

  • Анализ предметной области. Проектирование диаграммы "сущность-связь" в 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.