Общая характеристика реляционной модели данных

Автор работы: Пользователь скрыл имя, 28 Февраля 2013 в 14:56, лекция

Описание работы

Основы реляционной модели данных были впервые изложены в статье Е.Кодда в 1970 г. Эта работа послужила стимулом для большого количества статей и книг, в которых реля-ционная модель получила дальнейшее развитие. Наиболее распространенная трактовка реляционной модели данных принадлежит К.Дейту. Согласно Дейту, реляционная модель состоит из трех частей:
• Структурной части
• Целостной части
• Манипуляционной части

Файлы: 1 файл

Базовые понятия реляционной модели данных.docx

— 169.99 Кб (Скачать файл)

 существующий  триггер  новой  версией,  не  затрагивая   никаких       

 грантов,  которые  были  выданы  для первоначальной версии этого       

 триггера.        

 Альтернативно, триггер  можно  удалить и создать  заново.  Однако        

 все гранты, которые  были  выданы для удаляемого триггера,  также       

 удаляются,  и  должны  быть  выданы  заново после создания новой       

 версии триггера. 

Удаление триггеров        

 Для удаления  триггера из  базы данных  используйте команду DROP        

TRIGGER.   Например,  чтобы  удалить  триггер  с именем REORDER,       

 введите следующее  предложение:        

 DROP TRIGGER reorder; 

Привилегии, требуемые для  удаления триггеров

--------------------------------------------        

 Чтобы удалить триггер,  вы должны  иметь его в своей схеме,  либо        

 иметь системную привилегию DROP ANY TRIGGER.  

--------------- 

Включение и выключение триггеров         

 Триггер может находиться  в одном из двух различных  режимов:        

 включен         Включенный  триггер  выполняет  свое  тело, если                       

 выдано  предложение   триггера,  и   ограничение                       

 триггера (если есть) вычисляется  как TRUE.        

 выключен        Выключенный триггер не выполняет свое тело, даже                       

 если выдано предложение  триггера, и  ограничение                       

 триггера (если есть) вычисляется  как TRUE. 

Выключение триггеров

--------------------        

 Вы можете временно  выключить  триггер, если имеет место  одно из       

 следующих условий:            

*  Объект, к которому обращается триггер, недоступен.       

      *  Вы должны  выполнить массовую  загрузку данных,  и хотите              

 осуществить ее быстро, не возбуждая триггеров. 

 

 

            *  Вы  загружаете  данные  в  таблицу, к которой применяется              

 триггер. 

 

 

        По умолчанию, триггер включается  в момент его создания.   Чтобы       

 отключить триггер,  используйте команду  ALTER TRIGGER  с опцией       

DISABLE.   Например,  следующее  предложение  отключает  триггер       

 REORDER по таблице INVENTORY: 

 

 

        ALTER TRIGGER reorder DISABLE; 

 

 

        Вы можете одновременно  отключить все триггеры, ассоциированные  с       

 таблицей, с помощью  команды ALTER TABLE с опциями DISABLE и  ALL       

TRIGGERS.    Например,   следующее   предложение   отключает все       

 триггеры, определенные  для таблицы INVENTORY: 

 

 

        ALTER TABLE inventory           

DISABLE ALL TRIGGERS; 

 

 

 

Включение триггеров

------------------- 

 

 

        По  умолчанию,  триггер  автоматически  включается  в момент его       

 создания; однако позже  он может быть выключен.  Закончив задачу,       

 для  которой  потребовалось  выключать  триггер, вы можете снова       

 включить его. 

 

 

        Чтобы  включить  триггер,  используйте  команду  ALTER TRIGGER с       

 опцией ENABLE.  Например, следующее предложение включает триггер       

 REORDER по таблице INVENTORY: 

 

 

        ALTER TRIGGER reorder ENABLE; 

 

 

        Вы можете одновременно включить все триггеры, ассоциированные  с       

 таблицей, с помощью  команды ALTER  TABLE с опциями ENABLE и  ALL       

