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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

(44, N'Рейнир', 4392, N'стратовулкан', 155, 3, N'суша'),

(45, N'Тахумулько', 4220, N'стратовулкан', 42, 3, N'суша'),

(46, N'Мауна-Лоа', 4170, N'щитовидный', 155, 3, N'суша'),

(47, N'Колима', 3850, N'стратовулкан', 105, 3, N'суша'),

(48, N'Санта-Мария', 3772, N'стратовулкан', 42, 3, N'суша'),

(49, N'Лассен-Пик', 3187, N'стратовулкан', 155, 3, N'суша'),

(50, N'Парикутин', 3170, N'шлаковый конус', 105, 3, N'суша'),

(51, N'Сент-Хеленс', 2549, N'стратовулкан', 155, 3, N'суша'),

(52, N'Катмай', 2047, N'стратовулкан', 155, 3, N'суша'),

(53, N'Кливленд', 1730, N'стратовулкан', 155, 3, N'суша'),

(54, N'Ареналь', 1657, N'стратовулкан', 83, 3, N'суша'),

(55, N'Коровина', 1533, N'стратовулкан', 155, 3, N'суша'),

(56, N'Килауэа', 1222, N'щитовидный', 155, 3, N'суша'),

(57, N'Акутан', 1303, N'стратовулкан', 155, 3, N'суша'),

(58, N'Эль-Чичон', 1150, N'стратовулкан', 105, 3, N'суша'),

(59, N'Окмок', 1073, N'щитовидный', 155, 3, N'суша'),

(60, N'Адагдаг', 645, N'стратовулкан', 155, 3, N'суша'),

(61, N'Норт-Горда-Ридж', -3000, N'подводный', 155, 3, N'суша'),

(62, N'Килиманджаро', 5895, N'стратовулкан', 159, 2, N'суша'),

(63, N'Меру', 4565, N'стратовулкан', 159, 2, N'суша'),

(64, N'Карисимби', 4507, N'стратовулкан', 133, 2, N'суша'),

(65, N'Элгон', 4320, N'щитовидный', 167, 2, N'суша'),

(66, N'Камерун', 4095, N'стратовулкан', 72, 2, N'суша'),

(67, N'Тейде', 3718, N'стратовулкан', 66, 6, N'суша'),

(68, N'Ньирагонго', 3470, N'щитовидный', 54, 2, N'суша'),

(69, N'Эми-Куси', 3415, N'стратовулкан', 134, 6, N'суша'),

(70, N'Ньямлагира', 3058, N'щитовидный', 54, 2, N'суша'),

(71, N'Ол Доньо Ленгаи', 2960, N'стратовулкан', 159, 2, N'суша'),

(72, N'Фогу', 2829, N'стратовулкан', 69, 2, N'суша'),

(73, N'Картала', 2361, N'щитовидный', 82, 2, N'суша'),

(74, N'Набро', 2218, N'стратовулкан', 187, 2, N'суша'),

(75, N'Дубби', 1625, N'стратовулкан', 187, 2, N'суша'),

(76, N'Афдера', 1295, N'стратовулкан', 189, 2, N'суша'),

(77, N'Телеки', 646, N'щитовидный', 75, 2, N'суша'),

(78, N'Ключевская Сопка', 4835, N'стратовулкан', 132, 6, N'суша'),

(79, N'Эрджияс', 3916, N'стратовулкан', 166, 1, N'суша'),

(80, N'Керинчи', 3800, N'стратовулкан', 60, 1, N'суша'),

(81, N'Фудзияма', 3776, N'стратовулкан', 194, 1, N'суша'),

(82, N'Семеру', 3676, N'стратовулкан', 60, 1, N'суша'),

(83, N'Ичинская Сопка', 3621, N'стратовулкан', 132, 6, N'суша'),

(84, N'Кроноцкая Сопка', 3528, N'стратовулкан', 132, 6, N'суша'),

(85, N'Корякская Сопка', 3456, N'стратовулкан', 132, 6, N'суша'),

(86, N'Шивелуч', 3307, N'стратовулкан', 132, 6, N'суша'),

(87, N'Онтакэ', 3067, N'комплексный', 194, 1, N'суша'),

