Работа с последовательностями в оракл
Числовые последовательности в Oracle - это ряд чисел, в котором каждое последующие число больше предыдущего. Из этого следует, что каждое число в последовательности встречается всего один раз. Следовательно, последовательности очень хорошо подходят для генерации первичных ключей для идентификации объектов внутри Базы данных.
В Oracle последовательности представлены в виде отдельных сущностей базы данных. Для последовательности следующие параметры имеют важные значения:
1) Начальное значение последовательности.
2) Шаг последовательности.
3) Минимальное значение последовательности.
Также для последовательности можно задать, циклична она или нет. Если последовательность циклична, то достигнув максимального значения последовательности, она перейдет к начальному значению последовательности. В случае, если последовательность нециклична и достигла своего конца, то будет сгенерирована ошибка (ORA-08004).
create sequence <имя>; -- создание последовательности
drop sequence <имя>; -- удаление последовательности
-- Получение следующего значения последовательности:
select <имя>.nextval from dual;
-- Занесение следующего значения последовательности в переменную:
select <имя>.nextval into <переменная> from dual;
Представления в оракл
Представление (англ. view, в сленге программистов часто используется в качестве заимствования из английского — «вьюшка») — виртуальная (логическая) таблица, представляющая собой поименованный запрос (алиас к запросу), который будет подставлен как подзапрос при использовании представления.
В отличие от обычных таблиц реляционной БД, представление не является самостоятельной частью набора данных, хранящегося в базе. Содержимое представления динамически вычисляется на основании данных, находящихся в реальных таблицах. Изменение данных в реальной таблице БД немедленно отражается в содержимом всех представлений, построенных на основании этой таблицы.
Представления используются в запросах к БД тем же образом, как и обычные таблицы. В случае SQL-СУБД имя представления может находиться в SQL-запросе на месте имени таблицы (в предложении FROM). Запрос из представления обрабатывается СУБД точно так же, как запрос, в котором на месте имени представления находится подзапрос, определяющий это представление.
Оператор определения представлений Oracle использует следующий синтаксис:
CREATE [OR REPLACE] [{FORCE [ NO FORCE}] VIEW [ имя_схемы.] имя представления {{альтернативное_имя {альтернативное_имя...])] AS запрос WITH { READ ONLY | CHECK OPTION [CONSTRAINT ограничение целостности} ]
Лабораторная работа № 3
«Организация автоматического расчета сводных данных
и поддержки целостности данных с помощью триггеров»
Цель работы: познакомиться с триггерами в Оракл на примере модели склада.
Рассматриваемые объекты: группы товаров, товары.
Предметная область - складской учет.
Группы товаров
Код группы |
Имя группы |
Количество на складе |
Сводная розничная стоимость |
Наценка (0…1) |
Вводится вручную |
Вводится вручную |
Рассчитыва-ется автомати-чески |
Рассчитывается автоматически |
Вводится вручную |
1 |
Телевизоры |
15 |
532000,00 |
0.2 |
2 |
Фотоаппараты |
25 |
212000,00 |
0.3 |
3 |
Холодильники |
10 |
831200,00 |
0.15 |
Товары
Код товара |
Наимено-вание |
Код груп-пы |
Приход-ная цена |
Розничная цена |
Кол-во на складе |
Рассчиты-вается автомати-чески |
Вводится вручную |
Вводится вручную |
Вводится вручную |
Рассчиты-вается автомати-чески |
Вводится вручную |
1 |
Телевизор Philips |
1 |
10000 |
12000 |
5 |
2 |
Телевизор Sony |
1 |
12000 |
14400 |
3 |
3 |
Фото Panasonic |
2 |
5000 |
6500 |
4 |
Задание:
Организовать с помощью последовательностей автоматический ввод «кода товара» в таблице «Товары».
Организовать автоматический расчет «Розничной цены» по формуле: «Розничная цена» = «Приходная цена» * (1 + «Наценка на группу»)
Написать триггеры, которые при изменении количества товаров в таблице «Товары», меняют «количество товаров» и «сводную стоимость» для соответствующей группы в таблице «Группы товаров».
Написать триггеры, которые при изменении наценки на товар в таблице «Группы товаров» меняют «розничные цены» в таблице «Товары» для соответствующей группы.
При создании таблицы Товары нужно по умолчанию заполнить значение столбцов 0, а не NULL
При изменении розничной цены должна пересчитываться сводная стоимость (создать триггер).
Лабораторная работа оценивается исходя из следующих параметров:
Общие требования:
Нормализация таблиц, описание связей.
Выбранные типы данных для описания свойств объектов и наложенные ограничения для поддержания целостности структуры.
Качество построенных запросов, процедур, триггеров, представлений, обработок исключительных ситуаций.
Критерии оценки лабораторной работы № 3
1. Для получения минимального количества баллов необходимо:
выполнить задание лабораторной работы; провести обоснование выбора связей и определение необходимых типов данных; выполнить нормализацию таблиц; продемонстрировать работу основных триггеров по заданию; ответить на один теоретический вопрос.
2. Для получения баллов на оценку «хорошо» также необходимо:
создать дополнительные таблицы и связанные триггеры по заданию преподавателя.
3. Для получения баллов на оценку «отлично» дополнительно необходимо: создать дополнительные таблицы и связанные триггеры по заданию преподавателя; ответить на дополнительный теоретический вопрос.