TRIGGERS.    Например,   следующее   предложение   включает  все       

 триггеры, определенные  для таблицы INVENTORY: 

 

 

        ALTER TABLE inventory           

ENABLE ALL TRIGGERS; 

 

 

 

Привилегии, требуемые для  включения и выключения триггеров

----------------------------------------------------------  

 

 

        Для включения  и выключения  триггеров с  помощью команды  ALTER       

TABLE, вы  должны либо  владеть таблицей,  либо иметь  объектную       

 привилегию  ALTER  TABLE  для  таблицы  или системную привилегию       

 ALTER ANY TABLE.   Для включения или  выключения индивидуального       

 триггера с помощью  команды ALTER TRIGGER, вы должны либо  владеть       

 триггером, либо иметь  системную привилегию ALTER ANY TRIGGER.  

 

 

 

Вывод информации о триггерах  

 

 

        Следующие  обзоры   словаря  данных   раскрывают  информацию   о       

 триггерах: 

 

 

            *  USER_TRIGGERS 

 

 

            *  ALL_TRIGGERS 

 

 

            *  DBA_TRIGGERS 

 

 

        Полное  описание  этих   обзоров  словаря  данных   приведено  в       

 приложении D. 

 

 

        Например, предположим,  что для  создания триггера  REORDER было       

 использовано следующее  предложение: 

 

 

        CREATE TRIGGER reorder       

 AFTER UPDATE OF parts_on_hand ON inventory       

FOR EACH ROW       

WHEN (new.parts_on_hand < new.reorder_point)       

DECLARE         

x NUMBER;       

BEGIN         

SELECT COUNT(*) INTO x           

FROM pending_orders           

WHERE part_no = :new.part_no;         

IF x = 0 THEN           

INSERT INTO pending_orders             

VALUES (:new.part_no, :new.reorder_quantity, sysdate);          

END IF;       

 END; 

 

 

        

 Следующие два запроса  возвращают информацию о триггере REORDER: 

 

 

        SELECT type, triggering_statement, table_name           

FROM user_triggers           

WHERE name = 'REORDER'; 

 

 

        TYPE             TRIGGERING_STATEMENT       TABLE_NAME       

---------------- -------------------------- ------------        

AFTER EACH ROW   UPDATE                     INVENTORY 

 

 

        SELECT trigger_body           

FROM user_triggers           

WHERE name = 'REORDER'; 

 

 

        TRIGGER_BODY       

--------------------------------------------       

DECLARE         

x NUMBER;

        BEGIN         

SELECT COUNT(*) INTO x           

FROM pending_orders           

WHERE part_no = :new.part_no;         

IF x = 0 THEN           

INSERT INTO pending_orders             

VALUES (:new.part_no, :new.reorder_quantity, sysdate);    

       END IF;       

 END; 

 

 

 

Примеры применения триггеров  

 

 

        Вы можете использовать триггеры  разнообразными способами,  чтобы       

 привязать  к  своим  нуждам  управление  данными  в  базе данных       

ORACLE.  Например, триггеры обычно используются для: 

 

 

            *  изощренного аудитинга 

 

 

            *  предотвращения незаконных транзакций  

 

 

            *  обеспечения ссылочной целостности между узлами в              

 распределенной базе  данных 

 

 

            *  реализации сложных организационных правил 

 

 

            *  ввода в действие комплексных правил защиты 

 

 

            *  прозрачной регистрации событий 

 

 

            *  автоматической генерации значений вычисляемых столбцов 

 

 

            *  поддержания синхронных дублирований таблиц 

 

 

 

Аудитинг с помощью  триггеров