(88, N'Мерапи', 2968, N'стратовулкан', 60, 1, N'суша'),

(89, N'Жупаноский', 2958, N'стратовулкан', 132, 6, N'суша'),

(90, N'Апо', 2938, N'стратовулкан', 173, 1, N'суша'),

(91, N'Безамянный', 2882, N'стратовулкан', 132, 6, N'суша'),

(92, N'Пэктусан', 2744, N'стратовулкан', 79, 1, N'суша'),

(93, N'Авачинская Сопка', 2741, N'стратовулкан', 132, 6, N'суша'),

(94, N'Асама', 2550, N'стратовулкан', 194, 1, N'суша'),

(95, N'Майон', 2462, N'стратовулкан', 173, 1, N'суша'),

(96, N'Кизимен', 2376, N'стратовулкан', 132, 6, N'суша'),

(97, N'Алаид', 2339, N'стратовулкан', 132, 6, N'суша'),

(98, N'Мутновский', 2323, N'стратовулкан', 132, 6,N'суша'),

(99, N'Бакенинг', 2278, N'стратовулкан', 132, 6, N'суша'),

(100, N'Высокий', 2161, N'стратовулкан', 132, 6, N'суша'),

(101, N'Комарова', 2070, N'стратовулкан', 132, 6, N'суша'),

(102, N'Крашенинникова', 1856, N'стратовулкан', 132, 6, N'суша'),

(103, N'Горелый', 1829, N'стратовулкан', 132, 6, N'суша'),

(104, N'Тятя', 1819, N'стратовулкан', 132, 6, N'суша'),

(105, N'Сопутан', 1784, N'стратовулкан', 60, 1, N'суша'),

(106, N'Карангетанг', 1784, N'стратовулкан', 60, 1, N'суша'),

(107, N'Келуд', 1731, N'стратовулкан', 60, 1, N'суша'),

(108, N'Гамконора', 1625, N'стратовулкан', 60, 1, N'суша'),

(109, N'Булусан', 1565, N'стратовулкан', 173, 1, N'суша'),

(110, N'Малый Семячик', 1560, N'стратовулкан', 132, 6, N'суша'),

(111, N'Карымский', 1536, N'стратовулкан', 132, 6, N'суша'),

(112, N'Пинатубо', 1486, N'стратовулкан', 173, 1, N'суша'),

(113, N'Дуконо', 1335, N'стратовулкан', 60, 1, N'суша'),

(114, N'Ксудач', 1079, N'стратовулкан', 132, 6, N'суша'),

(115, N'Кракатау', 813, N'кальдера', 60, 1, N'суша'),

(116, N'Бату Тара', 748, N'стратовулкан', 60, 1, N'суша'),

(117, N'Баррен Айленд', 354, N'стратовулкан', 59, 1, N'суша'),

(118, N'Тааль', 311, N'кальдера', 173, 1, N'суша'),

(119, N'Джабал аль Таир', 244, N'стратовулкан', 68, 1, N'суша'),

(120, N'Император Китая', -2850, N'подводный', 60, 1, N'суша'),

(121, N'Ерсей', -3800, N'подводный', 60, 1, N'суша'),

(122, N'Эребус', 3794, N'стратовулкан', 195, 5, N'суша'),

(123, N'Эльбрус', 5642, N'стратовулкан', 132, 6, N'суша'),

(124, N'Этна', 3329, N'стратовулкан', 67, 6, N'суша'),

(125, N'Эрайвайекюдль', 2109, N'стратовулкан', 65, 6, N'суша'),

(126, N'Лаки', 1725, N'щитовидный', 65, 6, N'суша'),

(127, N'Гримсвотн', 1725, N'стратовулкан', 65, 6, N'суша'),

(128, N'Эйяфьядлайекюдль', 1666, N'стратовулкан', 65, 6, N'суша'),

(129, N'Аскья', 1516, N'стратовулкан', 65, 6, N'суша'),

(130, N'Катла', 1512, N'щитовидный', 65, 6, N'суша'),

(131, N'Гекла', 1491, N'стратовулкан', 65, 6, N'суша'),

(132, N'Престахнукур', 1400, N'щитовидный', 65, 6, N'суша'),

