Особенности разработки триггеров и хранимых процедур в СУБД - Программирование, компьютеры и кибернетика курсовая работа

Главная
Программирование, компьютеры и кибернетика
Особенности разработки триггеров и хранимых процедур в СУБД
Сущность базы данных - набора, совокупности файлов, в которых находится информация. Система управления базой данных - программная система (приложение), обеспечивающая работу с базой данных (файлами данных). Назначение и польза от применения триггеров.
посмотреть текст работы
скачать работу можно здесь
полная информация о работе
весь список подобных работ
Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Саратовский Государственный университет им. Н.Г. Черныше в ского
на тему: «Особенности разработки триггеров и хранимых процедур в СУБД»
(на примере базы данных отдела кадров)
студентки I V курса заочного отделения КН и ИТ
(прикладная математика и информатика)
С появлением магнитных дисков началась история систем управления данными во внешней памяти. До этого каждая прикладная программа, которой требовалось хранить данные во внешней памяти, сама определяла расположение каждой порции данных на магнитной ленте или барабане и выполняла обмены между оперативной и внешней памятью с помощью программно-аппаратных средств низкого уровня (машинных команд или вызовов соответствующих программ операционной системы). Такой режим работы не позволяет или очень затрудняет поддержание на одном внешнем носителе нескольких архивов долговременно хранимой информации. Кроме того, каждой прикладной программе приходилось решать проблемы именования частей данных и структуризации данных во внешней памяти.
База данных (БД) - это структурированный набор постоянно хранимых данных. Постоянность означает, что данные не уничтожаются по завершении программы или пользовательского сеанса, в котором они были созданы.
База данных- это набор, совокупность файлов, в которых находится информация. Программная система (приложение), обеспечивающая работу с базой данных (файлами данных) называется системой управления базой данных (СУБД).
В зависимости от расположения программы, которая использует данные, и самих данных, а также от способа разделения данных между несколькими пользователями различают локальные и удаленные базы данных.
По структуре организации данных базы делятся на реляционные и нереляционные.
Для работы с базами данных используются специальные языки, в целом называ емые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные.
В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language).
Прежде всего, язык SQL сочетает средства SDL и DML, т.е. позволяет определять схему реляционной БД и манипулировать данными. При этом именование объектов БД (для реляционной БД - именование таблиц и их столбцов) поддерживается на языковом уровне в том смысле, что компилятор языка SQL производит преобразование имен объектов в их внутренние идентификаторы на основании специально поддерживаемых служебных таблиц-каталогов. Внутренняя часть СУБД (ядро) вообще не работает с именами таблиц и их столбцов.
2. РЕЛЯЦИОННЫЕ БАЗА ДАННЫХ (Р БД )
Реляционная база данных - это тело связанной информации, сохраняемой в двумерных таблицах. Напоминает адресную или телефонную книгу.
Были созданы таблицы DAN (Interbase) и данные (MS Access) со столбцами:
и заполненными строками. Каждая строка (называемая также записью - основной элемент БД) будет соответствовать определенной особенности; каждый столбец будет содержать значение для каждого типа данных - имени, телефонного номера, и адреса представляемого в каждой строке.
То что мы получили - является основой реляционной базы данных как и было определенно, а именно, двумерной (строка и столбец) таблицей информации. Однако реляционные базы данных редко состоят из одной таблицы. Такая таблица меньше чем файловая система. Создав несколько таблиц взаимосвязанной информации, мы сможем выполнить более сложные и мощные операции с данными. Мощность базы данных зависит от связи, созданной между фрагментами информации, а не от самого фрагмента информации.
FROM профессия INNER JOIN данные ON профессия.[код профессии] = данные.[код профессии];
1000 Иванов Иван Иванович 12.04.1968 водитель
'данные' без подчиненных в 'оклады'
INSERT INTO DAN (FAM, IMIA, OTSH, G_R, ADRES, TEL, DATA_P, DATA_U, OBRAZ,
SEM_POLOJ, S_N_PASPORT, K_V, K_O, K_P)
VALUES ('Кротов', 'Андрей', 'Федорович', '12.08.1961', 'Кирова 52-124', '281344', '21.02.2008', '28.03.2008','среднее''холост', '9999 22', '900' , '50' , '1');
То есть триггер перед вставкой произвел проверку, указал ли пользователь значение поля TAB_NO, и не обнаружив такового, воспользовался генератором, увеличив его значение на 1, занес полученное в поле TAB_NO нового сотрудника.
Генератор, в свою очередь, теперь хранит значение 1014.
Кроме контекстной переменной NEW, существует переменная OLD. В отличие от NEW, OLD содержит старые значения записи, которые удаляются или изменяются. Например, можно использовать переменную OLD для получения значений записей, которые удаляются из таблицы.
Следующий триггер срабатывает ПОСЛЕ УДАЛЕНИЯ ( AFTER DELETE) и записывает строки, удаленные из таблицы в отдельную таблицу.
Сначала необходимо создать таблицу для хранения удаленных данных.
VALUES (OLD.TAB_NO, OLD.FAMILIA, OLD. IMIA E, OLD.OTSHO, OLD.GOD_R,
Как только происходит удаление строки из таблицы DANNIE,
Так как, в данной БД при удалении строки из таблицы DAN удаляется и строка из таблицы NASH (начисления) с идентичным табельным номером (TAB_NO), уместно было бы создать триггер, который сохранял бы и данные из таблицы NASH. Чтобы не создавать лишние таблицы для хранения удаленных данных можно расширить уже созданную таблицу DAN_D.
ALTER TABLE DAN_D ALL KOD_Z_D FLOAT;
ALTER TABLE DAN_D ALL KOD_D_D FLOAT;
ALTER TABLE DAN_D ALL KOD_V_D FLOAT;
ALTER TABLE DAN_D ALL SLOJ_D FLOAT;
ALTER TABLE DAN_D ALL PAIK_D FLOAT ;
Следующий триггер срабатывает после удаления строки из таблицы NASH.
SET KOD_Z_D=OLD.KOD_Z, KOD_D_D=OLD.KOD_D,
KOD_V_D=OLD.KOD_V, SLOJ_D=OLD.SLOJ,
1. Произойдет удаление строки с TAB_NO=1014 из таблицы DAN.
2. Сработает триггер DEL_DAN, который запишет удаленную строку в таблицу DAN_D.
3. Произойдет удаление строки с TAB_NO=1014 из таблицы NASH.
4. Сработает триггер DEL_NASH и допишет в, уже наполовину заполненную строку таблицы DAN_D, данные из таблицы NASH, соответствующие этому сотруднику ( WHERE TAB_NO_D=OLD.TAB_NO).
Следующий триггер срабатывает после добавления строки в таблицу DAN и запускает хранимую процедуру, которая, в свою очередь, заполняет строку с таким же табельным номером (TAB_NO) в таблице начислений (NASH). Поскольку нельзя предугадать, какими будут начисления того или иного работника, по умолчанию поля таблицы NASH будут заполняться значениями соответствующими минимальным начислениям предприятия, которые потом, безусловно, следует изменить. Хранимая процедура, вызванная триггером, лишь предварительно заполняет таблицу NASH, как бы занимая место для нового сотрудника, уже занесенного в таблицу DAN.
EXECUTE PROCEDURE VSTAV_NASH (NEW.TAB_NO);
Хранимая процедура, вызываемая триггером.
CREATE PROCEDURE VSTAV_NASH (T FLOAT )
VALUES (: T, 200, 307, 100, 0.5, 20);
INSERT INTO DAN (FAM, IMIA,OTSH,G_R,ADRES,TEL)
VALUES ('Кротов', 'Андрей', 'Федорович', '12.08.1961', 'Кирова 52-124', '281344');
1. Сработает триггер VS_T, который присвоит новому сотруднику,
следующий по порядку, табельный номер.
2. Заполнятся строка в таблице DANNIE соответствующими данными о новом сотруднике.
3. Срабатывает триггер Z_NASH, который вызывает ХП.
4. Хранимая процедура VSTAV_NASH вставляет в таблицу NASH данные (принятые по умолчанию) для нового сотрудника.
По умолчанию триггер создается активным, т. е. он будет срабатывать при осуществлении соответствующей операции. Состоянием триггера управляет ключевое слово ACTIVE в заголовке. Если же триггер сделать неактивным, то он не будет исполняться при возникновении операции. Это бывает полезным при осуществлении каких-либо внеплановых операций над данными, например массовой заливке данных или ручном исправлении данных. Чтобы отключить триггер, необходимо выполнить команду DDL:
ALTER TRIGGER INACTIVE ;
Удаление триггера выполняется с помощью оператора DROP TRIGGER . Синтаксис оператора удаления таков:
Это отдельная подпрограмма, связанная с таблицей или вьюером , которая автоматически выполняет действие, когда модифицируется таблица или вьюер на уровне строки. Они не вызываются напрямую, только при модификации таблиц или вьюеров.
//Триггер срабатывает после удаления строки из таблицы DAN и записывает удаленную строку в таблицу UD_DAN.
CREATE TRIGGER CHRAN_UD_DAN FOR DAN
VALUES(OLD.TAB_NO,OLD.FAM,OLD.IMIA,OLD.OTSH,OLD.G_R,OLD.ADRES,OLD.TEL,OLD. DATA_P, OLD.DATA_U,OLD.OBRAZ,OLD.SEM_POLOJ,OLD.S_N_PASPORT,OLD.K_V,OLD.K_O,OLD.K_P);
произойдет, конечно, удаление строки из таблицы DAN, сработает триггер, и удаленная строка запишется в таблицу UD_DAN, которая собственно и предназначена для хранения удаленных данных.
Что бы отключить триггер следует выполнить команду
ALTER TRIGGER < имя триггера > INACTIVE;
Включить триггер следует выполнить команду
ALTER TRIGGER <имя триггера> ACTIVE;
БД всегда содержит какую-нибудь особенность, которая не вписывается в схему возможных ограничений Access на значение конкретного поля или совокупности полей в записи таблицы. Кое-какие ограничения, конечно, задать можно, но их сложность ограничивается сложностью выражения, которое Access способен переварить в качестве такого ограничения. Никакой сложной обработки, вроде обращения к другим таблицам, там нет.
Пожелание разработчика в целом можно сформулировать так: "хочу иметь пользовательскую функцию, которая срабатывает всякий раз, когда данные в таблице меняются (точнее - хотят измениться!), такую, которая может либо запретить изменение, либо что-то в нем скорректировать, и такую, которую никак нельзя обойти". В современных СУБД такая функция называется триггером (trigger). Триггеры есть, в SQL Server.
В Access предлагалось достаточно примитивное решение проблемы: для заполнения любой таблицы обычно существует форма, у формы есть события, повесив на которые обработчики VBA можно достичь необходимого результата. Все это, в общем, было бы не плохо, если бы можно закрыть для пользователя доступ к редактированию данных непосредственно в таблицах. Но вот этого-то Access сделать до конца корректно не позволяет.
Часто лучше потерять все данные сразу, чем иметь ошибочные данные и думать, что они правильные. Поэтому проблема контроля ввода данных в таблицы является весьма и весьма насущной.
В основе Access лежит ядро баз данных Microsoft Jet. Объекты Access, доступные из VBA (в Access 2000 - из VB), являются на самом деле объектами ядра Jet. Те же обработчики событий в формах, например, мы имеем возможность писать благодаря тому, что объект ядра Jet Form поддерживает эти события. Ядро Jet имеет невысокие по сравнению с большими СУБД требования к ресурсам системы, обладая при этом достаточно большим потенциалом. Именно поэтому Access выглядит таким мобильным и годится для решения многих практических задач на достаточно современном уровне с минимальным количеством накладных расходов.
На уровне ядра Jet в Microsoft Access 2000 триггеров нет! Это продиктовано чисто коммерческими соображениями и связано с желанием Microsoft стремительно продвигать на рынок технологии, использующие SQL Server 7.0. В документации по Access триггером иногда называется группа кнопок, выполняющих функции переключателей - так это не те триггеры.
И в то же время, возможность использовать триггеры в Access 2000 есть. Microsoft теперь считает, что время Jet прошло и настала очередь больших корпоративных СУБД. Таких как SQL Server 7.0. Предусмотрено постепенное вытеснение Jet технологиями клиент-сервер. Появилось новое ядро баз данных MSDE (Microsoft Database Engine), очень тесно совместимое с SQL Server 7.0, практически это сильно усеченный SQL Server. Работая через это ядро можно хранить данные в формате SQL Server 7.0. Именно это рекомендуется делать тем, кто хочет иметь триггеры в Access 2000.
Загрузить в Access 2000 БД, которую мы хотим конвертировать в формат SQL Server 7.0, и запустить Upsizing Wizard . Wizard сделает все, что нужно, БД будет храниться далее в формате MS SQL Server 7.0, а не в mdb-файле. В Access вместо mdb мы будем загружать файл проекта adp.
Мы получаем возможность использовать виды (views), триггеры (triggers) и хранимые процедуры (stored procedures) SQL Server, редактируя их непосредственно из Access. Повышается уровень безопасности транзакций, появляются еще кое-какие плюсы, которые разработчика под Access обычно мало волнуют. Поскольку БД становится полностью совместима с SQL Server, можем пользоваться всем. При этом у нас остается весь инструментарий Access по разработке пользовательского интерфейса. Мы можем использовать также защиту данных на уровне SQL Server. Таблица Access в режиме дизайна начинает выглядеть так, как в Enterprise Manager SQL Server 7.0. Исчезает также вкладка Queries, вместо нее появляются вкладки Views и Stored Procedures.
Система становится заметно более тормозной. Хорошо для корпоративных решений, но совсем плохо для настольных баз данных. Чтобы писать триггеры, придется освоить язык, на котором они пишутся - Transact-SQL. Чтобы полноценно использовать предоставленные Вам возможности, нужно знать SQL Server 7.0
If ChildFormIsOpen() Then FilterChildForm
Forms![данные].Filter = "[код профессии] = " & Me.[код профессии]
If Not Me.[ToggleLink] Then Me![ToggleLink] = True
If Me![ToggleLink] Then Me![ToggleLink] = False
ChildFormIsOpen = (SysCmd(acSysCmdGetObjectState, acForm, "данные") And acObjStateOpen) <> False
Мы рассмотрели несколько типов объектов баз данных -- хранимые процедуры, триггеры. Мы узнали следующее:
Хранимая процедура -- это скомпилированный набор SQL-предложений, сохраненный в базе данных как именованный объект и выполняющийся как единый фрагмент кода. Для создания хранимой процедуры применяется предложение CREATE PROCEDURE, для изменения -- ALTER PROCEDURE, а для удаления -- DROP PROCEDURE.
Tриггер -- это специальный тип хранимой процедуры, которая автоматически вызывается, когда данные в определенной таблице добавляются, удаляются или изменяются с помощью SQL-предложений INSERT, DELETE или UPDATE. Триггеры создаются с помощью предложения CREATE TRIGGER. Для изменения триггера используется предложение ALTER TRIGGER, а для удаления -- предложение DROP TRIGGER.
С.Д. Кузнецов, информационно-аналитические материалы Центра Информационных Технологий пользованием интерфейса ядра СУБД.
Грубер М. Понимание SQL- МОСКВА 1993 ( Под редакцией Булычева В.Н.Перевод Лебедева В.Н.)
К.Дейт. Введение в системы баз данных. 6-е издание. «Диалектика» Киев-Москва, 1998.
Т.Каннолли, К.Бегг, А. Страчан -Базы данных: проектирование, реализация и сопровождение.Теория и практика
Пахомов Б.И. Interbase b C++Builder на примерах./Б.И.Пахомов. - СПб.; БХВ- Петербург, 2006
КомпьютерПресс 12'2000. Copyright © КомпьютерПресс 2008
Проектирование баз данных, реализация ее серверной части, методика создания таблиц, различных триггеров, хранимых процедур, клиентского приложения. Процедура поиска данных, фильтрации данных, вывода отчета, ввода SQL запросов и вывода хранимых процедур. контрольная работа [50,1 K], добавлен 30.10.2009
СУБД - многопользовательские системы управления базой данных, специализирующиеся на управлении массивом информации. Запросы на выборку и изменение данных, формирование отчетов по запросам выборки. Схема базы данных. Программа по управлению базой данных. реферат [1,9 M], добавлен 27.12.2013
Процессы обработки информации. Эффективность автоматизированной информационной системы. Система управления базой данных. Локальная и распределенная система банков и баз данных. Этапы проектирования базы данных. Различие уровней представления данных. контрольная работа [75,7 K], добавлен 07.07.2015
Создание программ, позволяющих создавать базы данных. Создание таблицы базы данных. Создание схемы данных. Создание форм, отчетов, запросов. Увеличение объема и структурной сложности хранимых данных. Характеристика системы управления базой данных Access. курсовая работа [2,1 M], добавлен 17.06.2013
Определение функциональных зависимостей. Разработка структуры базы данных. Организация запросов к базе данных. Использование триггеров для поддержки данных в актуальном состоянии. Разработка хранимых процедур и функций. Ограничения ведения базы данных. курсовая работа [113,2 K], добавлен 17.06.2014
Система управления базой данных (СУБД), централизованное обеспечение безопасности и целостности данных, защита от несанкционированного доступа. Построение концептуальной и реляционной моделей. Процесс нормализации. Проектирование базы данных в ACCESS. курсовая работа [1,8 M], добавлен 29.10.2008
Проектирование базы данных фирмы по предоставлению телекоммуникационных услуг с помощью СУБД MS SQL SERVER. Построение логической и физической модели данных. Описание информационных потребностей пользователя. Создание хранимых процедур и триггеров. курсовая работа [2,3 M], добавлен 21.03.2015
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .
© 2000 — 2021
K_P NAZ
==== ========
1 пожарный
2 водитель
3 бухгалтер
4 инспектор
5 начальник караула
6 диспетчер
7 секретарь
8 водометчик
9 командир отделения
10 начальник части
11 заместитель по тылу
12 наводчик
Таб №
фамилия
имя
отчество
год рождения
название профессии
1
ИВАНОВ
Иван
Иванович
1988
пожарный
2
ПЕТРОВ
Петр
Петрович
1988
пожарный
3
СИДОРОВ
Сидор
Сидорович
1977
пожарный
4
ФРОЛОВА
Мария
Александровна
1970
секретарь
5
ФРОЛОВА
Анастасия
Дмитриевна
1990
инспектор
5
КУКУШКИН
Антон
Викторович
1955
заместитель по тылу
Особенности разработки триггеров и хранимых процедур в СУБД курсовая работа. Программирование, компьютеры и кибернетика.
Реферат Историческая Справка
Сочинение: Раскольников в системе образов романа Преступление и наказание
Курсовая Работа На Тему Сми
Курсовая Работа Требования Предъявляемые К Судебному Решению
Курсовая работа: Полномочия суда на досудебных стадиях уголовного процесса
Реферат: Культурогенез и ценности культуры. Скачать бесплатно и без регистрации
Курсовая работа по теме Пассионарная теории этногенеза
Реферат: Бизнес – план создания крематория в г. Хабаровске
Курсовая работа по теме Субъект преступления
Курсовая Работа По Экономике Городского Хозяйства
Реферат: Анахарсис – один из семи мудрецов античного мира. Скачать бесплатно и без регистрации
Реферат: Проблемы налоговых органов. Меры по повышению эффективности работы налоговых служб
Дипломная работа по теме Управление персоналом предприятия
Реферат: Walt Disney Essay Research Paper Walt DisneyWhen
Реферат: Россия и мировое сообщество на современном этапе
Контрольная работа: Ресурсы Мирового океана и перспективы их использования
Курсовая Работа На Тему Исторические Ступени И Общественные Формы Производства
Реферат: Эволюция человеческих отношений
Реферат: Jacques Cartier Essay Research Paper Tom Jodlowski091998HistoryJacques
Контрольная Работа По Алгебре 11 Профильный
Принципы обучения младших школьников английскому языку - Педагогика курсовая работа
Характеристика ЧУП "Новая История" - Маркетинг, реклама и торговля отчет по практике
Кенигсберг-13 и мистика Калининграда - История и исторические личности доклад