
- •3 Завдання до лабораторних робіт
- •3.1 Лабораторна робота № 1
- •1 Теоретические сведения
- •2 Ход работы
- •2.1 Создание базы данных
- •2.2 Регистрация базы данных
- •2.3 Подключение к базе данных
- •2.4 Удаление базы данных
- •2.5 Извлечение метаданных
- •2.6 Резервное копирование и восстановление
- •3 Задание
- •4 Отчет о выполнении работы
- •5 Контрольные вопросы
- •3.2 Лабораторна робота № 2
- •1 Теоретические сведения
- •1.1 Типы данных InterBase
- •2 Ход работы
- •3 Задание
- •4 Отчет о выполнении работы
- •5 Контрольные вопросы
- •3.3 Лабораторна робота № 3
- •1 Теоретические сведения
- •1.1 Таблицы (Tables)
- •1.2 Индексы
- •2 Ход работы
- •3 Задание
- •4 Отчет о выполнении работы
- •5 Контрольные вопросы
- •3.4 Лабораторная работа № 4
- •1 Теоретические сведения
- •1.2 Ограничение первичного ключа (Primary key)
- •1.2 Ограничения уникальности (Unique)
- •1.3 Ограничения внешнего ключа (Foreign keys)
- •1.4 Контрольные ограничения (Checks)
- •2 Ход работы
- •3 Задание
- •4 Отчет о выполнении работы
- •5 Контрольные вопросы
- •3.5 Лабораторная работа №5.
- •1 Теоретические сведения
- •1.1 Генераторы (Generators)
- •1.2 Бизнес-правила
- •1.3 Триггеры (Triggers)
- •2. Ход работы
- •3 Задание
- •4 Отчет о выполнении работы
- •5 Контрольные вопросы
- •3.6 Лабораторная работа №6
- •1 Теоретические сведения
- •1.1 Добавление новых данных
- •1.2 Удаление существующих данных
- •1.3 Обновление существующих данных
- •2. Ход работы
- •3. Задание
- •4. Отчет о выполнении работы
- •5. Контрольные вопросы
- •3.7 Лабораторная работа №7
- •1 Теоретические сведения
- •2. Ход работы
- •3. Задание
- •4. Отчет о выполнении работы
- •5. Контрольные вопросы
- •3.8 Лабораторная работа №8
- •1 Теоретические сведения
- •1.1 Представления (Views)
- •1.2 Модифицируемые представления
- •2 Ход работы
- •3 Задание
- •4 Отчет о выполнении работы
- •5 Контрольные вопросы
- •3.9 Лабораторная работа №9
- •1 Теоретические сведения
- •1.1 Хранимые процедуры (Procedures)
- •1.2 Виды хранимых процедур в InterBase
- •2 Ход работы
- •3 Задание
- •4. Отчет о выполнении работы
- •5. Контрольные вопросы
- •3.10 Лабораторная работа №10
- •1 Теоретические сведения
- •1.1 Функции пользователя (udFs)
1 Теоретические сведения
1.1 Генераторы (Generators)
Генераторы используются для генерации уникальных номеров, используемых в ключевых полях. То есть они реализуют те же функциональные возможности в таблицах InterBase, что поля с автоматическим приращением в других СУБД. Можно указать, чтобы числа генерировались, начиная с заданного начального значения.
Пример создания генератора:
CREATE GENERATOR MyGenerator;
SET GENERATOR MyGenerator TO 1000;
Генераторы непосредственно не привязываются к какому-либо полю. Они просто позволяют генерировать уникальные числа. Для этого используется функция Gen_ID(), встроенная в InterBase, которая генерирует целочисленные значения. Она берет генератор в качестве первого параметра и значение шага в качестве второго. Обычно приращение равно 1.
Обращаться к генератору можно только через функцию Gen_ID().
1.2 Бизнес-правила
В реальной жизни вопрос целостности базы данных связан с правилами, установленными у пользователя информационной системы. Например, в компании могут быть установлены такие правила:
• клиентам не разрешается размещать заказы на сумму, превышающую их лимит кредита;
• сведения о выполненных заказах хранятся в течение шести месяцев, а затем удаляются;
• нельзя выдавать читателю новых книг, пока он не вернет взятых ранее;
• каждый раз, когда продается какой-нибудь товар, для служащего, оформившего продажу, и для отдела, в котором этот служащий работает, на стоимость проданного товара увеличивается значение определенного поля, используемого для вычисления премии; в случае возврата всего или части проданного товара, значение этого поля соответствующим образом должно уменьшиться;
• каждый раз, когда приходит новая поставка, количество поставленного товара на складе увеличивается на количество товара в поставке.
Такие правила называются бизнес-правилами. В первом стандарте SQL считалось, что эти правила выходят за рамки ответственности СУБД и за их реализацию отвечает прикладная программа, осуществляющая доступ к базе данных. Впервые в 1986 году в СУБД Sybase было введено понятие триггер, что позволило включить реализацию бизнес-правил в базу данных.
1.3 Триггеры (Triggers)
С любым событием, вызывающим изменение содержимого таблицы, можно связать сопутствующее действие (триггер), которое СУБД должна выполнять при каждом возникновении события. Триггер – это группа операторов языка SQL, которые автоматически выполняется при вставке, модификации или удалении записи.
В СУБД InterBase можно создавать триггеры, работающие при следующих шести условиях:
• до вставки записи (BEFORE INSERT);
• после вставки записи (AFTER INSERT);
• до удаления записи (BEFORE DELETE);
• после удаления записи (AFTER DELETE);
• до модификации записи (BEFORE UPDATE);
• после модификации записи (AFTER UPDATE).
В Firebird 1.5 триггер может срабатывать при возникновении одного из нескольких событий. Триггеры могут вызывать выполнение хранимых процедур, выполнять различные проверки и генерировать исключения. Обычно триггеры используются для задания сложных правил контроля целостности базы данных, которые невозможно реализовать с помощью ограничений.
Недостатком триггеров является их влияние на производительность операций с базой данных.
Синтаксис оператора создания триггера:
CREATE TRIGGER Имя FOR Таблица
[ACTIVE | INACTIVE]
{BEFORE | AFTER}
<операция> [OR <операция> [OR <операция>]]
[POSITION Номер]
AS [<список переменных>] <блок>;
<операция> = {INSERT | UPDATE | DELETE}
<список переменных> =
DECLARE [VARIABLE] Переменная <тип данных>;
[DECLARE [VARIABLE] Переменная <тип данных>; ...]
<блок> =
BEGIN
<составной оператор>
[<составной оператор>...]
END
<составной оператор> = <блок> | Оператор;
Параметры, входящие в этот оператор, пояснены в таблице 5.1
Таблица 5.1 – Описание параметров оператора создания триггера
Параметр |
Описание |
Имя |
Уникальное название триггера. |
ACTIVE | INACTIVE |
Указывает будет ли работать триггер |
BEFORE | AFTER |
Обязательный параметр, показывающий когда будет срабатывать триггер |
INSERT | UPDATE | DELETE |
Одной из событий, на которые будет срабатывать триггер |
POSITION Номер |
Определяет порядок срабатывания триггера, когда имеется несколько триггеров, реагирующих на одно и то же событие. Номер – целое число между 0 и 32767 |
DECLARE [VARIABLE] Переменная <тип данных> |
Описание локальной переменной, которую можно будет использовать только в этом триггере |
Оператор |
Любой одиночный оператор языка хранимых процедур и триггеров InterBase |
Внутри тела триггера доступны две контекстные переменные NEW и OLD, которые позволяют получить доступ к новым и старым значениям полей записи, при изменении которой был вызван триггер.
Пример генератора и триггера:
CREATE GENERATOR EMP_NO_GEN;
CREATE TRIGGER SET_EMP_NO FOR EMPLOYEE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.EMP_NO IS NULL) THEN
NEW.EMP_NO = GEN_ID(EMP_NO_GEN, 1);
END;