(133, N'Везувий', 1281, N'стратовулкан', 67, 6, N'суша'),

(134, N'Торфаекюдль', 1259, N'стратовулкан', 65, 6, N'суша'),

(135, N'Стромболи', 926, N'стратовулкан', 67, 6, N'суша'),

(136, N'Крапла', 818, N'кальдера', 65, 6, N'суша'),

(137, N'Милос', 751, N'стратовулкан', 48, 6, N'суша'),

(138, N'Нисирос', 698, N'стратовулкан', 48, 6, N'суша'),

(139, N'Вулькано', 500, N'стратовулкан', 67, 6, N'суша'),

(140, N'Эльдфетль', 279, N'стратовулкан', 65, 6, N'суша'),

(141, N'Санторин', 130, N'щитовидный', 48, 6, N'суша'),

(142, N'Руапеху', 2797, N'стратовулкан', 118, 7, N'суша'),

(143, N'Биг Бен', 2745, N'стратовулкан', 118, 7, N'суша'),

(144, N'Улавун', 2334, N'стратовулкан', 125, 7, N'суша'),

(146, N'Манам', 1807, N'стратовулкан', 125, 7, N'суша'),

(147, N'Багана', 1750, N'лавовый конус', 125, 7, N'суша'),

(148, N'Ламингтон', 1680, N'стратовулкан', 125, 7, N'суша'),

(149, N'Лопеви', 1413, N'стратовулкан', 30, 7, N'суша'),

(150, N'Амбрим', 1334, N'щитовидный', 30, 7, N'суша'),

(151, N'Лангила', 1330, N'стратовулкан', 125, 7, N'суша'),

(152, N'Анатахан', 790, N'стратовулкан', 155, 3, N'суша'),

(153, N'Ясур', 361, N'стратовулкан', 30, 7, N'суша'),

(154, N'Тавурвур', 223, N'стратовулкан', 125, 7, N'суша'),

(155, N'Кавачи', -20, N'подводный', 151, 7, N'суша'),

(159, N'Вулканолог (Руссиан)', -130, N'подводный', 118, 7, N'суша');

INSERT INTO Vulkany (Vulkan_ID, Vulkan_NAME, Visota, Phorma, Kontinent_ID, Rakurss) (156, N'Минами-Хиоси', -30, N'подводный', 7, N'суша'),

(157, N'Эсмеральда', -43, N'подводный', 7, N'суша'),

(158, N'Фукудзин', -50, N'подводный', 7, N'суша');

5. Целостность и безопасность базы данных

.1 Целостность данных

Нарушение целостности баз данных может привести к непредсказуемым, а порой и опасным последствиям. Поэтому одно из ведущих мест в разработке баз данных занимает их защита и сохранение целостности.

Следует различать понятия «безопасность» и «целостность» баз дынных. Под безопасностью понимают то, что пользователю разрешают выполнить какие-либо действия. А под целостность же понимают то, что эти самые разрешённые действия будут выполнены корректно.

В реляционной модели данных определены два базовых требования обеспечения целостности: целостность ссылок, целостность сущностей.

Также существуют ограничения доменов (определение множества значений, которые образуют этот домен, то есть процесс создания домена и наложения на него ограничений целостности совпадает), атрибутов (для реляционных БД это определение домена, из которого берутся значения атрибутов) и отношений (ограничения, накладывающиеся на одно конкретное отношение, которое не может накладываться на другое отношение или домен, обычно задается созданием отношения). В данной работе используется ограничение атрибутов (при задании типов данных для атрибутов на физическом уровне концептуальной схемы).

Целостность сущностей. Объект реального мира представляется в реляционной базе данных как кортеж некоторого отношения. Требование целостности сущностей заключается в следующем: каждый кортеж любого отношения должен отличатся от любого другого кортежа этого отношения (т.е. любое отношение должно обладать первичным ключом).

Ссылочная целостность - это ограничение базы данных, гарантирующее, что ссылки между данными являются действительно правомерными и неповрежденными. Ссылочная целостность является фундаментальным принципом теории баз данных и проистекает из той идеи, что база данных должна не только сохранять данные, но и активно содействовать обеспечению их качества.

.2 Представление

