- •Ведение в реляционные субд. Понятие реляционной субд. Сущности Первичный и внешний ключ. Правила построения схемы бд.
- •2. Общая характеристика субд Access. Создание и редактирование базы данных средствами субд Access. Свойства реляционной таблицы. Отношения между таблицами.
- •3.Построение запросов в субд Access. Структура запроса. Условие на значение.Between, In, Like Многотабличные запросы, вычисляемые поля. Групповые операции.
- •4. Запросы с параметрами. Групповые операции. Вспомогательные запросы
- •5. Параметры объединения в запросах. Функция Nz. Параметры объединения в запросах. Перекрестные запросы. Запросы действия.
- •6.Реляционная модель. Операции реляционной алгебры.
- •7. Построение модели «Сущность-связь» Сущности и атрибуты. Категории сущностей. Ключи и индексы. Связи. Улучшение модели.
- •8. Структура стандарта sql Типы данных и операции sql. Агрегирующие функции. Примеры.
- •9 . Формирование запросов средствами sql. Вложенные запросы. Группировка данных. Соединение таблиц. Объединение запросов. Примеры.
- •3. По аналогии с левым можно определить правое внешнее соединение. Перепишем предыдущий пример с использованием его возможностей:
- •10. Модификация данных. Модификация объектов бд. Последовательности. Модификация и удаление таблиц. Примеры использования.
- •Создание таблиц. Ограничения Для создания таблиц базы данных используется оператор, который в простейшем случае описывается так:
- •11. Управление транзакциями. Представления. Управление транзакциями
- •Представления
- •12. .Общая концепция субд «Oracle».
- •13. Язык pl/sql. Основные типы данных и операторы.
- •Структура программы
- •Типы данных
- •14. Курсоры, их атрибуты. Использование цикла for. Курсоры
- •Атрибуты курсора
- •Использование цикла for для работы с курсорами
- •15. Обработка исключений. Пользовательские исключения. Возбуждение исключений.
- •16. Подпрограммы. Пакеты. Хранимые подпрограммы.
- •17. Триггеры Объявление, назначение и примеры использования. Модификация триггеров.
- •18. Администрирование базы данных и управление объектами. Разграничение доступа. Привилегии, роли.
- •Разграничение доступа
- •19. Управление параллельной обработкой данных. Блокировки.
- •20. Функциональные зависимости. Нормализация отношений. Нормальные формы.
- •21. Основные этапы проектирования реляционной базы данных. Концептуальное проектирование. Логическое проектирование. Физическое проектирование.
- •22. Распределенные бд. Хранилища данных. Определение и назначение. Понятие репликации. Варианты архитектуры хд. Гиперкуб. Его назначение и реализация средствами рсубд.
17. Триггеры Объявление, назначение и примеры использования. Модификация триггеров.
Триггер - это специальный вид хранимой программы PL/SQL, который ассоциирован с конкретной таблицей базы данных. Триггер автоматически запускается (возбуждается, активизируется, английский термин – firing) каждый раз, когда выполняется оператор SQL INSERT, UPDATE либо DELETE, вносящий изменения в эту таблицу. Итак, в отличие от подпрограмм, которые должны вызываться явно, триггер базы данных вызывается неявно. Триггер возбуждается при наступлении следующих событий: до начала выполнения операций INSERT, UPDATE либо DELETE, а также после окончания выполнения этих операций. Кроме того, можно написать отдельные триггеры, выполняющиеся для каждой строки, участвующей в обновлении базы данных (строковые триггеры). Дадим формальное описание триггера.CREATE [ OR REPLACE ] TRIGGER [имясхемы.]имятриггера {AFTER | BEFORE} {INSERT | UPDATE [OF списокстолбцов]| DELETE } ON ассоциированнаятаблица [FOR EACH ROW] [WHEN ограничениетриггера] [DECLARE описания] BEGIN телотриггера END [имятриггера];Фраза FOR EACH ROW описывает строковый триггер, который будет выполняться при обработке каждой строки. Фраза WHEN дает возможность запускать триггер только при выполнении дополнительных ограничений. Если один триггер используется для различных операций модификации, названия этих операторов можно объединить через оператор OR, например: AFTER INSERT OR UPDATE.
Триггеры запускаются в следующем порядке:
триггер before для оператора (т.е. без фразы FOR EACH ROW);строковый триггер before, который отрабатывает для первой модифицируемой строки; строковый триггер after, который отрабатывает для первой модифицируемой строки; строковые триггеры after и before, работающие для второй и последующих строк;триггер after для оператора (т.е. без фразы FOR EACH ROW).При активизации каждого из триггеров видны изменения, сделанные предыдущими триггерами, а для триггеров AFTER - также внесенные оператором DML. При написании триггеров необходимо соблюдать следующие ограничения:
запрещается использовать операторы управления транзакциями как в самом триггере, так и в подпрограммах, которые этот триггер вызывает;в теле триггера нельзя объявлять переменные с типами LONG и LONG RAW. Кроме того, с помощью префиксов :new и :old, которые будут описаны позднее, нельзя ссылаться на столбцы типов LONG и LONG RAW таблицы, для которой определен триггер;из тела триггера нельзя обращаться к т.н. изменяющимся таблицам (mutating tables).
В теле строкового триггера можно использовать префиксы :new и :old, которые иногда называют коррелирующими именами.
Триггеры, в отличие от обычных хранимых подпрограмм, триггеры компилируются автоматически при каждом возбуждении, если из-за изменений влияющих на него объектов они становятся недействительными. Поэтому для них не имеет смысла определять статус VALID или INVALID. Однако можно, не удаляя триггер, запретить (disable) или вновь разрешить (enable) его использование. Когда триггер запрещен, он по-прежнему находится в словаре данных, но никогда не активизируется. Для запрещения или разрешения триггера применяется оператор
ALTER TRIGGER имятриггера {DISABLE | ENABLE};
При создании каждого триггера его использование по умолчанию разрешено. Кроме того, при помощи команды ALTER TABLE можно разрешить или запретить использование всех триггеров определенной таблицы, если добавить в эту команду конструкцию ENABLE ALL TRIGGERS (разрешить все триггеры) или DISABLE ALL TRIGGERS (запретить все триггеры).
Так, триггер INSTEAD OF может быть применен к представлению, образованному в результате соединения нескольких таблиц. Если поле, объявленное как первичный ключ в одной из исходных таблиц, может несколько раз повториться в представлении, то такое представление является не модифицируемым. Кроме того, с помощью триггера можно отслеживать модификацию объектов базы данных. В этом случае условия этих триггеров записываются как
{BEFORE | AFTER} {ALTER | CREATE | DROP |…} ON {SCHEMA | DATABASE}