Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая работа / bd / базы данных2222.rtf
Скачиваний:
241
Добавлен:
17.02.2014
Размер:
19.41 Mб
Скачать

7.1.2. Реализация с использованием триггеров

Некоторые СУБД, например Oracle, позволяют использовать триггеры.

Триггером называют действие, связанное с событием, вызвавшим изменение в содержимом таблицы.

В СУБД Oracle три типа событий вызывают запуск триггеров – это попытки вставить (INSERT), обновить (UPDATE) или удалить (DELETE) один из кортежей (записей строк) таблицы. Триггеры могут использоваться для организации или расширения поддержки ссылочной целостности данных, для реализации сложных бизнес-правил и контроля над внесением изменений в данные.

Приведенный ниже пример демонстрирует, как в среде СУБД Oracle можно организовать контроль за внесением в атрибут Rent (Арендная_плата) таблицы Property_for_Rent (Недижимость_в_аренду) изменений превышающих десять процентов исходного значения.

В этом примере для таблицы Property_for_Rent (Недижимость_в_аренду) создается триггер типа before update (Перед обновлением). Как следует из его названия, предусмотренные этим триггером действия будут выполняться до фиксации в базе данных результатов выполнения транзакций обновления. Команды между ключевыми словами BEGIN и END будут выполняться при каждом обновлении строки в таблице Property_for_Rent (Недижимость_в_аренду) , которое удовлетворяет условию, указанному в предложении WHEN. Этот триггер предполагает существование таблицы с именем Property_for_Rent_Audit (Недижимость_в_аренду_Аудит), в которую будут помещаться копии обновленных записей, удовлетворяющих условиям отбора.

Пример 1

CREATE TRIGGER property_before_update

BEFORE UPDATE ON property_for_rent

FOR EACH ROW

WHEN (NEW.rent/OLD.rent>l.l)

BEGIN

INSERT INTO property_for_rent_audit

VALUES(:OLD.pno,:OLD.street,:OLD.area,:GLD.city, :OLD.pcode,:OLD.type,:OLD,rooms,:OLD.rent,:OLD.ono, :OLD.sno, :OLD.bno)

END

7.1.3. Реализация с использованием уникальных индексов

Индекс представляет собой механизм доступа, ускоряющий выборку данных из таблицы. Он действует подобно помещенному в книгу указателю.

Уникальным называют такой индекс, в котором двум различным кортежам таблицы запрещено иметь одинаковое индексируемое значение. Система проверяет наличие дублей непосредственно при создании индекса (если данные в таблице уже существуют) и впоследствии контролирует каждое добавляемое в таблицу значение. Многие типы реляционных СУБД поддерживают создание индексов.

Уникальный индекс может использоваться для организации контроля над нарушением уникальности значений первичных и потенциальных ключей. В некоторых СУБД оператор SQL не может воспрепятствовать помещению в таблицу двух записей с одним и тем же значением первичного ключа. Во избежание подобных ситуаций для атрибута первичного ключа таблицы Property_for_Rent (pno) (Недвижимость_в_аренду.код_недвижимости) можно создать уникальный индекс при помощи оператора SQL: см. пример.

Таким образом, если выбранная целевая СУБД не поддерживает определения первичных и альтернативных ключей, то их следует заменить соответствующими уникальными индексами.

Соседние файлы в папке bd