Для сохранения ссылочной целостности могут быть также использованы представления, хранимые процедуры и триггеры.

Представление - статическое определение динамической таблицы, созданной из одной или более базовых таблиц в соответствии с заданными критериями выборки. С технической точки зрения представление - это хранимое в БД определение инструкции select с заданными в ней строками и столбцами, которые должны считываться при обращении к представлению. После создания представления к нему можно обращаться как к обычной таблице.

CREATE VIEW Zemlya1

select Zemlya, Massa_zettatonna, Ploshad_mln_km2, Radius_kmZEMLYA* from Zemlya1VIEW Voda1Rakurs, Ploshad_vody_mln_km2, Protsent, ZemlyaVODA* from Voda1VIEW Susha1Rakurss, Ploshad_sushi_mln_km2, Protsent, ZemlyaSUSHA* from Susha1VIEW Okeany1Okean_ID, Okean_NAME, Ploshad_mln_km2, Obyem_mln_km3, Glubina_max_m, Zemlya, RakursOkeany* from Okeany1VIEW Morya1TOP(150) M.More_ID, M.More_NAME, M.Ploshad, M.Glubina_max, O.Okean_NAME, M.RakursMorya MOkeany OM.Okean_ID=O.Okean_IDby M.More_NAME* from Morya1VIEW Morya_Strany1TOP(300) M.More_NAME, S.Strana_NAMEMorya MMORE_STRANA MrM.More_ID=Mr.More_IDStrany SS.Strana_ID=Mr.Strana_IDby More_NAME* from Morya_Strany1VIEW Prolivy1TOP(100) P.Proliv_ID, P.Proliv_NAME, P.Dlina, P.Glubina, P.Shirina, O.Okean_NAME, P.RakursProlivy POkeany OP.Okean_ID=O.Okean_IDby P.Proliv_NAME* from Prolivy1VIEW Proliv_razd1P.Proliv_NAME, Pr.RazdelyaetProliv_RAZDELYAET PrProlivy PPr.Proliv_ID=P.Proliv_ID* from Proliv_razd1VIEW Prol_strana1P.Proliv_ID, P.Proliv_NAME, S.Strana_NAMEproliv_STRANA PrStrany SPr.Strana_ID=S.Strana_ID

join Prolivy PPr.Proliv_ID=P.Proliv_ID

