Трігери і процедури, що зберігаються

Індекси

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

Щоб вирішити проблему пошуку, СУБД використовують об'єкти, звані індексами. Індекс містить відсортовану по колонці або декільком колонкам інформацію і указує на рядки, в яких зберігається конкретне значення колонки. Оскільки значення в індексі зберігаються в певному порядку, при пошуку переглядати потрібно значно менший об'єм даних, що істотно зменшує час виконання запиту. Індекс рекомендується створювати для тих колонок, по яких часто проводиться пошук.

При генерації схеми фізичною БД ERwin автоматично створює індекс на основі первинного ключа кожної таблиці, а також на основі всіх альтернативних ключів і зовнішніх ключів, оскільки ці колонки найчастіше використовуються для пошуку даних. Можна відмовитися від генерації індексів за умовчанням і створити власні індекси. Для збільшення ефективності пошуку адміністратор БД повинен аналізувати часто виконувані запити і на основі аналізу створювати власні індекси.

Трігери і процедури, що зберігаються, – це іменовані блоки коди SQL, які заздалегідь відкомпілювалися і зберігаються на сервері для того, щоб швидко проводити обробку запитів, валидацию даних і інші часто виконувані функції. Зберігання і виконання коди на сервері дозволяє створювати код тільки один раз, а не в кожному застосуванні, що працює з БД. Це економить час при написанні і супроводі програм. При цьому гарантується, що цілісність даних і бизнес-правила підтримуються незалежно від того, яке саме клієнтське застосування звертається до даним. Трігери і процедури, що зберігаються, не потрібно пересилати по мережі з клієнтського застосування, що значно знижує мережевий трафік.

Процедурою, що зберігається, називається іменований набір команд SQL, що заздалегідь відкомпілювалися, який може викликатися з клієнтського застосування або з іншої процедури, що зберігається.

Трігером називається процедура, яка виконується автоматично як реакція на подію. Такою подією може бути вставка, зміна або видалення рядка в існуючій таблиці. Трігер повідомляє СУБД, які дії потрібно виконати при виконанні команд SQL INSERT, UPDATE або DELETE для забезпечення додаткової функціональності, що виконується на сервері.

Трігер посилальної цілісності– це особливий вид трігера, використовуваний для підтримки цілісності між двома таблицями, які зв'язані між собою. Якщо рядок в одній таблиці вставляється, змінюється або віддаляється, то трігер посилальної цілісності повідомляє СУБД, що потрібно робити з тими рядками в інших таблицях, у яких значення зовнішнього ключа співпадає із значенням первинного ключа вставленого рядка (зміненого або видаленого рядка).

Для генерації трігерів ERwin використовує механізм шаблонів – спеціальних скриптів, що використовують макрокоманди. При генерації коди трігера замість макрокоманд підставляються імена таблиць, колонок, змінні і інші фрагменти коди, відповідні синтаксису вибраної СУБД. Шаблони трігерів посилальної цілісності, ERwin, що генеруються, за умовчанням, можна змінювати.

Для створення і редагування процедур, що зберігаються, ERwin має в своєму розпорядженні спеціальних редакторів, аналогічних редакторам, використовуваним для створення трігерів. На відміну від трігера процедура, що зберігається, не виконується у відповідь на якусь подію, а викликається з іншої програми, яка передає на сервер ім'я процедури. Процедура, що зберігається, гнучкіша, ніж трігер, оскільки може викликати інші процедури, що зберігаються. Їй можна передавати параметри, і вона може повертати параметри, значення і повідомлення.