- •1. Основные понятия баз данных. Этапы развития субд. Функции, требования к субд.
- •2. Архитектура баз данных. Логическая и физическая независимость данных. Схема прохождения запросов к бд. Классификация моделей данных. Архитектура и модели "клиент-сервер" в технологии бд.
- •3. Реляционная модель бд, ее основные достоинства. Таблица, кортеж, атрибут, домен, первичный ключ, внешний ключ. Фундаментальные свойства отношений. Обеспечение целостности данных.
- •4. Основы реляционной алгебры. Операторы реляционной алгебры. Понятия полной, транзитивной, функциональной зависимостей. Нормализация, третья нормальная форма, шаги нормализации.
- •5. Модель «объект-свойство-отношение», er-диаграммы, проектирование схемы баз данных.
- •6. Язык sql, его структура, стандарты, история развития. Подмножество языка dml: операторы select, insert, update, delete.
- •7. Подмножество языка ddl: операторы create, alter, drop. Представления, их значение; обновляемые представления.
- •14. Параллельные архитектуры бд; масштабируемость, надежность, производительность.
- •15. Распределенные базы данных, фрагментация, тиражирование.
- •16. Средства защиты данных в субд.
- •17. Шлюзы к базам данных. Архитектура odbc. Www-интерфейс к бд.
- •18. Объектная модель данных.
- •19. Объектно-ориентированные и объектно-реляционные бд.
- •20. Эволюция технологий и возможностей субд oracle (oracle 8i, oracle 9i, oracle 10g).
- •21. Перспективы развития бд.
7. Подмножество языка ddl: операторы create, alter, drop. Представления, их значение; обновляемые представления.
Подмножество языка DDL
Оператор CREATE служит для создания любого типа объектов, из которых состоит база данных, в том числе таблиц.
CREATE TABLE имя_таблицы(
поле1 тип1 [ограничения],
[поле2 тип2 [ограничения],
…]);
Возможные ограничения в таблицах:
NOT NULL – значение атрибута должно быть определено (опция NOT NULL);
UNIQUE – значения атрибутов являются уникальными (уникальный ключ);
PRIMARY KEY – атрибут является первичным ключом (первичный ключ);
CHECK – определяет условие, которому должны удовлетворять значения атрибута (домен);
DEFAULT – присвоение значений «по умолчанию» для атрибутов.
Используя приведенный выше синтаксис, вместе с созданием таблицы можно вместе с атрибутами таблицы сразу же задать и ограничения декларативной и ссылочной целостности, но только в том случае, если они касаются только одного конкретного атрибута. Если же первичный, уникальный или вторичный ключ должны быть составными, для их создания нужно применять команду ALTER TABLE.
CREATE TABLE Dealers1(
D_id NUMBER,
Name VARCHAR2(30),
Procent NUMBER(4,2),
Comments VARCHAR2(50) DEFAULT ‘no comments’);
Оператор ALTER служит для изменения структуры любых объектов, из которых состоит база данных. В зависимости от типа объекта, изменяются и параметры команды ALTER. Далее рассмотрены примеры применения команды ALTER для изменения структуры объектов TABLE.
Для добавления атрибута к таблице применяется следующий синтаксис:
ALTER TABLE имя_таблицы ADD поле тип [ограничения];
Например, для добавления к таблице Dealers целого поля Age можно выполнить следующую команду: ALTER TABLE Dealers ADD Age NUMBER(2);
Для удаления атрибута таблицы применяется следующий синтаксис:
ALTER TABLE имя_таблицы DROP COLUMN поле;
ALTER TABLE Dealers DROP COLUMN Age;
Оператор DROP служит для удаления объектов из базы данных. Синтаксис удаления любого типа объекта из базы данных, в том числе таблицы, выглядит следующим образом:
DROP тип объекта имя объекта;
Например, для удаления таблицы Dealers из базы данных необходимо выполнить следующую команду: DROP TABLE Dealers;
В данном случае таблица Dealers успешно удалится только в том случае, если на нее не ссылаются внешний ключи других таблиц. В том случае, если внешние ключи существуют, но удалить таблицу все-таки необходимо, можно либо сначала удалить все внешние ключи, ссылающиеся на удаляемую таблицу, после чего удалить таблицу, либо используя параметр CASCADE CONSTRAINTS:
DROP TABLE Dealers CASCADE CONSTRAINTS;
В последнем случае, если внешние ключи, ссылающиеся на удаляемую таблицу, существуют, они будут удалены без изменений в полях внешних ключей подчиненных таблиц, даже если при создании внешних ключей были указаны параметры, задающие каскадные действия.
Представления - это таблицы чье содержание выбирается или получается из других таблиц. Они работают в запросах и операторах DML точно также как и основные таблицы, но не содержат никаких собственных данных. Представления - подобны окнам, через которые вы просматриваете информацию, которая фактически хранится в базовой таблице.
CREATE VIEW Londonstaff
AS SELECT *
FROM Salespeople
WHERE city = 'London';
Безусловно обновляемыми являются представления, полученные из единственной базовой таблицы простым исключением некоторых ее строк и (или) столбцов.
8. Подмножество языка DCL: операторы GRANT, REVOKE. Системные привилегии, привилегии на объекты, роли.
9. Транзакции, операторы управления транзакциями: COMMIT, ROLLBACK, SAVEPOINT; журнал транзакций, уровни блокировок.
10. PL/SQL, структура, основные операторы.
11. Курсоры, операторы работы с курсором, оператор SELECT INTO.
12. Процедуры, функции, пакеты.
13. Триггеры, их основные свойства и значение.
Триггер – это особого вида процедура, которая выполняется автоматически при возникновении некоторого события, указанного в спецификации триггера, - триггерного события (triggering event).
В PL/SQL можно создать триггеры, которые будут срабатывать в одной из следующих ситуаций:
применение оператора DML (INSERT, UPDATE, DELETE) к определенному объекту схемы;
применение оператора DDL (CREATE, ALTER, DROP) внутри схемы или базы данных;
вход пользователя в систему или выход его из системы, ошибка сервера, запуск базы данных или останов базы данных.
Триггеры нельзя вызывать напрямую из кода программы. Oracle вызывает их автоматически в ответ на определенное событие.
Триггеры используются для реализации сложных бизнес-правил. Например, триггер может проверять, истек ли срок продаваемого товара к моменту осуществления сделки продажи, или нет. Если истек, то триггер может выполнять некоторые автоматические действия по предотвращению продажи данного товара.
Триггеры могут обеспечивать прозрачное протоколирование событий, например, отслеживать сколько раз каждый из пользователей обращался к определенной таблице.
Типы триггеров
Момент_срабатывания определяет, когда будет срабатывать триггер: до (BEFORE), после (AFTER) и вместо (INSTEAD OF) наступления триггерного события (выполнения запускающего оператора).
Если указано значение BEFORE, триггер выполняется до каких-либо проверок ограничений на строки, затрагиваемые триггерным событием. Никакие строки не блокируются. Триггер этого типа называется, соответственно, BEFORE-триггером (BEFORE trigger).
Если выбрать ключевое слово AFTER, то триггер будет срабатывать после того, как запускающий оператор завершит свою работу и будут выполнены проверки всех ограничений. В этом случае затрагиваемые строки блокируются на время выполнения триггера. Триггер этого типа называется AFTER-триггером (AFTER trigger).
Триггеры INSTEAD OF применяются только для представлений (VIEW). Проблема состоит в том, что операторы DML не применимы к представлениям. Нельзя добавлять, изменять или удалять записи из представлений. Триггеры INSTEAD OF вызываются вместо выполнения DML-выражений. Если вы выполните оператор DML к представлению, то в соответствующем триггере можно выполнить какие-либо действия, и тогда у пользователя создастся впечатление, что он работает с таблицей.
Триггерное_событие может принимать значения INSERT, UPDATE или DELETE.
Различным триггерные события можно комбинировать с помощью оператора OR. Например:
DELETE OR INSERT остальные_операторы
В случае использования UPDATE можно указать список столбцов, при изменении которых будет срабатывать триггер:
UPDATE OF столбец_1, столбец_2, ...
Пример триггера
Триггер, который будет запрещать изменение имени менеджера (поле NAME).
CREATE OR REPLACE TRIGGER onManagersUpdate
BEFORE UPDATE OF name ON Managers
FOR EACH ROW
DECLARE
cant_change_name EXCEPTION;
BEGIN
IF :new.name<>:old.name THEN
RAISE cant_change_name;
END IF;
EXCEPTION
WHEN cant_change_name THEN
dbms_output.put_line(`Нельзя изменить имя менеджера`);
:new.name:=:old.name;
END;
/
Данный триггер не позволит изменить значение поля NAME в таблице MANAGERS. При попытке сделать это сработает триггер, внутри которого производится сравнение старого значения и нового значения поля NAME. Если они различаются, то активизируется исключение, при обработке которого на экране появится соответствующее сообщение
Удаление триггеров, также как и удаление всех остальных объектов СУБД Oracle, осуществляется посредством оператора DROP:
DROP имя_триггера;
Если по каким-то причинам триггер нужно на время отключить, то это можно сделать при помощи команды ALTER TRIGGER имя_триггера DISABLE;
Обратное включение триггера осуществляется при помощи команды ALTER TRIGGER имя_триггера ENABLE;
Поскольку с одной таблицей могут быть связаны несколько триггеров, то бывает необходимо отключить сразу все эти триггеры. Это делается при помощи команды ALTER TABLE имя_таблицы DISABLE ALL TRIGGERS;
Включение всех триггеров осуществляется командой ALTER TABLE имя_таблицы ENABLE ALL TRIGGERS;