select * from Prol_strana1VIEW Reki1R.Reka_ID, R.Reka_NAME, R.Dlina_km, R.Ploshad_km2, R.chei_pritok, O.Okean_NAME, R. RakursReki ROkeany OR.Okean_ID=O.Okean_ID* from Reki1VIEW Reka_STRANA1R.Reka_NAME, S.Strana_NAMEReki RREKA_STRANA RsR.Reka_ID=Rs.Reka_IDStrany SRs.Strana_ID=S.Strana_ID* from Reka_STRANA1VIEW Ozera1TOP(150) Ozera_ID, ozera_NAME, Ploshad_km2, Glubina_max_m, Uroven_more_m, Solenost, Rakurs Ozeraby Ozera_name* from Ozera1VIEW Ozera_kont1O.Ozera_NAME, K.Kontinent_NAMEOzera OOZERA_Kontinent OkO.Ozera_ID=Ok.Ozera_IDKontinenty KOk.Kontinent_ID=K.Kontinent_ID* from Ozera_kont1VIEW Ozera_strana1TOP(200) O.Ozera_ID, O.Ozera_NAME, S.Strana_NAMEOzera OOZERA_STRANA OsO.Ozera_ID=Os.Ozera_IDStrany SOs.Strana_ID=S.Strana_IDby Ozera_NAME* from Ozera_strana1VIEW Vodopady1V.Vodopad_ID, V.Vodopad_NAME, V.Visota, S.Strana_NAME, K.Kontinent_NAME, V.RakursVodopady VStrany SV.Strana_ID=S.Strana_IDKontinenty KV.Kontinent_ID=K.Kontinent_ID* from Vodopady1VIEW Kontinenty1*Kontinenty* from Kontinenty1VIEW Strany1S.Strana_ID, S.Strana_NAME, S.Strana_STOLITSYA, S.Ploshad_km2, S.Naselenie, K.Kontinent_NAME, S.RakurssStrany SKontinenty KS.Kontinent_ID=K.Kontinent_ID* from Strany1VIEW Ostrova1O.Ostrov_ID, O.Ostrov_NAME, O.Ploshad, K.Kontinent_NAME, O.RakurssOSTROVA OKontinenty KO.Kontinent_ID=K.Kontinent_ID* from Ostrova1VIEW Ost_Strana1TOP(200) O.Ostrov_NAME, S.Strana_NAMEOSTROVA OOSTROV_STRANA OsOs.Ostrov_ID=O.Ostrov_IDStrany SOs.Strana_ID=S.Strana_IDby O.Ostrov_NAME* from Ost_Strana1VIEW Pustini1TOP(100) P.Pustinya_NAME, P.Ploshad_km2, P.Tip, P.Temp_min_С, P.Temp_max_С, K.Kontinent_NAME, P.RakurssPustyni PKontinenty KP.Kontinent_ID=K.Kontinent_IDby Pustinya_NAME* from Pustini1VIEW Pustinya_strana1TOP(150) P.Pustinya_NAME, S.Strana_NAMEPustyni PPUSTYNYA_STRANA PsP.Pustinya_ID=Ps.Pustinya_IDStrany SPs.Strana_ID=S.Strana_IDby Pustinya_NAME* from Pustinya_strana1VIEW Gorn_syst1TOP(200) P.Gora_ID, P.Gora_NAME, P.Ploshad_km2, P.Dlina_km, P.Shirina_km, P.Vershina, K.Kontinent_NAME, P.RakurssGORNYYE_SYSTEMY PKontinenty KP.Kontinent_ID=K.Kontinent_IDby Gora_NAME* from Gorn_syst1VIEW Gor_St1TOP(300) G.Gora_NAME, S.Strana_NAMEGORNYYE_SYSTEMY GGORA_STRANA GrG.Gora_ID=Gr.Gora_IDStrany SGr.Strana_ID=S.Strana_IDby G.Gora_NAME* from Gor_St1VIEW Gor_Versh1TOP(600) Gv.Gorn_NAME, Gv.Visota_m, Gr.Gora_NAME, K.Kontinent_NAME, Gv.RakurssGORNYYE_VERSHINY GvGORNYYE_SYSTEMY GrGv.Gora_ID=Gr.Gora_IDKontinenty KGv.Kontinent_ID=K.Kontinent_IDby Gv.Gorn_NAME* from Gor_Versh1VIEW Gorn_Strana1TOP(700) Gr.Gorn_NAME, Strana_NAMEGORNYYE_VERSHINY GrGORN_STRANA GsGr.Gorn_ID=Gs.Gorn_IDStrany SGs.strana_ID=S.Strana_IDby Gr.Gorn_NAME* from Gorn_Strana1VIEW Peshchery1TOP(300) P.Peshchera_ID, P.Peshchera_NAME, P.Glubina, P.Dlina, S.Strana_NAME, K.Kontinent_NAME, P.RakurssPeshchery PStrany SP.Strana_ID=S.Strana_IDKontinenty KP.Kontinent_ID=K.Kontinent_IDby Peshchera_NAME* from Peshchery1VIEW Vulkany1TOP(200) V.Vulkan_NAME, V.Visota, V.Phorma, S.Strana_NAME, K.Kontinent_NAME, V.RakurssVULKANY VStrany SV.Strana_ID=S.Strana_IDKontinenty KV.Kontinent_ID=K.Kontinent_IDby Vulkan_NAME* from Vulkany1

5.3 Хранимые процедуры

Хранимая процедура - объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере. Хранимые процедуры очень похожи на обыкновенные процедуры языков высокого уровня, у них могут быть входные и выходные параметры и локальные переменные, в них могут производиться числовые вычисления и операции над символьными данными, результаты которых могут присваиваться переменным и параметрам. В хранимых процедурах могут выполняться стандартные операции с базами данных.

/*****Число стран в континенте ******/PROCEDURE St_Kont

