DML
ДОМАШНЯЯ РАБОТА! Доклады по витаминам
Процедурный DML позволяет получить данные языка, как правило, такие операторы встраиваются в программу на высокоуровневых языках, где учтены конструкции для циклической обработки, cоответственные операторы ДМЛ заменяются перед вызовом функций соответствующих языков.
Непроцедурные или деклоративные ДМЛ описывают только то, какой результат будет получен и сама СУБД транслирует выражение ДМЛ прямо в низкоуровневый язык.
Хотя чистый SQL не процедурный язык, существуют его процедурные расширения, позволяющие организовать циклическое базовые конструкции:
• Для СУБД MSAccess — это язык VBA.
• Для Oracle — PLSQL
Наиболее важные для эксплутации БД процедурные расширения выполняют, как правило, главную задачу — это сохранить целостность данных, при нарушении нормализации.
Курсоры — селект только одно строку, если нужно несколько, используется курсор
◦ Он действует как указатель на конкретную строку результатов запроса.
|
|
◦ Курсор должен быть объявлен и открыт перед использованием, и закрыт по окончанию использования.
◦ Для обращения к след. строке, курсор передвигается на единицу.
◦ Выбор конкретной строки запроса осуществляется с помощью оператора FETCH.
На сегоднешний день имеются хорошие альтернативы курсору:
1. Патерн MVC – model view controller.
2. Патерн View.
Подпрограмма – хранимые процедуры или хранимые функции. Именованные блоки процедурного языка, которые могут принимать параметры и вызываться на выполнение.
• Параметров мб несколько.
• И процедуры и функции могут модифицировать и возвращать данные, передаваемые в качестве параметра.
• Параметр должен иметь конкретное имя и конкретный тип данных.
• К ним может пристроено добавочное обозначение
◦ in – входное
◦ out – выходное
◦ in/out
Тригеры — определяет действие, которое должно быть препринято базой, при возникновении в приложении некоторого события.
Используется для:
1. Осуществление ограничения ссылочной целостности.
2. Комплексных ограничений предметной области.
3. Для контроля изменений данных.
Тело тригера - код внутри тригера.
Базируется на модели — событие, условие, действие.
Как события в СУБД Oracle мб рассмотрены:
1. Операторы insert, update, delete применяемые к указанной таблице или к указанному представлению
2. Операторы create, alter, drop – применяемые к любому объекту схемы.
3. Запуск БД или остановка экземпляра.
4. Регистрация пользователя в системы и выход из системы.
5. Конкретное сообщение об ошибке или вообще сообщение об ошибке.
Можно так же определить когда должен сработать тригер — до или после события.
|
|
Действия которое должно быть препринято:
1. Операторы SQL
2. Код на высокоуровневом языке.
Которые должны быть выполнены, если выдается активизирующий оператор (событие произошло) и условие активации равно true.
Условия (как правило предикат), которые определяет действие, которое должно быть выполнено в обязательном порядке:
Существует 2 типа тригеров, которые запускаются разными ключевыми словами:
1. for, each, row – для каждой строк. Строковые тригеры.
2. new – новое значение.
Представление или view – это динамический результат одной или нескольких реляционных операций с базовыми отношениями, с целью создания нового отношения.
Особенности представления:
1. Виртуальное отношение — реально в структуре базы такой таблицы нет, но оно создается по требованию отдельно пользователя, в момент его поступления.
2. Представления имеют динамический характер. Изменения в базовых отношениях, которые могут повлиять на конкретное представление немедленно в него переносятся.
3. Имеет более жесткий механизм контроля доступа, чем просто назначения прав для таблицы.
Ограничения на изменения, которые можно заводить через представления:
1. Допускаются обновления через вью, которое определено на основе простого запроса к единственному базовому отношению и содержит первичный или потенциальный ключ этого отношения.
2. Обновления не допускаются в любых представлениях, опреденных на основе нескольких базовых отношений.
3. Обновления не допускаются в любых представлениях, включающих операции агригирования или групирования.
СУБД постоянно хранит в базе определение представления (запрос на представление) и если обнаруживается ссылка на представление СУБД применяет один из 2-х подходов:
1. Замена представления — СУБД преобразует исходный запрос в эквивалентный запрос к таблицам, использованный в определение представления.
2. Матеарилизация представления — готовое представления уже хранится в БД в виде временной таблицы, а его актуальность постоянно поддерживается по мере обновления всех таблиц основной базы.
Включает средства задания ограничений, которые вводятся для защиты базы от нарушения согласованности данных.
5 типов:
1. Обязательные данные.
2. Целостность сущностей.
3. Ссылочная целостность.
4. Ограничения для доменов.
5. Корпоративные ограничения.
Все ограничения определяются в операторах create and alter table.
Для некоторых столбцов требуется наличие в каждой строке таблицы конкретного и допустимого значения отличного от NULL.
Значение NULL служит для представления данных, которые в данный момент отсутствуют, недоступны или неопределены.
Применения NULL может вызвать проблему на этапе реализации, связанной с переходом к 3-х значной логике. Следовательно использование нул спорно.
Для разрешения это коллизии предусматривает спецификатор not null, он указывается для конкретных столбцов.
По умолчанию для всех столбцов применяется спецификатор нул.
В базом отношении ни одни атрибут первичного ключа не может содержать значение типа NULL. Для задания этого ограничения стандарт ИСО использует конструкцию primary key в операторах create and alter table. Он может состоять из одного или нескольких столбцов.
Эта конструкция указывается в определение таблицы только один раз, для альтернативных ключей используется ключевое слов unique — уникальный. Целесообразно явно прописывать нот нул.
СУБД отвергает любые попытки выполнения insert or update, которые влекут за собой создание повторяющегося значение в любом потенциальном ключе.