- •Основные понятия баз данных. Этапы развития субд. Функции субд. Требования к системам управления базами данных.
- •Архитектура баз данных. Логическая и физическая независимость данных. Схема прохождения запросов к бд.
- •Логическая и физическая независимость данных
- •Классификация моделей данных. Архитектура и модели "клиент-сервер" в технологии бд.
- •Модели «клиент-сервер» в технологи баз данных
- •Модель файлового сервера
- •Модель удаленного доступа к данным
- •Модель сервера баз данных
- •Модель сервера приложений
- •Реляционная модель бд, ее основные достоинства. Таблица, кортеж, атрибут, домен, первичный ключ, внешний ключ. Фундаментальные свойства отношений.
- •Фундаментальные свойства отношений
- •Обеспечение целостности данных.
- •Основы реляционной алгебры. Операторы реляционной алгебры. Операторы реляционной алгебры
- •Понятия полной и транзитивной функциональной зависимости. Нормализация, третья нормальная форма, шаги нормализации.
- •Нормальные формы и нормализация
- •Модель «объект-свойство-отношение», er-диаграммы, проектирование схемы баз данных. Инфологическая модель данных «Сущность-связь»
- •Классификация сущностей
- •Язык sql, его структура, стандарты, история развития. Подмножество языка dml: операторы select, insert, update, delete.
- •Типы данных в субд oracle 9.2i
- •Структура языка sql
- •Оператор выбора select
- •Запросы с использованием единственной таблицы Выборка без использования параметра where
- •Выборка с использованием параметра where
- •Использование параметров group by и having
- •Запросы с использованием нескольких таблиц Запросы с использованием соединений
- •Последовательности
- •Создание и удаление последовательностей
- •Изменение последовательностей
- •.Использование последовательностей
- •Оператор ввода новых строк insert Вставка единственной записи в таблицу
- •Вставка множества записей
- •Оператор изменения значений полей update
- •Обновление единственной записи
- •Обновление множества записей
- •Обновление с подзапросом
- •Оператор удаления строк delete
- •Удаление единственной записи
- •Удаление множества записей
- •Удаление с вложенным подзапросом
- •Подмножество языка ddl: операторы create, alter, drop. Представления, их значение; обновляемые представления. Оператор create Создание таблицы
- •Создание первичного ключа
- •Создание уникального ключа
- •Создание домена
- •Создание внешнего ключа
- •Удаление ограничений целостности
- •Оператор drop
- •Представления
- •Создание и удаление представлений
- •Операции выборки из представлений
- •Обновляемые представления
- •Подмножество языка dcl: операторы grant, revoke. Системные привилегии, привилегии на объекты, роли.
- •Объектные и системные привилегии
- •Операторы grant и revoke
- •Транзакции, операторы управления транзакциями: commit, rollback, savepoint; журнал транзакций, уровни блокировок.
- •Операторы управления транзакциями
- •Журналы транзакций
- •Язык pl/sql, его структура, основные операторы.
- •Курсоры, явные и неявные курсоры, операторы работы с курсором, оператор select into.
- •Процедуры, функции, пакеты.
- •Триггеры, их основные свойства и значение.
- •Параллельные архитектуры бд; масштабируемость, надежность, производительность.
- •Распределенные базы данных, фрагментация, тиражирование.
- •Средства защиты данных в субд.
- •Аутентификация/авторизация при помощи паролей.
- •Инкапсуляция передаваемой информации в специальных протоколах обмена.
- •Ограничение информационных потоков.
- •Классы безопасности
- •Шлюзы к базам данных. Архитектура odbc. Www-интерфейс к бд. Промежуточное программное обеспечение (ппо) баз данных
- •Доступ к базам данных
- •Недостатки реляционных субд
- •Манифест систем объектно-ориентированных баз данных Обязательные свойства: золотые правила
- •Необязательные возможности Множественное наследование, проверка и вывод типов, распределенность, проектные транзакции (протяженные транзакции или вложенные транзакции), версии
- •Объектная модель данных
- •Объектно-ориентированные, объектно-реляционные бд, универсальные бд
- •Эволюция технологий и возможностей субд oracle (oracle 8i, oracle 9i, oracle 10g).
- •Роль grid-технологий в организации хранения и обработки данных. Перспективы развития технологий баз данных.
Операторы управления транзакциями
Существует три операторы, предназначенные для управления транзакциями:
COMMIT – явная фиксация транзакции;
ROLLBACK – явная отмена изменения в текущей транзакции;
SAVEPOINT – создание контрольной точки внутри транзакции (промежуточная фиксация транзакции с возможность отката к этой точке);
Пример выполнения DML операторов с фиксацией и откатом транзакций:
-- 1. транзакция начинается автоматически после
-- установки соединения с БД
INSERT INTO MANAGERS(Man_Id, Name, Procent)
VALUES(100, ‘Иванов М.А.’, 5);
-- 2. промежуточная фиксация транзакции
SAVEPOINT Insert1ok;
-- 3. выполнение очередной команды DML
UPDATE MANAGERS SET Procent=15 WHERE Man_Id=100;
-- 4. откат транзакции до контрольной точки Insert1ok
ROLLBACK TO Insert1ok;
-- 5. откорректированная команда DML
UPDATE MANAGERS SET Procent=16 WHERE Man_Id=100;
-- 6. фиксация транзакции и начало новой транзакции
COMMIT;
-- 7. очередная команда DML
DELETE FROM MANAGERS;
-- 8. отмена всех изменений в текущей транзакции
-- (возврат БД к состоянию до пункта 6)
ROLLBACK;
Журналы транзакций
Журналы транзакций – это специальные файлы операционной системы, в которые СУБД записывает все изменения или транзакции, произведенные в базе данных. Поскольку все транзакции полностью сохраняются в журналах повтора, при необходимости с помощью этих журналов сервер базы данных всегда способен восстановить свое состояние на заданный момент времени. Каждая база данных обязательно должна иметь как минимум два оперативных журнала транзакций.
Журналы транзакций работают по циклическому принципу. Пусть в некоторой базе данных есть два журнала: logA и logB. По мере того, как транзакции создают, удаляют и модифицируют информацию в базе данных, все изменения заносятся в logA. Когда logA оказывается целиком заполненным, происходит переключение журналов, и все вновь произведенные транзакции начинают записываться в logB. По заполнении lоgВ происходит новое переключение журналов, и транзакции опять сохраняются в lоgA.
Язык pl/sql, его структура, основные операторы.
SQL- непроцедурный язык
PL/SQL – процедурные языковые расширения SQL
Для разработки приложений клиент/сервер c помощью PL/SQL можно улучшить производительность приложений и системы:
- вместо операторов SQL используются скомпилированные программы;
- значительно сокращается сетевой график между клиентом и сервером.
PL/SQL- это блочно-структурированный язык
DECLARE
… набор операторов - определение переменных, констант, новых
типов данных, курсоров и т.д.
BEGIN - начало основной программы
… набор операторов
BEGIN
… набор операторов - вложенный блок
END
EXCEPTION
… набор операторов - определяются драйверы для обработки
исключительных ситуаций в программе
END
Секция заголовка содержит спецификацию процедуры, функции, пакета или триггера. Включает в себя название блока, описание входных и выходных параметров.
Секция объявлений предназначена для объявления переменных, констант, курсоров, которые будут использоваться в выполняемой секции процедуры, функции или триггера. Расположена сразу после секции заголовка, если она есть, и перед выполняемой секцией.
Выполняемая секция (тело) содержит один или более операторов PL/SQL. Начинается со слова BEGIN и заканчивается словом EXCEPTION, если есть секция исключений, или словом END.
Секция исключений содержит обработчики исключительных ситуаций. Исключительной ситуацией называют такую ситуацию, когда дальнейшее выполнение выполняемой секции не имеет смысла.
В анонимных блоках и в триггерах для создания секции заголовка указывается ключевое слово DECLARE. Во всех остальных случаях ключевое слово DECLARE не используется.
Константы discont CONSTANT REAL := 0.1; -- константа
Типы данных
Тип Подтип
NUMBER DECIMAL, REAL,
(precision, scale) INTEGER, SMALLINT,
FLOAT, NUMERIC
CHAR (length)
VARCHAR2 (length)
DATE
BOOLEAN
RECORD - строка таблици, рассматриваемая как одно целое
TABLE - одномерный массив
Записи трактуются в языке PL/SQL Oracle8 как совокупность разнотипных компонентов, которые можно хранить в столбцах реляционных таблиц, передавать в качестве параметров и т.п.
TYPE AgendaItem IS RECORD ( subject VARCHAR2 (100), duration TimeInterval);
item_info AgendaItem;
Присваивание переменным значений базы данных
В зависимости от числа возвращаемых запросом строк используются два метода.
SELECT … INTO … - когда возвращается 1 строка
BEGIN
SELECT id, customerid, orderdate
INTO currentorder.id, currentorder.customerid, currentorder.orderdate
FROM orders
WHERE id=453;
Операторы условного перехода IF
IF-THEN. Форма условного оператора для проверки простых условий. Если условие верно (TRUE), то выполняются указанные операторы. Если условие не выполняется (FALSE), то управление передается на следующий оператор.
IF-THEN-ELSE. Эта форма аналогична предыдущей, но при невыполнении условия (FALSE) управление передается на операторы, указанные после ELSE.
IF-THEN-ELSIF. Этот формат является альтернативой использованию вложенных операторов IF-THEN-ELSE.
CASE
-
Простой. Связывает одну или несколько послед. операторов с соответствующим значением.
CASE выражение
WHEN результат1 THEN Операторы1
WHEN результат1 THEN Операторы1
…
ELSE ОператорыELSE
END CASE;
Поисковый. Выбирает для выполнения одну из послед. операторов в завис. от рез. вычисл. списка лог. усл.
CASE
WHEN выражение1 THEN Операторы1
WHEN выражение2 THEN Операторы2 …
ELSE ОператорыELSE
END CASE;
Операторы цикла
Циклы позволяют организовать многократное выполнение одного и того же участка программы до полного завершения обработки.
Простой цикл. LOOP EXIT WHEN условие_завершения; Операторы_цикла; END LOOP;
|
Цикл FOR. FOR переменная_цикла IN | имя_курсора LOOP Операторы_цикла; END LOOP;
|
Цикл WHILE. WHILE условие_завершения LOOP Операторы_цикла; END LOOP;
|
Обработка ошибок (блок EXCEPTION) PL/SQL имеет встроенные исключительные ситуации
no_data_found, too_many_rows, invalid_number, …
EXCEPTION
When no_data_found then
…
When too_many_rows then
…
END
Процедура RAISE_APPLICATION_ERROR (ERRNUM, ERRMES)
ERRNUM – пользователь задает номер ошибки от -20000 до -20999
id_not_positive exception;
pragma exception_init(id_not_positive, -20050);
If(id<=0)then raise id_not_positive;