(@Kontinent_NAME nvarchar(25))K.Kontinent_NAME as 'Имя континента', count(S.Strana_ID) as 'Число стран'Strany SKontinenty KS.Kontinent_ID=K.Kontinent_IDby K.Kontinent_NAMEK.Kontinent_NAME=@kontinent_NAMESt_Kont N'Северная Америка'

/*****Число морей в океане******/PROCEDURE Mor_Okean

(@Okean_NAME nvarchar(25))O.Okean_NAME as N'Имя океана', count(M.More_ID) as N'Число морей'Morya MOkeany OO.okean_ID=M.Okean_IDby O.Okean_NAMEO.Okean_NAME=@Okean_NAMEMor_Okean N'Атлантический'

/*****Число стран, который охватывает море*****/

CREATE PROCEDURE St_MoreM.More_NAME as 'Море', count(S.Strana_ID) as 'Число стран'Morya MMORE_STRANA SM.More_ID=S.More_IDby More_NAMEby More_NAMESt_More

/******Число разливов в океане*******/PROCEDURE Pr_okeanO.Okean_NAME as 'Океаны', count(P.Proliv_ID) as 'Число разливов'Okeany OProlivy PO.Okean_ID=P.Okean_IDby Okean_NAME

exec Pr_okean

/****Страны и проливы******/

CREATE PROCEDURE St_ProlivP.Proliv_NAME as 'Проливы', count(S.Strana_ID) as 'Число стран'Prolivy Pproliv_STRANA S

on P.Proliv_ID=S.Proliv_ID

Group by Proliv_NAMEby Proliv_NAMESt_Proliv

/*****Река и Океан******/PROCEDURE Rer_OkO.Okean_NAME as 'Океаны', count(R.Reka_ID) as 'Число рек'Okeany OReki RO.Okean_ID=R.Okean_IDby Okean_NAMERer_Ok

/*****Реки и страны*********/PROCEDURE Rek_StrR.Reka_NAME as 'Рука', count(S.Strana_ID) as 'Число стран'Reki RREKA_STRANA SR.Reka_ID=S.Reka_IDby Reka_NAMERek_Str

/*****Озера и страны**********/PROCEDURE Ozer_StrO.Ozera_ID, O.Ozera_NAME as 'Озера', count(S.Strana_ID) as 'Число стран'Ozera OOZERA_STRANA SO.Ozera_ID=S.Ozera_IDby Ozera_NAME, O.Ozera_ID

exec Ozer_Str

/*****Водопады, страны, континенты*****/

CREATE PROCEDURE Kont_VodopadK.Kontinent_NAME as 'Континенты', count(V.Strana_ID) as 'Число стран', count(V.Vodopad_ID) as 'Число водопадов'Kontinenty KVodopady VK.Kontinent_ID=V.Kontinent_IDby Kontinent_NAMEKont_Vodopad

/******Островы, страны**********/PROCEDURE Ost_StrO.Ostrov_NAME as 'Остров', count(S.Strana_ID) as 'Число стран'OSTROVA OOSTROV_STRANA SO.Ostrov_ID=S.Ostrov_IDby Ostrov_NAMEOst_Str

/*******Пустыни и континенты********/PROCEDURE Pust_KontK.Kontinent_NAME as 'Континенты', count(P.Pustinya_ID) as 'Число пустынь'Kontinenty KPustyni PK.Kontinent_ID=P.Kontinent_IDby Kontinent_NAMEPust_Kont

/******Пустыни и страны*********/PROCEDURE Pust_StrP.Pustinya_NAME as 'Пустыни', count(S.Strana_ID) as 'Число стран'Pustyni PPUSTYNYA_STRANA SP.Pustinya_ID=S.Pustinya_IDby Pustinya_NAMEPust_Str

/*****Горные системы и континенты**********/PROCEDURE Gor_Ver_KontK.Kontinent_NAME as 'Континенты', count(G.Gora_ID) as 'Число гор'Kontinenty KGORNYYE_SYSTEMY GK.Kontinent_ID=G.Kontinent_IDby Kontinent_NAMEGor_Ver_Kont

/******Горные системы и страны***********/PROCEDURE Gora_StrG.Gora_NAME as 'Горные системы', count(S.Strana_ID) as 'Число стран'GORNYYE_SYSTEMY GGORA_STRANA SG.Gora_ID=S.Gora_IDby Gora_NAMEGora_Str

