Саратовский Государственный университет им. Н.Г. Чернышевского
Курсовая работа
на тему: «Особенности разработки триггеров и хранимых процедур в СУБД»
(на примере базы данных отдела кадров)
студентки I V курса заочного отделения КН и ИТ
(прикладная математика и информатика)
ФРОЛОВОЙ Марии Александровны
Содержание
1. Ведение
2. Реляционная база данных
3. Хранимые процедуры
4. Триггеры
Заключение
1. ВВЕДЕНИЕ
· Базы данных
С появлением магнитных дисков началась история систем управления данными во внешней памяти. До этого каждая прикладная программа, которой требовалось хранить данные во внешней памяти, сама определяла расположение каждой порции данных на магнитной ленте или барабане и выполняла обмены между оперативной и внешней памятью с помощью программно-аппаратных средств низкого уровня (машинных команд или вызовов соответствующих программ операционной системы). Такой режим работы не позволяет или очень затрудняет поддержание на одном внешнем носителе нескольких архивов долговременно хранимой информации. Кроме того, каждой прикладной программе приходилось решать проблемы именования частей данных и структуризации данных во внешней памяти.
База данных (БД) – это структурированный набор постоянно хранимых данных. Постоянность означает, что данные не уничтожаются по завершении программы или пользовательского сеанса, в котором они были созданы.
База данных- это набор, совокупность файлов, в которых находится информация. Программная система (приложение), обеспечивающая работу с базой данных (файлами данных) называется системой управления базой данных (СУБД).
В зависимости от расположения программы, которая использует данные, и самих данных, а также от способа разделения данных между несколькими пользователями различают локальные и удаленные базы данных.
По структуре организации данных базы делятся на реляционные и нереляционные.
Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные.
В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language).
Прежде всего, язык SQL сочетает средства SDL и DML, т.е. позволяет определять схему реляционной БД и манипулировать данными. При этом именование объектов БД (для реляционной БД - именование таблиц и их столбцов) поддерживается на языковом уровне в том смысле, что компилятор языка SQL производит преобразование имен объектов в их внутренние идентификаторы на основании специально поддерживаемых служебных таблиц-каталогов. Внутренняя часть СУБД (ядро) вообще не работает с именами таблиц и их столбцов.
2. РЕЛЯЦИОННЫЕ БАЗА ДАННЫХ (РБД)
Реляционная база данных - это тело связанной информации, сохраняемой в двумерных таблицах. Напоминает адресную или телефонную книгу.
Были созданы таблицы DAN (Interbase) и данные (MS Access) со столбцами:
Interbase | MS Access |
TAB_NO – табельный номер FAM – фамилия работника IMIA – имя работника OTSH – отчество работника G_R - год рождения работника ADRES - адрес работника TEL - телефон DATA_P – дата приема DATA_U - дата увольнения OBRAZ - образование SEM_POLOJ – семейное положение S_N_PASPORT – паспортные данные K_V - код выслуги K_O - код оклада K_P - код профессии | табельный номер фамилия работника имя работника отчество работника год рождения работника адрес работника телефон дата приема дата увольнения образование семейное положение паспортные данные код выслуги код оклада код профессии |
и заполненными строками. Каждая строка (называемая также записью - основной элемент БД) будет соответствовать определенной особенности; каждый столбец будет содержать значение для каждого типа данных - имени, телефонного номера, и адреса представляемого в каждой строке.
То что мы получили - является основой реляционной базы данных как и было определенно, а именно, двумерной (строка и столбец) таблицей информации. Однако реляционные базы данных редко состоят из одной таблицы. Такая таблица меньше чем файловая система. Создав несколько таблиц взаимосвязанной информации, мы сможем выполнить более сложные и мощные операции с данными. Мощность базы данных зависит от связи, созданной между фрагментами информации, а не от самого фрагмента информации.
Но на примере наших таблиц можно показать реальное использование в деловой ситуации. Предположим, что персонажи в наших первых таблицах - это работники МЧС России. В другой таблице, мы могли бы запомнить дополнительную информацию них. Столбцы второй таблицы PROF (Interbase) и профессия (MS Access) профессия выглядят так:
SELECT * FROM PROF; | SELECT профессия.[код профессии], профессия.[название профессии] FROM профессия; |
Interbase | MS Access |
K_P NAZ ==== ======== 1 пожарный 2 водитель 3 бухгалтер 4 инспектор 5 начальник караула 6 диспетчер 7 секретарь 8 водометчик 9 командир отделения 10 начальник части 11 заместитель по тылу 12 наводчик | код название профессии профессии = = = = = = = = = = = == = = = = = = = == 1 пожарный 2 водитель 3 бухгалтер 4 инспектор 5 начальник караула 6 диспетчер 7 секретарь 8 водометчик 9 командир отделения 10 начальник части 11 заместитель по тылу 12 наводчик |
Вся таблица:
Много мощных функций можно выполнить, извлекая информацию из этих таблиц согласно указанным параметрам, особенно когда эти параметры включают в себя фрагменты информации связанные в различных таблицах друг с другом. Например, возьмем запрос: Вывод сотрудников с соответствующими им профессиями:
Interbase | SELECT TAB_NO,FAM,IMIA,OTSH,G_R,PROF.NAZ FROM DAN,PROF WHERE DAN.K_P=PROF.K_P; |
MS Access | SELECT данные.[табельный номер], данные.фамилия, данные.имя, данные.отчество, данные.[год рождения], профессия.[название профессии] FROM профессия INNER JOIN данные ON профессия.[код профессии] = данные.[код профессии]; |
Interbase | TAB_NO FAM IMIA OTSH G_R NAZ ====== ========= ========== =============== ==== ================ 1001 Петров Петр Петрович 01.12.1971 инспектор 1002 Сидоров Павел Сергеевич 10.03.1975 начальник караула 1003 Кортунов Сергей Владимирович 17.07.1963 начальник части 1004 Семенова Пелагея Никитична 01.06.1985 диспетчер 1005 Романова Евлампия Апполинарьевна 04.12.1982 диспетчер 1006 Несмелая Агрофена Агриповна 04.11.1976 секретарь 1007 Сердюков Игорь Игнатьевич 27.05.1978 пожарный 1008 Любимов Петр Николаевич 17.02.1967 водометчик 1009 Шарипов Руслан Имранович 14.08.1960 пожарный 1010 Ухабистова Авдотья Владиленовна 07.10.1956 бухгалтер 1011 Игумнов Андрей Дмитриевич 25.03.1962 заместитель по тылу 1012 Ильюшин Дмитрий Александрович 19.11.1958 наводчик 1013 Туполев Эдуард Валентинович 06.01.1969 пожарный 1014 Рабинович Ицхак Абрамович 23.09.1984 водитель 1000 Иванов Иван Иванович 12.04.1968 водитель |
MS Access |