---------------------------- 

 

 

        Типичное применение триггеров  - дополнять встроеннные  средства       

 аудитинга  ORACLE.   Хотя  можно  писать триггеры, которые будут       

 записывать  информацию,  аналогичную  той,  что   регистрируется       

 командой AUDIT,  триггеры следует  применять лишь  в том случае,       

 если  вам  требуется  более  детальная  аудиторская  информация.       

 Например с помощью  триггеров можно реализовать  отслеживание на       

 уровне значений столбцов  в строках таблиц. 

 

 

        Иногда команда ORACLE AUDIT рассматривается  как средство  аудита       

 ЗАЩИТЫ, тогда как триггеры  могут обеспечить средства ФИНАНСОВОГО        

 аудита. 

 

 

        Принимая решение о создании  триггера для отслеживания операций  в       

 базе  данных,  рассматривайте  те  возможности,  которые   могут       

 предоставить  средства  аутитинга  ORACLE,  и  сравнивайте  их с       

 аудитингом, который может  быть реализован триггерами. 

 

 

        Аудит           Стандартные     опции     аудитинга    позволяют       

 предложений     отслеживать предложения DML и DDL по отношению к       

DML и DDL       любым  типам  объектов  схем  и  структур.    По                       

 сравнению с этим, триггеры  позволяют отслеживать                       

 лишь предложения DML, выдаваемые по таблицам. 

 

 

        Централизован-  Вся   аудиторская    информация   базы    данных       

 ный аудитор-    записывается  централизованно  и  автоматически,       

 ский журнал     используя средства аудитинга ORACLE. 

 

 

        Декларативный   Аудитинг,  включаемый  стандартными   средствами       

 метод           ORACLE,  легче  объявлять  и  сопровождать, и он                       

 меньше подвержен ошибкам,  чем функции аудитинга,                       

 определяемые через  триггеры. 

 

 

        Можно отсле-    Любые изменения существующих опций  стандартного       

 живать опции    аудитинга также можно отслеживать, что еще более        

 аутидинга       усиливает контроль за действиями в базе данных. 

 

 

        Аудитинг        Используя  средства  аудитинга  базы  данных, вы       

 сессии          можете  генерировать  аудиторские  записи   либо       

 и аудитинг      каждый раз при выдаче отслеживаемого предложения        

 исполнений      (BY ACCESS), либо один раз на сессию, в  которой                       

 выдается это предложение  (BY SESSION).  Триггеры                       

 не  могут  выполнять  отслеживание  по   сессии;                       

 аудиторская  запись  будет  генерироваться   при                       

 каждом обращении к  защищаемой триггером таблице. 

 

 

        Аудитинг        Аудитинг   базы    данных   может    отслеживать       

 безуспешных     безуспешные попытки доступа к данным.  Напротив,       

 попыток         любая   аудиторская   информация,   генерируемая       

 доступа         триггером, стирается в случае отката предложения                       

 триггера. 

 

 

        Аудитинг        Соединения  и  разъединения,  а также статистика       

 подключений     сессии   (физические   и   логические  операции,                       

 захваты) могут отслеживаться  только  стандартным                       

 аудитингом базы данных.  

 

 

        Применяя триггеры для  изощренного аудитинга, обычно  используют       

 триггеры  AFTER.   За  счет  использования  триггеров  AFTER, вы       

 регистрируете аудиторскую  информацию после того, как предложение        

 триггера  подверглось  воздействию  всех  возможных  ограничений       

 целостности, и избегаете  выполнения излишней аудиторской  работы       

 в  тех  случаях,  когда  предложения  подвергаются  откату из-за       

 нарушения ограничений  целостности. 

 

 

        Использовать ли триггеры  строк или триггеры предложений,  зависит       

 от того, какую  информацию вы отслеживаете.   Например, триггеры       

 строк  обеспечивают  отслеживание  значений  по строкам таблицы.       

 Триггеры могут также  позволить пользователю предоставлять  "код       

 причины",  по  которой  выдается  отслеживаемое предолжение, что 

       может быть полезным при аудитинге как на уровне строк, так и  на        

Информация о работе Общая характеристика реляционной модели данных