/*******Вершины и континенты***********/PROCEDURE Gorn_KontK.Kontinent_NAME as 'Континенты', count(Gn.Gorn_ID) as 'Число вершин'Kontinenty KGORNYYE_VERSHINY GnK.Kontinent_ID=Gn.Kontinent_IDby Kontinent_NAMEGorn_Kont

/*******Вершины и Горы**********/PROCEDURE Gorn_GoraG.Gora_NAME as 'Горы', count(Gn.Gorn_ID) as 'Число вершин'GORNYYE_SYSTEMY GGORNYYE_VERSHINY GnG.Gora_ID=Gn.Gora_IDby Gora_NAMEGorn_Gora

/*******Вершины и страны**********/PROCEDURE Gorn_StrG.Gorn_NAME as 'Вершины', count(S.Strana_ID) as 'Число стран'GORNYYE_VERSHINY GGORN_STRANA SG.Gorn_ID=S.Gorn_IDby Gorn_NAMEGorn_Str

/******Пещеры и континенты**********/PROCEDURE Peshch_KontK.Kontinent_NAME as 'Континенты', count(P.Peshchera_ID) as 'Число пещер'Kontinenty KPESHCHERY PK.Kontinent_ID=P.Kontinent_IDby Kontinent_NAMEPeshch_Kont

/********Пещеры и страны**********/PROCEDURE Peshch_StrS.Strana_NAME as 'Страны', count(P.Peshchera_ID) as 'Число пещер'Strany SPESHCHERY PS.Strana_ID=P.Strana_IDby Strana_NAMEPeshch_Str

/*******Вулканы и континенты********/PROCEDURE Vulk_KontK.Kontinent_NAME as 'Континенты', count(V.Vulkan_ID) as 'Число вулканов'Kontinenty KVULKANY VK.Kontinent_ID=V.Kontinent_IDby Kontinent_NAMEVulk_Kont

/*********Вулканы и Страны*********/PROCEDURE Vulk_StrS.Strana_NAME as 'Страны', count(V.Vulkan_ID) as 'Число вулканов'Strany SVULKANY VS.Strana_ID=V.Strana_IDby Strana_NAMEVulk_Str

/**** ПОИСК ТАБЛИЦ********/PROCEDURE poisk_Kont

@poisk nvarchar(50)begin* from KontinentyKontinent_NAME like (@poisk + N'%')poisk_Kont N'Азия' PROC poisk_Ok

@Poisk nvarchar(50)begin * from OkeanyOkean_NAME like (@Poisk + N'%')poisk_Ok N'Тих'PROC poisk_St

@Poisk nvarchar(50)begin * from StranyStrana_NAME like (@Poisk + N'%')poisk_St N'ал'PROC poisk_Mr

@Poisk nvarchar(50)begin * from MoryaMore_NAME like (@Poisk + N'%')poisk_Mr N''PROC poisk_Mr_St

@Poisk nvarchar(50)begin * from Morya_Strany1More_NAME like (@Poisk + N'%')poisk_Mr_St N'азовс'PROC poisk_Pr

@Poisk nvarchar(50)begin * from ProlivyProliv_NAME like (@Poisk + N'%')poisk_Pr N''PROC poisk_Pr_razd

@Poisk nvarchar(50)begin * from Proliv_razd1Proliv_NAME like (@Poisk + N'%')poisk_Pr_razd N'Бас'PROC poisk_Pr_St

@Poisk nvarchar(50)begin * from Prol_strana1Proliv_NAME like (@Poisk + N'%')poisk_Pr_St N''PROC poisk_Rek

@Poisk nvarchar(50)begin * from RekiReka_NAME like (@Poisk + N'%')poisk_Rek N''PROC poisk_Rk_St

@Poisk nvarchar(50)begin * from Reka_STRANA1Reka_NAME like (@Poisk + N'%')poisk_Rk_St N''PROC poisk_Oz

@Poisk nvarchar(50)begin * from OzeraOzera_NAME like (@Poisk + N'%')poisk_Oz N''PROC poisk_Oz_St

