
- •Лабораторная работа № 1
- •1. Общие сведения
- •2. Назначение системы
- •2.1. Моделирование в eRwin
- •2.2.1. Процесс построения информационной модели
- •2.1.2 Отображение логического и физического уровня модели данных в eRwin в
- •2.1.3. Сущности (Entity) в eRwin
- •2.3 Описание работы с пакетом
- •Лабораторная работа № 2
- •1 Исходные данные
- •2 Постановка задачи
- •3 Создание логической модели данных
- •4. Контрольные вопросы:
- •Лабораторная работа № 3
- •1. Общие сведения по работе
- •1.1 Создание файла бд в среде субд ms Access
- •2. Порядок выполнения работы
- •3. Контрольные вопросы:
- •Лабораторная работа № 4
- •1. Общие сведения
- •2. Генерация «скелета» sql-кода в пакете eRwin
- •3. Подключение к серверу бд MySql 5.1 с помощью утилиты sql
- •4. Создание таблиц бд на сервере MySql 5.1 с помощью утилиты ems sql Manager for Mysql Lite.
- •5. Порядок выполнения работы
- •6. Контрольные вопросы
- •Лабораторная работа № 5
- •1. Общие сведения
- •1.1 Язык sql
- •1.2 Тестовая предметная область
- •1.3 Создание и работа с запросами к бд с помощью ems sql Manager
- •2 Запросы insert
- •3 Запросы update
- •4 Запросы delete
- •5 Запросы select
- •6 Порядок выполнения работы
- •7 Контрольные вопросы
- •Лабораторная работа № 6
- •1. Общие сведения
- •1.1 Вычисление дат
- •1.2 Работа с значениями null
- •1.3 Сравнение по шаблонам
- •1.4 Использование нескольких таблиц
- •1.5 Использование вложенных запросов
- •1.6 Использование пользовательских переменных
- •1.8 Использование атрибута auto_increment
- •1.9 Получение системной информации об объектах бд
- •2 Порядок выполнения работы
- •3 Контрольные вопросы
- •Лабораторная работа № 7 Тема: изучение программных средств разработки серверной бизнес-логики в субд mysql 5
- •1. Общие сведения
- •2. Особенности программной разработки обл в среде субд MySql 5.
- •2.1 Представления
- •2.2 Хранимые процедуры
- •2.3. Курсоры
- •2.3 Триггеры
- •3. Порядок выполнения работы
- •4. Контрольные вопросы
- •5. Список литературы
- •1. Общие сведения
- •2. Особенности разработки правил контроля ссылочной целостности
- •2.1 Ссылочная целостность
- •2.2 Транзакции
- •3. Порядок выполнения работы
- •4. Контрольные вопросы
- •Лабораторная работа № 2-6
- •1. Общие сведения
- •2. Оптимизация запросов.
- •2.1. Использование оператора explain
- •2.2. Пример использования оператора explain.
- •2.3.Как MySql оптимизирует left join и right join
- •3. Оптимизация структуры бд
- •3.1.Использование индексов в MySql
- •3.2.Индексы столбцов
- •3.2. Многостолбцовые индексы
- •4. Порядок выполнения работы
- •5. Контрольные вопросы
2.3 Триггеры
MySQL5 поддерживает следующий синтаксис команды CREATE для создания триггера:
CREATE
[DEFINER = {имя пользователя | CURRENT_USER }]
TRIGGER имя_триггера
время_срабатывания_триггера
событие_вызывающее_триггер
ON имя_таблицы
FOR EACH ROW
тело триггера
При этом параметры этого определения таковы:
время_срабатывания_триггера - задается параметрами BEFORE и AFTER,
(соответственно до и после события);
событие_вызывающее_триггер – может принимать значения INSERT,
UPDATE и DELETE и, соответственно данный триггер будет вызван перед
или после выполнения этих операций;
имя_таблицы – специфицирует таблицу, для которой задан этот триггер;
конструкция FOR EACH ROW означает, что условие срабатывания триггера
проверяется при обработке каждой строки соответствующей таблицы (по
умолчанию ….).
тело триггера
BEGIN
/* набор допустимых операторов SQL */
END;
Начиная с версии MySQL 5.1 триггеры могут обращаться к внешним таблицам непосредственно используя их имена, для более ранних версий MySQL триггеры могут взаимодействовать только с таблицей для которой они были вызваны.
Пример: Предположим, что таблица студенты students содержит инициалы студента (первые буква фамилии и имени в отдельном поле), необходимо реализовать триггер, который бы автоматически заносил эти данные в таблицу при добавлении нового студента. Таблица students с учетом добавления поля принимает следующий вид:
CREATE TABLE `students` (
`student_id` int(11) NOT NULL auto_increment,
`group_id` int(11) default NULL,
`FirstName` varchar(20) default NULL,
`LastName` varchar(20) default NULL,
`order_num` int(11) default NULL,
`FIO` varchar(2) default NULL,
PRIMARY KEY (`student_id`),
KEY `students_group_id` (`group_id`),
KEY `group_id` (`group_id`,`FirstName`),
CONSTRAINT `students_fk` FOREIGN KEY (`group_id`) REFERENCES
`groups` (`group_id`) ON DELETE NO ACTION );__
Триггер students_before_ins_tr задается следующим образом:
CREATE TRIGGER `students_before_ins_tr`
BEFORE INSERT ON `students`
FOR EACH ROW
BEGIN
SET NEW.FIO = CONCAT(SUBSTRING(NEW.LastName,1,
1),SUBSTRING(NEW.FirstName,1, 1));
END;
Здесь NEW, как уже было сказано выше идентификатор записи которая вставляется (триггер создан на срабатывание перед вставкой), SUBSTRING – функция, вырезающая из строки подстроку (необходима для получения первого символа), CONCAT – функция конкатенации (сложения подстрок в одну строку).
В EMS Manager для работы с триггерами существует удобный интерфейс (см Рисунок 7.2). Данный интерфейс доступен из подменю Triggers выбранной таблицы. В полях Type и Event можно быстро менять правила по которым вызывается триггер (соответственно время и событие).
Рисунок 7.2 – Утилита EMS SQL Manager Lite for MySQL: интерфейс пользователя в режиме редактирования триггера.
3. Порядок выполнения работы
В соответствии с моделью данных, полученной в ходе выполнения предыдущих лабораторных работ и пользуясь приведенным выше описанием правил разработки ОБЛ необходимо:
(1) создать представление;
(2) создать хранимую процедуру;
(3) создать триггер.
Прим. При этом создаваемые ОБЛ должны существенно отличаться от приведенных в качестве примеров в данном документе и иметь смысл применительно к предметной области, используемой в лабораторной работе.