- •Примерный перечень вопросов и типовых заданий для промежуточного контроля по учебной дисциплине «Базы данных»
- •Тема 1. Введение, основные понятия определения. Этапы развития баз данных. Принципы организации современных бд и субд
- •Тема 2. Реляционная модель данных, реляционная алгебра
- •Тема 3.Язык sql. Формирование запросов к базе данных
- •Тема 4. Операторы манипулирования данными языке sql
- •Тема 5. Проектирование баз данных
- •Тема 6. Многопользовательский режим работы с бд. Модели «клиент-сервер» в системах баз данных. Архитектура серверов баз данных
- •Тема 7. Транзакции, оперативная обработка транзакций (oltp)
- •Тема 8. Встроенный sql. Понятие курсора
- •Тема 9. Хранимые процедуры как базовый компонент серверной части информационных систем
- •Тема10. Триггеры как механизм поддержки семантической целостности в бд
- •Тема 11. Физические модели баз данных
- •11.2.1. Стратегия разрешения коллизий с областью переполнения
- •11.2.2. Организация стратегии свободного замещения
- •Полученное b-дерево может быть представлено так, как изображено на рис. 11.5
- •Моделирование отношения 1:м с использованием однонаправленных указателей
- •Основной файл f1
- •Структура подчиненного файла:
- •Алгоритм нахождения нужных записей подчиненного файла
- •1) Добавление записи на первое место в цепочке;
- •2) Добавление записи в конец цепочки;
- •3) Добавление записи на заданное место в цепочке.
- •Типовые задания
Тема 8. Встроенный sql. Понятие курсора
В чем отличие процесса трансляции операторов SQLот трансляции текста программ на любом традиционном языке программирования? В SQL отсутствуют традиционные операторы, организующие циклы, позволяющие объявить и использовать внутренние переменные, организовать анализ некоторых условий и возможность изменения хода программы в зависимости от выполненного условия. В общем случае можно назвать SQL подъязыком, который служит исключительно для управления базами данных. Для создания приложений, настоящих программ необходимо использовать другие, базовые языки программирования, в которые операторы языка SQL будут встраиваться.
Зачем требуется обращаться к базе мета-данных при трансляции SQL-операторов? А как иначе мы можем проверить правильность введённых имён отношений и так далее?
В чем смысл плана выполнения запроса, может ли этот план изменяться? Изменяться может, некоторые приложения СУБД позволяют выполнить часть плана заранее, можно грохнуть оптимизацию, но это нежелательно из-за возрастания обработки неоптимизированного запроса.
Что происходит при выполнении оператора описания курсора? определяет выполняемый запрос, задает имя курсора и связывает результаты запроса с заданным курсором.
Каков формат операторов описания курсора и оператора открытия курсора? Чем отличается функции оператора открытия курсора от оператора описания курсора? DECLARE не является исполняемым, в отличие от OPEN. DECLARE описывает связь и структуру БД с курсором, когда как OPEN устанавливает указатель записей (курсор) перед первой строкой виртуального набора строк результата.
Каков механизм связывания результатов перемещения по курсору с переменными базового языка программирования? Приведите примеры соответствующих операторов?
Что такое чувствительный курсор, каковы операторы описания данного курсора? Если при выполнении запроса не будет получено ни одной строки, как поведет себя курсор? курсоры "видят" все изменения, выполненные другими курсорами. Операторы те же.
Что дает установка свойства нечувствительности курсора, ускоряется или замедляется при этом выполнение соответствующего запроса и почему? Параметр INSENSITIVE (нечувствительный) определяет режим создания набора строк, соответствующего определяемому курсору, при котором все изменения в исходных таблицах, произведенные после открытия курсора другими пользователями, не видны в нем. Такой набор данных нечувствителен ко всем изменениям, которые могут проводиться другими пользователями в исходных таблицах, этот тип курсора соответствует некоторому мгновенному слепку с БД.
СУБД более быстро и экономно может обрабатывать такой курсор, поэтому если для вас действительно важно рассмотреть и обработать состояние БД на некоторый конкретный момент времени, то имеет смысл создать «нечувствительный курсор».
Вы разрабатываете приложение, которое подсчитывает начисление процентов по вкладам клиентов банка, какой курсор Вы будете использовать и почему? Нечувствительный, нам важно показать не сам процесс начисления, а слепок на определённый момент времени.