@Poisk nvarchar(50)begin * from Ozera_strana1Ozera_NAME like (@Poisk + N'%')poisk_Oz_St N''PROC poisk_Vod

@Poisk nvarchar(50)begin * from VodopadyVodopad_NAME like (@Poisk + N'%')poisk_Vod N''PROC poisk_Ost

@Poisk nvarchar(50)begin * from OSTROVAOstrov_NAME like (@Poisk + N'%')poisk_Ost N''PROC poisk_Ost_St

@Poisk nvarchar(50)begin * from Ost_Strana1Ostrov_NAME like (@Poisk + N'%')poisk_Ost_St N''PROC poisk_Pust

@Poisk nvarchar(50)begin * from PustyniPustinya_NAME like (@Poisk + N'%')poisk_Pust N''PROC poisk_Ps_St

@Poisk nvarchar(50)begin * from Pustinya_strana1Pustinya_NAME like (@Poisk + N'%')poisk_Ps_St N''PROC poisk_Gr

@Poisk nvarchar(50)begin * from GORNYYE_SYSTEMYGora_NAME like (@Poisk + N'%')poisk_Gr N''PROC poisk_Gr_St

@Poisk nvarchar(50)begin * from Gor_St1Gora_NAME like (@Poisk + N'%')poisk_Gr_St N''PROC poisk_Grn

@Poisk nvarchar(50)begin * from GORNYYE_VERSHINYGorn_NAME like (@Poisk + N'%')poisk_Grn N''PROC poisk_Grn_St

@Poisk nvarchar(50)begin * from Gorn_Strana1Gorn_NAME like (@Poisk + N'%')poisk_Grn_St N''PROC poisk_Pesh

@Poisk nvarchar(50)begin * from PESHCHERYPeshchera_NAME like (@Poisk + N'%')poisk_Pesh N''PROC poisk_Vulk

@Poisk nvarchar(50)begin * from VULKANYVulkan_NAME like (@Poisk + N'%')

endpoisk_Vulk N''

/*****ПОИСК МАЛЕНЬКИХ, БОЛЬШИХ СТРАН, МОРЕЙ...**** **/VIEW Kont_ploshK.Kontinent_ID, K.Kontinent_NAME, S.Ploshad_km2Kontinenty KStrany SK.Kontinent_ID=S.Kontinent_IDPROC malenk_Str_Kont

@poisk nvarchar(50)beginkontinent_NAME as 'Континенты', min(Ploshad_km2) as 'Площадь самой маленькой страны'       Kont_ploshby kontinent_NAMEKontinent_NAME like (@poisk + N'%') malenk_Str_Kont N'Северная Америка'VIEW Mor_OkO.Okean_ID, O.Okean_NAME, M.ploshadOkeany OMorya MO.Okean_ID=M.Okean_IDPROC mal_Mor_Ok

@poisk nvarchar(50)beginOkean_NAME as 'Океаны', min(Ploshad) as 'Самый маленький площадь моря', max(Ploshad) as 'Самый большой площадь моря'Mor_Okby Okean_NAMEOkean_NAME like (@poisk + N'%')mal_Mor_Ok N'Атлантический'

/****ПОИСК КОНТИНЕНТЕ с островами *******/PROC Kont_Ost

@poisk nvarchar(20)beginK.Kontinent_NAME as 'Континент', O.Ostrov_NAME as 'Остров'OSTROVA OKontinenty KO.Kontinent_ID=K.Kontinent_IDKontinent_NAME like (@poisk + N'%')

endKont_Ost N'Аз'

/****ПОИСК ОСТРОВОВ В КОНТИНЕНТЕ *******/

CREATE PROC Ost_Kont

@poisk nvarchar(20)beginO.Ostrov_NAME as 'Остров', K.Kontinent_NAME as 'Континент'OSTROVA OKontinenty KO.Kontinent_ID=K.Kontinent_IDOstrov_NAME like (@poisk + N'%')Ost_Kont N''

.4 Триггеры

Триггер - специальный вид хранимой процедуры, используемый в реляционных БД. Триггер не может вызываться непосредственно пользователем, он привязывается к какой-либо базовой таблице и выполняется автоматически СУБД при вставке, удалении или модификации записей в таблице.