Порядок выполнения задания 3.

1.Следует в навигаторе выбрать элемент Views и правой клавишей мыши вызвать для него контекстное меню. В меню выбрать пункт New View…. В появившемся диалоговом окне задать имя обзора в следующем формате: V_имя таблицы.

2.В скрипте обзора (область SQL Query) написать запрос на выборку всех полей (с поименным указанием) из таблицы, для которой создается обзор. Если в таблице есть внешние ключи, то запрос должен быть сложным (по двум или более таблицам). Вместо значений внешнего ключа должны отображаться смысловые значения из связанной мастер-таблицы. Для полей типа DATE применять маску: ‘dd.mm.yyyy’. Для наложения маски использовать оператор TO_CHAR(D1,mask) где D1 – переменная типа DATE, mask – строковая маска.

3.Можно протестировать правильность синтаксиса запроса нажатием клавиши Test Syntax. После успешной проверки зайти на закладку DDL и просмотреть автоматически сгенерированный скрипт создания обзора. Нажатием клавиши OKсоздать обзор в базе данных.

4. Также для создания обзора можно воспользоваться интерактивным мастером построения, в который можно переключиться, включив галочку Advanced(в правом верхнем углу окна).

 

1.3 СОДЕРЖАНИЕ ОТЧЁТА

 

Готовится один отчёт на бригаду в печатном виде. Он должен содержать следующие разделы:

- задание;

- описание процесса создания пользовательской схемы (сопровождается копией экрана с настройками пользовательской схемы);

- описание созданных таблиц (сопровождается схемами логической и физической моделями данных);

- описание созданных обзоров (обязательно привести DDL скрипт для каждого обзора).

Приём отчёта осуществляется в индивидуальном порядке. Ответы на контрольные вопросы даются устно.

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

 

1. Для чего предназначены табличные пространства USER (default tablespace) и TEMP (temporary tablespace)?

2. В чем заключается назначение оператора GRANT?

3. Почему сумма значений Pct Free и Pct Used не должна быть меньше 100%?

4. Что произойдет, если количество параллельных транзакций превысит значение Ini Trans?

5. Объяснить назначение в скрипте по созданию таблицы параметров структуры Storage Options.

6. Объяснить, какие действия выполняет оператор alter table в скрипте по созданию таблицы.

7. Какая таблица называется мастер-таблицей? Что такое каскадное удаление? Описать действия, которые могут выполняться при удалении записи из мастер-таблицы в СУБД Oracle.

 

 

Лабораторная работа №2
СОЗДАНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ, ТРИГГЕРОВ И ОРГАНИЗАЦИЯ ЗАПОЛНЕНИЯ ТАБЛИЦ ДАННЫМИ

Цель работы - научиться создавать последовательности (Sequence), триггеры (Trigger) и заполнять таблицы данными, пользуясь оператором Insert и созданной системой триггеров.

 

КРАТКАЯ ТЕОРИЯ

Последовательность – объект базы данных, посредством которого пользователи могут генерировать уникальные целые значения. Как правило, последовательности используют для автоматической генерации уникальных ключей.

Значения для каждой последовательности автоматически генерируются специальными подпрограммами ORACLE и, следовательно, позволяют избежать неизбежных потерь в производительности в результате реализации последовательностей на уровне приложений. Например, обычным способом такой реализации является блокирование таблицы, хранящей номер, в каждой транзакции в момент приращения последовательности. В результате только один номер последовательности может быть сгенерирован в каждый момент времени. Последовательности же ORACLE позволяют одновременное генерирование нескольких номеров последовательности, гарантируя при этом, что каждый номер последовательности будет уникальным.

Когда генерируются номера последовательности, осуществляется приращение этой последовательности независимо от того, завершается эта транзакция или отменяется. Если два пользователя параллельно осуществляют приращение одной и той же последовательности, номера последовательности, видимые каждым из этих пользователей, могут иметь пропуски значений, поскольку эти значения были сгенерированы другим пользователем. Одному пользователю никогда не может встретиться номер последовательности, сгенерированный другим пользователем. Если значение последовательности сгенерировано каким-либо пользователем, этот пользователь может использовать это значение независимо от того, осуществляется ли приращение последовательности другими пользователями.

Так как номера последовательности генерируются независимо от таблиц, одна и та же последовательность может использоваться для одной или более таблиц. Возможно, что отдельные номера последовательности будут вообще пропущены из-за того, что они могли быть сгенерированы и использованы в транзакции, которая, в конечном счете, была отменена.

Если в операторе CREATE SEQUENCEкроме имени не указать ни одного предложения, то по умолчанию создается возрастающая последовательность, которая начинается с 1, имеет шаг 1 и не имеет верхнего предела. Если указать только предложение INCREMENT BY -1, то создается убывающая последовательность, которая начинается с -1 и не имеет нижнего предела.

Можно создать последовательность так, чтобы приращение ее значений происходило одним из следующих способов:

- приращение значений последовательности продолжается неограниченно;

- приращение значений последовательности происходит до
определенного предела и затем прекращается;

- приращение значений последовательности происходит до
определенного предела и затем начинается заново.

Чтобы создать последовательность, приращение значений которой продолжается неограниченно, необходимо опустить параметр MAXVALUE или указать параметр NOMAXVALUE для возрастающей последовательности. Для убывающей последовательности опустить параметр MINVALUE или указать параметр NOMINVALUE.

Чтобы создать последовательность, приращение значений которой прекращается на определенном значении, необходимо указать значение для параметра MAXVALUE (если последовательность возрастающая) или значение для параметра MINVALUE (если последовательность убывающая). При этом необходимо указать также параметр NOCYCLE. Любая попытка сгенерировать номер последовательности, если последовательность уже достигла своего предела, приведет к ошибке.

Чтобы создать последовательность, приращение значений которой начинается заново после достижения определенного значения, необходимо указать значения для обоих параметров, MAXVALUE и MINVALUE, а также параметр CYCLE.

Значение параметра START WITH устанавливает начальное значение, генерируемое последовательностью, после того как ее создали. Следует обратить внимание, что это не обязательно именно то значение, с которого циклическая последовательность начинается заново после достижения своего максимального или минимального значения.

Количество кэшируемых значений для последовательности определяется значением параметра CACHE. Кэшированные последовательности обеспечивают быструю генерацию номеров последовательности. Кеш для данной последовательности заполняется при первом запросе номера этой последовательности. Кеш регенерируется после количества запросов, указанного в параметре CACHE. В случае сбоя системы все копированные номера последовательности, которые не были использованы в завершенных операторах языка манипулирования данными, теряются. Возможное количество потерянных значений равно величине параметра CACHE. По умолчанию ORACLE кэширует 20 номеров последовательности.

Триггер базы данных (database trigger) – это хранимый блок PL/SQL, который ассоциирован с таблицей. В триггере посредством PL/SQL описаны действия, которые необходимо выполнить при обработке операторов SQL (таких как Insert, Update, Delete и т.д.) для данной таблицы. Oracle автоматически выполняет триггер, во время обработки оператора SQL.