
- •Введение. Структура предмета. Основные понятия
- •1.История развития баз данных
- •2. История развития субд
- •4.Основные понятия и определения
- •Контрольные вопросы
- •Раздел 1. Структура и технологии субд. Модели данных
- •Тема1.1 Архитектура и технико-экономические характеристики субд. Архитектура бд.
- •1. Основные функции субд
- •2. Обобщенная архитектура субд
- •3. Процесс прохождения пользовательского запроса
- •4. Архитектура бд
- •Контрольные вопросы
- •Тема 1.2 Модели данных. Основные понятия и классификация
- •1. Классификация моделей данных
- •3 Пример разработки простой er-модели
- •Контрольные вопросы
- •Тема 1.3 Иерархическая, сетевая и реляционная модели данных
- •1. Иерархическая модель данных
- •2. Сетевая модель данных
- •3. Реляционная модель данных
- •Базовые понятия реляционных баз данных
- •Контрольные вопросы
- •Тема 1.4 Физические модели данных
- •1. Файловые структуры, используемые для хранения информации в базах данных
- •2. Индексные файлы
- •3. Моделирование отношения 1:м с использованием однонаправленных указателей
- •Контрольные вопросы
- •Тема 1.5 Целостность бд. Нормальные формы
- •1. Основные понятия
- •Null-значения
- •Трехзначная логика (3vl)
- •Потенциальные ключи
- •2.Целостность сущностей
- •2 . Основные нормальные формы
- •Аномалии обновления
- •Определение функциональной зависимости
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Контрольные вопросы
- •Тема 1.6 Операции и основные понятия реляционной алгебры и реляционного исчисления
- •1. Реляционная алгебра
- •Замкнутость реляционной алгебры
- •Отношения, совместимые по типу
- •2. Теоретико-множественные операторы
- •3. Специальные реляционные операторы
- •Соединение
- •Общая операция соединения
- •Тэта-соединение
- •Экви-соединение
- •Естественное соединение. Определение 10. Пусть даны отношения и , имеющие одинаковые атрибуты (т.Е. Атрибуты с одинаковыми именами и определенные на одинаковых доменах).
- •Контрольные вопросы
- •Тема 1.7 Проектирование реляционной базы данных
- •1. Методология проектирования базы данных
- •2. Этапы проектирования базы данных
- •Контрольные вопросы
- •Раздел 2. Язык sql и его возможности
- •Тема 2.1 История языка sql. Создание и редактирование схемы бд
- •1. Развитие языка sql
- •Что такое пользователь?
- •Числовые константы
- •2 Создание базы данных и структуры таблицы
- •3. Модификация структуры таблицы и удаление таблицы
- •4. Индексы
- •5. Добавление новых данных
- •Однострочный оператор insert
- •Многострочный оператор insert
- •Утилиты пакетной загрузки
- •6. Удаление существующих данных
- •Оператор delete с вложенным запросом
- •7. Обновление существующих данных
- •Обновление всех строк
- •Контрольные вопросы
- •Тема 2.2 Организация запросов к базе данных.
- •1. Формирование запросов к одной таблице
- •2. Статистические функции
- •3. Группировка и агрегатные функции в запросах
- •4. Объединение таблиц
- •Объединения таблиц по равенству значений в столбцах и другие виды объединений
- •5. Объединение таблицы с собой
- •6. Теоретико-множественные операции с таблицами
- •7. Выполнение сложных запросов с вложенными подзапросами
- •Использование выражений в подзапросах
- •Контрольные вопросы
- •Тема 2.3 Виртуальные таблицы Цель: рассмотреть понятие «виртуальная таблица»; назначение виртуальных таблиц и область их использования
- •1. Команда create view
- •2. Групповые представления
- •3. Представления и объединения
- •4. Представления и подзапросы
- •5. Удаление и модификация представлений
- •Контрольные вопросы
- •1.Определение триггера и его назначение
- •2. Типы триггеров
- •Создание триггеров dml
- •Создание триггеров замещения
- •Создание системных триггеров
- •Другие аспекты использования триггеров
- •3. Хранимые процедуры
- •Хранимые функции
- •Контрольные вопросы
- •Тема 2.5 Защита информации в бд
- •1. Общие понятия привилегий
- •Стандартные привилегии
- •2. Предоставление привилегий с использованием представлений
- •3. Другие типы привилегий
- •Контрольные вопросы
- •Тема 2.6 Транзакции и управлении ими
- •1. Что такое транзакция
- •2 . Операторы commit и rollback
- •3. Журнал транзакций
- •5. Транзакции и работа в многопользовательском режиме
- •Проблема пропавшего обновления
- •Проблема промежуточных данных
- •Проблема несогласованных данных
- •Проблема строк-призраков
- •6. Параллельные транзакции
- •Уровни блокировки
- •Жесткая и нежесткая блокировки
- •Тупиковые ситуации
- •Усовершенствованные методы блокировки
- •Контрольные вопросы
- •Тема 2.7 Распределенные базы данных. Модели серверов
- •1.Распределенная обработка данных
- •2. Модели «клиент—сервер» в технологии баз данных
- •Двухуровневые модели
- •Модель сервера приложений
- •3. Модели серверов баз данных
2. Типы триггеров
Триггеры делятся на три основных типа: триггеры DML, триггеры замещения и системные триггеры.
Триггеры DML
Триггер DML активизируется оператором DML, и тип триггера определяется типом этого оператора. Триггеры DML задаются для операций ведения, обновления и удаления информации (INSERT, UPDATE, DELETE). Они активизируются к или после операции, на уровне строки или оператора.
Операторный триггер может активизироваться операторами нескольких видов. Например, Update Major Stats срабатывает на операторов INSERT, UPDATE и DELETE. Активизирующее событие указывает одну или несколько операций DML, что вызывают выполнение триггера.
Триггеры замещения (instead) можно создавать только для представлений (либо объектных, либо реляционных). В отличие от триггеров DML, которые выполняются как добавление к операторам DML, триггеры замещения выполняются вместо операторов DML, что вызывают их срабатывание. Триггеры замещения должны быть строчными триггерами.
Системный триггер активизируется не на операцию DML, выполняемую над таблицей, а на системное событие, например, на запуск или остановку базы данных. Системные триггеры срабатывают и на операции DDL, такие как создание таблицы.
Создание триггеров dml
Существует 12 возможных видов: 3 оператора х 2 моменты времени х 2 уровня. Ниже приведены правила правильных триггеров DML:
До выполнения операции обновления на операторном уровне
После выполнения операции введения на уровне строк
До выполнения операции удаления на уровне строк
Кроме того, триггер может активизироваться несколькими типами операторов DML, выполняемых над конкретной таблицей: например, INSERT и UPDATE. Код триггера выполняется вместе с активизирующим оператором как часть одной транзакции.
Для таблицы можно создать любое число триггеров каждого вида, в том числе несколько триггеров определенного DML-типа. Например, можно описать два операторных триггера AFTER DELETE. Триггеры одного и того же типа будут срабатывать в порядке очереди.
Порядок активизации триггеров DML
Триггеры активизируются при выполнении оператора DML. Алгоритм выполнения оператора DML такой:
1. Выполняются операторные триггеры BEFORE (при их наличии).
2. Для каждой строки, на которую влияет оператор:
а) выполняются строчные триггеры BEFORE (при их наличии);
б) выполняется собственно оператор;
в) выполняются строчные триггеры AFTER (при их наличии).
3. Выполняются операторные триггеры AFTER (при их наличии).
Создание триггеров замещения
В отличие от триггеров DML, которые срабатывают как дополнение к операции INSERT, UPDATE или DELETE (либо к, либо после них), триггеры замещения активизируются вместо операций DML. К тому же триггеры замещения создаются только для представлений, тогда как триггеры DML — для таблиц. Триггеры замещения используются в двух случаях:
Для того, чтобы сделать представление таким, что модифицируется, если иначе это сделать нельзя.
Для модификации столбцов в столбце вложенной таблицы представления.
Создание системных триггеров
Системные триггеры активизируются событиями двух видов: DDL и базы данных. К событиям DDL относятся операторы CREATE, ALTER и DROP, а к событиям базы данных — запуск /остановка сервера, регистрация/отключение пользователя и ошибка сервера. Синтаксис создания системного триггера:
Таблица 4.1 – Системные события DDL и базы данных
Событие |
Допустимое время выполнения |
Описание |
STARTUP |
AFTER |
Активируется при запуске экземпляру базы данных |
SHUTDOWN |
BEFORE |
Активируется при остановке экземпляру базы данных. Это событие не активирует триггер, если БД останавливается аварийно |
SERVERERROR |
AFTER |
Активируется при возникновении ошибки |
LOGON |
AFTER |
Активируется после успешного соединения пользователя с базой данных |
LOGOFF |
BEFORE |
Активируется перед отключением пользователя |
CREATE |
BEFORE, AFTER |
Активируется к или после создания объекта схемы |
DROP |
BEFORE, AFTER |
Активируется к или после удаления объекта схемы |
ALTER |
BEFORE, AFTER |
Активируется к или после изменения объекта схемы |