- •Информатика е.Н.Саладаев
- •1.Введение в информатикую. Информация.
- •1.1. Что такое инфоpматика
- •1.2. Информация
- •1.3. В каком виде существует информация
- •1.4. Как передаётся информация
- •1.5. Как измеряется количество информации
- •1.6. Что можно делать с информацией
- •1.7. Какими свойствами обладает информация
- •1.8. Что такое обработка информации
- •1.9. Информационные ресурсы и информационные технологии
- •1.10. Информатизация общества
- •2. Общие принципы организации и работы компьютеров
- •2.1. Что такое компьютер
- •2.2. Устройство компьютера
- •3. Принципы построения компьютеров
- •1. Принцип программного управления. Из него следует, что программа состоит из набора команд, которые выполняются процессором автоматически друг за другом в определенной последовательности.
- •2.4. Команды
- •2.5. Выполнение команд
- •2.6. Архитектура и структура компьютера
- •2.7. Центральный процессор
- •2.8. Устройства памяти
- •2.9. Уустройства внутренней памяти
- •1. Оперативная память
- •3. Специальная память
- •2.10. Устройства внешней памяти
- •Накопители на гибких магнитных дисках
- •2. Накопители на жестких магнитных дисках
- •3. Накопители на компакт-дисках
- •4. Записывающие оптические и магнитооптические накопители
- •Накопители на магнитной ленте (стримеры) и накопители на сменных дисках
- •2.11. Аудиоадаптер
- •2.12. Видеоадаптер и графический акселератор
- •2.13. Клавиатура
- •2.14. Видеосистема компьютера
- •1. Монитор на базе электронно-лучевой трубки
- •2. Жидкокристаллические мониторы
- •3. Сенсорный экран
- •2.15. Принтер, плоттер, сканер
- •2.16. Модемы и факс-модемы
- •2.17. Манипуляторы
- •2.18. Устройство компьютера
- •2.19. Основные блоки компьютера
- •2.20. Системная плата
- •2.21. Организация межкомпьютерных связей
- •2.22. Компьютерные сети
- •Наиболее распространенные виды топологий сетей:
- •2.23. Соединение между собой устройств сети
- •2.24. Классификация компьютерных сетей по степени географического распространения
- •2.26. Беспроводныесети
- •2.27. Сеть Интернет
- •Как можно связаться с Интернет
- •Как связываются между собой сети в Интернет
- •2.28. Основные возможности, предоставляемые сетью Интернет
- •World Wide Web — главный информационный сервис.
- •2. Электронная почта.
- •3. Cистема телеконференций Usenet (от Users Network).
- •4. Системы информационного поиска сети Интернет.
- •Системы, основанные на предметных каталогах.
- •Автоматические индексы.
- •5. Программа пересылки файлов Ftp.
- •6. Программа удалённого доступа Telnet.
- •2.29. Мультимедиа и мультимедиа-компьютер
- •3.Классификация компьютеров
- •3.1 Критерии классификации компьютеров
- •3.2. Классификация по поколениям
- •3.3. Краткая историческая справка
- •3.4 Компьютеры первого поколения
- •3.5. Компьютеры второго поколения
- •3.6. Особенности компьютеров третьего поколения
- •3.7. Характеристики эвм четвёртого поколения
- •3.8. Какими должны быть компьютеры пятого поколения
- •3.9. Классификация компьютеров по условиям эксплуатации
- •3.10. Классификация компьютеров по производительности и характеру использования
- •3.11. Типы портативных компьютеров
- •4.Представление чисел в компьютерах
- •4.1. Системы счисления
- •4.2. Представление целых чисел в позиционных системах счисления
- •4.3. Системы счисления используемые для общения с компьютером
- •4.4. Почему люди пользуются десятичной системой, а компьютеры — двоичной
- •4.5. Почему в компьютерах используются также восьмеричная и шестнадцатеричная системы счисления
- •4.6. Перевод целых числел из десятичной системы в любую другую позиционную систему счисления
- •4.7. Перевод пpавильной десятичной дpоби в любую другую позиционную систему счисления
- •4.8. Перевод чисел из двоичной (восьмеpичной, шестнадцатеpичной) системы в десятичную
- •4.9. Сводная таблица переводов целых чисел из одной системы счисления в другую
- •4.10. Арифметические операции в позиционных системах счисления
- •4.11. Представление в компьютере целых числел
- •.5.Выполнение арифметических операций в компьютерах
- •5.1. Выполнение арифметические действия над целыми числами Сложение и вычитание
- •4. А и в отрицательные.
- •Умножение и деление
- •5.2. Представление в компьютере вещественных чисел
- •Умножение
- •Деление
- •6.Программное обеспечение компьютеров
- •6.1. Что такое программное обеспечение
- •6.2. Классификация программного обеспечения
- •6.3. Прикладные программы
- •6.4. Роль и назначение системных программ
- •6.5. Что такое операционная система
- •6.6. Файловая система ос
- •6.7. Структура операционной системы ms dos
- •6.8. Программы-оболочки
- •6.9. Операционные системы Windows, Unix, Linux Операционные системы Windows
- •Операционная система Unix
- •6.10. Трансляторы, компиляторы, интерпретаторы
- •6.11. Системы программирования
- •6.12. Для чего нужны инструментальные программы
- •6.13. Текстовые редакторы
- •6.14. Графический редактор
- •6.15. Возможности систем деловой и научной графики
- •6.16. Табличный процессор
- •6.17. Системы управления базами данных
- •6.18. Библиотеки стандартных подпрограмм
- •6.19. Пакеты прикладных программ
- •6.20. Интегрированные пакеты программ
- •6.21. Органайзеры Органайзеры — это программы — электронные секретари
- •6.22. Сетевое программное обеспечение
- •Функции и характеристики сетевых операционных систем (ос)
- •7.Алгоритмы. Алгоритмизация. Алгоритмические языки
- •7.1. Понятие алгоритма
- •7.2. Исполнитель алгоритма
- •7.3. Свойства алгоpитма
- •7.4. Формы записи алгоритма
- •7.5. Словесный способ записи алгоритмов
- •7.6. Графический способ записи алгоритмов
- •7.7. Псевдокод
- •7.8. Запись алгоритма на учебном алгоритмическом языке Основные служебные слова
- •Команды учебного ая
- •Пример записи алгоритма на учебном ая
- •7.9. Базовые алгоритмические структуры
- •7.10. Итерационные циклы
- •7.11. Вложенные циклы
- •Пример вложенных циклов для
- •Пример вложенных циклов пока
- •7.12. Отличие программного способа записи алгоритмов от других
- •Основные этапы решения задач на эвм
- •7.13.Уровени языков программирования
- •7.14. Достоинства и недостатки машинных языков
- •7.15. Язык ассемблера
- •7.16. Преимущества алгоритмических языков перед машинными
- •7.17. Компоненты алгоритмического языка
- •7.18. Понятия алгоритмических языков
- •7.19. Стандартные функции
- •Вычисления часто употребляемых функций осуществляются посредством подпрограмм, называемых стандартными функциями, которые заранее запрограммированы и встроены в транслятор языка.
- •7.20. Арифметические выражения
- •Примеры записи арифметических выражений
- •7.21. Логические выражения
- •Примеры записи логических выражений, истинных при выполнении указанных условий.
- •8.Технология подготовки и решения задач с помощью компьютера
- •8.1. Этапы решения задач с помощью компьютера
- •8.2. Математические модели
- •8.3. Основные этапы процесса разработки программ
- •8.4. Как проконтролировать текст программы до выхода на компьютер
- •8.5. Отладка и тестирование
- •8.6. В чем заключается отладка
- •8.7. Тесты и тестирование
- •8.8. Какими должны быть тестовые данные
- •8.9. Этапы процесса тестирования
- •8.10. Характерные ошибки программирования
- •8.11. Является ли отсутствие синтаксических ошибок свидетельством правильности программы
- •8.12. Ошибки не обнаруживаемые транслятором
- •8.13. Сопровождение программы
- •9.Применение компьютерной техники
- •9.1. Использувание компьютеров в быту
- •9.2. Системы автоматизированного проектирования (сапр)
- •9.3. Автоматизированные системы научных исследований (асни)
- •9.4. Взаимосвязь между асни и сапр
- •9.5. Базы знаний и экспертные системы
- •9.6. Использование компьютеры в административном управлении
- •9.7. Роль компьютеров в обучении
- •9.8. Компьютеры в управлении технологическими процессами
- •9.9.Компьютеры в медицине
- •9.10. Компьютеры в торговле
- •9.11. Электронные деньги
- •9.12. Компьютеры в сельском хозяйстве
- •10.Программирование на алгоритмическом языке qBasic Общая характеристика языка
- •10.1.Элементы языка qbasic
- •1. Ключевые слова
- •2. Синтаксические соглашения
- •3. Комментарии
- •4. Арифметические выражения.
- •5. Строковые выражения
- •6. Типы данных
- •10.2.Константы и переменные
- •1. Константы
- •2. Переменные
- •3. Присвоение значений переменным
- •10.3. Ввод/вывод
- •1. Вывод на экран
- •2. Очистка экрана.
- •3. Ввод с клавиатуры
- •4. Форматированный вывод на экран
- •5. Позиционирование курсора
- •6. Вывод пробелов
- •7. Функция табуляции
- •8. Остановка программы
- •10.4.Управляющие операторы
- •1. Оператор безусловного перехода
- •2. Условия
- •3. Циклические структуры
- •4. Оператор выбора select case
- •10.5.Обработка строк
- •1. Определение длины строки
- •2. Получение символов кода ascii
- •4. Выделение левых крайних символов строки
- •6. Выбор подстроки
- •7. Получение строчных символов
- •10.6.Математические вычисления
- •1. Абсолютное значение числа
- •2. Тригонометрические функции
- •10.7.Массивы в qbasic
- •10.8.Функции и процедуры, определенные пользователем
- •1. Собственные функции
- •2. Собственные процедуры
- •10.9.Другие операторы
- •5. Установка цветов экрана
- •10.10.Работа с файлами
- •1. Введение и основные функции
- •2. Функция eof
- •3. Работа с адресами в справочнике.
- •10.11.Обработка ошибок
- •10.12. Графические возможности basic
- •1. Переход в графический режим экрана
- •2. Операторы, реализующие графику
- •Установка цветов в операторе color qBasic:
- •12.Введение в язык программирования Visual Basic
- •Основы. Как осуществляется программирование
- •Язык Visual Basic
- •Создание проекта
- •Для создания переменных и отображения их значений
- •Основные понятия
- •Подробное рассмотрение. Типы данных
- •Тип данных String
- •Практическое задание Объединение строк
- •Для хранения значений в массиве
- •Арифметические операции. Создание выражений с переменными и операторами
- •Сложение чисел
- •Сравнение выражений
- •Как заставить компьютер что-то делать. Написание первой процедуры
- •Создание процедур
- •Создание функции с параметрами
- •Повторение действий в программе: использование цикла For... Next
- •Для использования оператора For... Next
- •Программный выбор между двумя возможностями. Оператор If... Then
- •Для использования инструкции If... Then
- •Для использования предложения Else
- •Подробное рассмотрение. Повторения операций в цикле Do... While или Do... Until, пока не будет выполнено условие
- •Чтобы использовать оператор Do...While
- •Оператор Do...Until
- •Чтобы использовать оператор Do...Until
- •Обработка ошибок
- •Чтобы использовать блок Try...Catch
- •Взаимодействие с пользователями программы. Пользовательский интерфейс
- •Изменение свойств формы
- •Добавление элементов управления в форму
- •Взаимодействие с пользователем. Использование кнопок
- •Использование кнопок
- •Отображение и ввод текста. Использование надписей и текстовых полей
- •Создание пользовательского интерфейса с надписью и текстовым полем
- •Добавление кода и проверка программы
- •Взаимодействие программы с пользователем. Создание обработчика событий
- •Обработка событий Click
- •Обработка событий MouseEnter
- •Обработка событий MouseLeave
- •Получение выбора пользователя. Использование флажков и переключателей
- •Использование переключателей
- •Совместное использование обработчика событий
- •Для совместного использования обработчика событий
- •Программирование с применением объектов. Использование классов
- •13.Базы данных
- •13.1.Основная терминология
- •Дополнения к определениям
- •Пользователи
- •13.2.Основы проектирования бд
- •Модели бд Простая двумерная структура
- •Иерархическая структура
- •Реляционная модель данных
- •708 Тульский механический завод.
- •Главный ключ системы
- •13.3.Проблемы реляционного подхода Правила проектирования бд
- •Задача нормализации
- •Повторяющиеся группы
- •Общие поля в связанных таблицах
- •Поиск информации. Индексные файлы
- •Проблемы достоверности информации
- •Оперативные таблицы и справочники
- •Функции универсальной информационной системы
- •Основные функции ис
- •Вспомогательные функции ис
- •Документальные системы
- •Обзор субд
- •13.4.Основные сведения по интерфейсу Access.
- •Типы полей.
- •Свойства поля.
- •Теперь перейдем к другой вкладке- «Подстановка».
- •Определение связей между таблицами.
- •Просмотр существующих связей
- •Присоединенные таблицы
- •Ввод, изменение и просмотр данных
- •Создание простых форм
- •Элементы форм
- •Быстрый поиск
- •13.5.Запросы
- •Типы запросов.
- •Создание простых отчетов.
- •Структура ленточного отчета:
- •Структура отчета в столбец:
- •Анализ таблиц
- •Создание связей и объединений в запросах.
- •Ограничения в многотабличных запросах.
- •Редактирование полей справочников
- •Создание связей для запросов
- •Объединение в запросе двух копий одной таблицы (самообъединение).
- •Использование в запросе автоподстановки для автоматического ввода данных
- •Создание параметризованных запросов
- •Запросы, вносящие изменения.
- •Специфика:
- •Имя Покупателя : Customer Name Создание и использование подчиненных форм.
- •Создание главной и подчиненной форм с помощью мастера.
- •Вставка подчиненной формы в главную.
- •Связывание главной и подчиненной форм.
- •Создание итогов в подчиненных формах.
- •13.6.Язык sql
- •Команда select
- •Select name1, name2, … -список столбцов, представляемых в результате
- •Определение выборки – предложение where
- •Булевы операторы: and, or, not
- •Оператор in
- •Оператор between … and
- •Оператор like
- •Оператор is null
- •Применение функций агрегирования
- •Предложение group by
- •Предложение having
- •Ограничение на агрегированные функции
- •Форматирование результатов запросов
- •Упорядочение выходных полей
- •Использование множества таблиц в одном запросе
- •Вложение запросов (подзапросы).
- •Связанные подзапросы.
- •Объединение множества запросов в один Предложение union
- •Ввод, удаление и изменение значений полей.
- •Вставка результатов запроса
- •Обновление представлений
- •Групповые представления.
- •Представления и соединения
- •Представления и подзапросы.
- •Ограничения представлений.
- •Удаление представлений.
- •Изменение значений с помощью представлений.
- •13.7.Технология и модели “клиент - сервер”.
- •МодельFs.
- •Технологический недостаток модели-
- •Модель rda
- •Модель сервера бд (dbs).
- •Модель as- сервер приложений.
- •13.8.Эволюция серверов бд.
- •13.9.Активный (интеллектуальный) сервер.
- •Процедуры базы данных
Процедуры базы данных
В различных СУБД они носят название хранимых (stored), присоединенных, разделяемых и т.д. Ниже будем пользоваться терминологией, принятой в СУБД Ingres.
Использование процедур базы данных преследует четыре цели.
Во-первых, обеспечивается новый независимый уровень централизованного контроля доступа к данным, осуществляемый администратором базы данных.
Во-вторых, одна процедура может использоваться несколькими прикладными программами - это позволяет существенно сократить время написания программ за счет оформления их общих частей в виде процедур базы данных. Процедура компилируется и помещается в базу данных, становясь доступной для многократных вызовов. Так как план ее выполнения определяется единожды при компиляции, то при последующих вызовах процедуры фаза оптимизации пропускается, что существенно экономит вычислительные ресурсы системы.
В-третьих, использование процедур баз данных позволяет значительно снизить трафик сети в системах с архитектурой "клиент-сервер". Прикладная программа, вызывающая процедуру, передает серверу лишь ее имя и параметры. В процедуре, как правило, концентрируются повторяющиеся фрагменты из нескольких прикладных программ.
конец, в-четвертых, процедуры базы данных в сочетании с правилами, о которых речь пойдет ниже, предоставляют администратору мощные средства поддержки целостности базы данных.
В современных СУБД процедура хранится непосредственно в базе данных и контролируется ее администратором. Она имеет параметры и возвращает значение. Процедура базы данных создается оператором CREATE PROCEDURE (СОЗДАТЬ ПРОЦЕДУРУ) и содержит определения переменных, операторы SQL ( например, SELECT, INSERT), операторы проверки условий (IF/THEN/ELSE) операторы цикла (FOR, WHILE), а также некоторые другие.
Например, необходимо разработать процедуру, которая переводила бы рядового сотрудника в резерв на выдвижение на руководящую должность. Процедура Назначениеперемещает строки из таблицыСотрудник, содержащей сведения о сотрудниках, в таблицуРезервдля всех сотрудников с указанным номером. Номер сотрудника представляет собой целое число (тип integer), который не может иметь пустое значение, является параметром процедуры и передается ей при вызове из прикладной программы оператором EXECUTE PROCRDURE (ВЫПОЛНИТЬ ПРОЦЕДУРУ).(Пример 2.)
CREATE PROCEDURE Назначение (Номер_сотрудника integer not nul) AS
BEGIN
INSERT INTO Резерв
SELECT *
FROM Сотрудник
WHERE Номер = Номер_сотрудника;
DELETE
FROM Сотрудник
WHERE Номер = Номер_сотрудника;
END
{ СОЗДАТЬ ПРОЦЕДУРУ Назначение (Номер_сотрудника целый не пустой) КАК
НАЧАТЬ
ВКЛЮЧИТЬ В Резерв
ВЫБРАТЬ ВСЕ
ИЗ Сотрудник
ГДЕ Номер = Номер_сотрудника;
УДАЛИТЬ ИЗ Сотрудник
ГДЕ Номер = Номер_сотрудника;
ЗАКОНЧИТЬ }
Пример 2.
Правила
Механизм правил (триггеров) позволяет программировать обработку ситуаций, возникающих при любых изменениях в базе данных.
Правило придается таблице базы данных и применяется при выполнении над ней операций включения, удаления или обновления строк, а также при изменении значений в столбцах таблицы. Применение правила заключается в проверке сформулированных в нем условий, при выполнении которых происходит вызов специфицированной внутри правила процедуры базы данных. Важно, что правило может быть применено как до, так и после выполнения операции обновления, следовательно, возможна отмена операции.
Таким образом, правило позволяет определить реакцию сервера на любое изменение состояния базы данных. Правила (так же, как и процедуры) хранятся непосредственно в базе данных независимо от прикладных программ.
Одна из целей механизма правил - отражение некоторых внешних правил деятельности организации. Пусть, например, в базе данных Складсодержится таблицаДеталь, хранящая сведения о наличии деталей на складе завода. Одно из правил деятельности завода заключается в том, что недопустима ситуация, когда на складе количество деталей любого типа становится меньше, допустим, 1000.
Это требование описывается правилом Проверить_деталь. Оно применяется в случае обновления столбцаКоличествотаблицыДеталь: если новое значение в столбце меньше 1000, то выполняется процедураЗаказать_деталь. В качестве параметров ей передаются номер детали данного типа и остаток (количкство деталей на складе). (Пример 3.)
CREATE RULE Проверить_деталь
AFTER UPDATE (Количество) OF Деталь
WHERE Деталь.Количество < 1000
EXECUTE PROCEDURE
Заказать_деталь (Номер детали = Деталь.Номер,
Остаток = Деталь.Количество);
{ СОЗДАТЬ ПРАВИЛО Проверить_деталь
ПОСЛЕ ОБНОВЛЕНИЯ (Количество) В Деталь
ГДЕ Деталь.Количество < 1000
ВЫПОЛНИТЬ ПРОЦЕДУРУ
Заказать_деталь (Номер детали=Деталь.Номер,
Остаток=Деталь.Количество);
}
Пример 3.
Таким образом, если возникает ситуация, когда на складе количество деталей какого-либо типа становиться меньше требуемого, запускается процедура базы данных, которая заказывает недостающее количество деталей этого типа. Заказ сводится к посылке письма (например, по электронной почте) на завод или в цех, который изготавливает нужные детали. Процедура проверяет, был ли ранее сделан заказ, если - нет, то посылает письмо. Все это происходит автоматически, без вмешательства пользователя. Пример этот, разумеется, упрощенный - в нем не учтено, что заказ мог быть сделан и раньше.
Важнейшая цель механизма правил - обеспечить целостность базы данных. Один из аспектов целостности - целостность по ссылкам(referential integrity)- относится к связи двух таблиц между собой. Напомним, что эта связь поддерживается внешними ключами.
Пусть, например, таблица Руководительсодержит сведения о начальниках, а таблицаСотрудник- о сотрудниках некоторой организации (см. пример в 1.1.). СтолбецНомер руководителяявляется внешним ключом таблицыСотрудники является ссылкой этой таблицы к таблицеРуководитель.
Для обеспечения целостности ссылок должны быть учтены два требования. Во-первых, если в таблицу Сотрудникдобавляется новая строка, значение столбцаНомер_руководителядолжно быть взято из множества значений столбцаНомертаблицыРуководитель(сотрудник может быть подчинен только реальному руководителю). Во-вторых, при удалении любой строки из таблицыРуководительв таблицеСотрудникне должно остаться ни одной строки, в которой в столбцеНомер руководителябыло бы значение, тождественное значению столбцаНомерв удаляемой строке (все сотрудники, если их руководитель уволился, должны перейти в подчинение другому).
Как учесть эти требования на практике? Очевидно, должны быть созданы правила, их реализующие. Первое правило Добавить_сотрудникасрабатывает при включении строки в таблицуСотрудник; его применение заключается в вызове процедурыПроверить_руководителей, проверяющей, существует ли среди множества значений столбцаНомер_руководителязначение, тождественное значению поляНомердобавляемой строки. Если это не так, процедура должна ее отвергнуть. Второе правило применяется при попытке удалить строку из таблицыРуководитель; оно состоит в вызове процедуры, которая сравнивает значения в столбцеНомер_руководителятаблицыСотрудниксо значением поляНомерв удаляемой строке. В случае совпадения значения в столбцеНомер_руководителяобновляются (Пример 4.)
CREATE RULE Добавить_сотрудника
AFTERINSERTINTOСотрудник
EXECUTE PROCEDURE Проверить_руководителя (Номер = Сотрудник.Номер);
{ СОЗДАТЬ ПРАВИЛО Добавить_сотрудника
ПОСЛЕ ВКЛЮЧЕНИЯ В Сотрудник
ВЫПОЛНИТЬ ПРОЦЕДУРУ Проверить_руководителя (Номер=Сотрудник.Номер)
}
События в базе данных
Механизм событий в базе данных(database events) позволяет прикладным программам и серверу базы данных уведомлять другие программы о наступлении в базе данных определенного события и тем самым синхронизировать их работу. Операторы языка SQL, обеспечивающие уведомление, часто называютсигнализаторами событий в базе данных(database event alerters). Функции управления событиями целиком ложатся на сервер базы данных.
Программа Программа Программа
RBASEDBEVENTRBASEDBEVENTRBASEDBEVENT
Сервер
Уведомление о событии
Программа
Рисунок 1. События в базе данных.
Рис.1 иллюстрирует один из примеров использования механизма событий: различные прикладные программы и процедуры вызывают события в базе данных, а сервер оповещает монитор прикладных программ об их наступлении. Реакция монитора на события заключается в выполнении действий, которые предусмотрел его разработчик.
Механизм событий используется следующим образом. Вначале в базе данных для каждого события создается флажок, состояние которого будет оповещать прикладные программы о том, что некоторое событие имело место (оператор CREATE DBEVENT - СОЗДАТЬ СОБЫТИЕ). Далее во все прикладные программы, на ход выполнения которых может повлиять это событие, включается оператор REGISTER DBEVENT (ЗАРЕГИСТРИРОВАТЬ СОБЫТИЕ), который оповещает сервер базы данных, что данная программа заинтересована в получении сообщения о наступлении события. Теперь любая прикладная программа или процедура базы данных может вызвать событие оператором RAISE DBEVENT (ВЫЗВАТЬ СОБЫТИЕ). Как только событие произошло, каждая зарегистрированная программа может получить его, для чего должна запросить очередное сообщение из очереди событий (оператор GET DBEVENT - ПОЛУЧИТЬ СОБЫТИЕ) и запросить информацию о событии, в частности, его имя (оператор SQL INQUIRE_SQL).
Пример 6 иллюстрирует обработку всех событий из очереди.
loop
EXEC SQL GET DBEVENT;
EXEC SQL INQUIRE_SQL (:event_name = DBEVENTNAME);
if (event_name = "event_1"
обработать событие event_1
else if (event_name = "event_2")
обработать событие event_2
else
...
endif
until event_name = " "
{ цикл
ПОЛУЧИТЬ СОБЫТИЕ
ПОЛУЧИТЬ ИМЯ СОБЫТИЯ
если (имя события = "первое событие")
обработать первое событие
иначе если (имя события = "второе событие")
обработать второе событие
иначе
...
конец если
пока имя события не равно пустой строке
}
Пример 6.
Рассмотрим пример из производственной системы, иллюстрирующий использование механизма событий в базе данных совместно с правилами и процедурами. События используются для определения ситуации, когда рабочий инструмент нагревается до температуры выше допустимой и должен быть отключен.
1. Создается правило, которое применяется всякий раз, когда новое значение температуры инструмента заносится в таблицу Инструмент. Как только она превосходит 500 градусов, правило вызывает процедуруОтключить_инструмент.
CREATE RULE Перегрев_инструмента
AFTER UPDATE OF
Инструмент (Температура)
WHERE Новое.Температура >= 500
EXECUTE PROCEDURE
Отключить_инструмент
(Номер_инструмента =
Инструмент.Номер);
{ СОЗДАТЬ ПРАВИЛО
Перегрев_инструмента
ПОСЛЕ ОБНОВЛЕНИЯ
Инструмент (Температура)
ГДЕ Новое.Температура >= 500
ВЫПОЛНИТЬ ПРОЦЕДУРУ
Отключить_инструмент
(Номер_инструмента =
Инструмент.Номер);
}
2. Создается процедура базы данных Отключить_инструмент, которая вызывает событиеПерегрев; она будет выполнена в результате применения правила, определенного на шаге 1. Эта процедура регистрирует время, в течение которого инструмент был отключен, и вызывает событие Перегрев:
CREATE PROCEDURE
Отключить_инструмент
(Номер_инструмента) AS
BEGIN
UPDATE Инструмент
SET Статус = "ВЫКЛ"
WHERE Номер = Номер_инструмента;
RAISEDBEVENTПерегрев;
END;
{ СОЗДАТЬ ПРОЦЕДУРУ
Отключить_инструмент
(Номер_инструмента) КАК
НАЧАТЬ
ОБНОВИТЬ Инструмент
УСТАНОВИТЬ Статус = "ВЫКЛ"
ГДЕ Номер = Номер_инструмента;
ВЫЗВАТЬ СОБЫТИЕ Перегрев;
END;
}
3. Создается событие Перегрев, которое будет вызвано, когда инструмент перегреется:
CREATEDBEVENTПерегрев;
{ СОЗДАТЬ СОБЫТИЕ Перегрев }
4. Наконец, создается прикладная программа Монитор Инструментов, которая следит за состоянием инструментов. Она регистрируется сервером в качестве получателя событияПерегревс помощью оператора REGISTER DBEVENT. Если событие произошло, программа посылает сообщение пользователю и сигнал, необходимый для отключения инструмента.
...
EXEC SQL REGISTER
DBEVENT Перегрев;
...
EXEC SQL GET DBEVENT;
EXEC SQL INQUIRE_SQL
(Имя события = DBEVENTNAME, ...);
if (Имя события = "Перегрев")
then
послать сообщение;
отключить инструмент;
endif;
{...
ВЫПОЛНИТЬ SQL
ЗАРЕГИСТРИРОВАТЬ СОБЫТИЕ Перегрев;
...
ВЫПОЛНИТЬ SQL ПОЛУЧИТЬ СОБЫТИЕ;
ВЫПОЛНИТЬ SQL ПОЛУЧИТЬ ИМЯ СОБЫТИЯ;
если Имя события = "Перегрев"
то
послать сообщение;
отключить инструмент;
конец если;
}
Описанные конструкции в совокупности определяют следующую логику работы (рис.2):
1. Прикладная программа Монитор Инструментовпериодически регистрирует с помощью датчиков текущие значения параметров множества различных инструментов.
2. Та же программа заносит в таблицу Инструментновое значение температуры для данного инструмента.
3. Всякий раз, когда это происходит, то есть обновляется значение в столбце ТемпературатаблицыИнструмент, применяется правилоПерегрев_инструмента.
4. Применение правила состоит в проверке нового значения температуры. Если оно превышает максимально допустимое значение, то запускается процедура Отключить_инструмент.
5. Она изменяет значение в столбце СтатустаблицыИнструментна "ВЫКЛ".
6. Она же вызывает событие Перегрев.
7. Программа Монитор Событийполучает (перехватывает) событиеПерегрев.
8. Она же посылает сообщение на экран диспетчеру.
9. Она же отключает инструмент.
Инструмент, код 3114
Мониторинг датчиков
Монитор
событий Монитор
инструментов
База данных Инструмент
Событие
Перегрев
Выкл
Код Статус Температура
3114 Вкл 510
Перегрев_инструмента Если
Температура > 500 Вызвать
процедуру Отключить_инструмент
Процедура
отключения инструмента
Рисунок 13. Пример использования механизма событий в базе данных.
Рис.2.
Когда используются традиционные методы опроса БД, логика работы совершенно иная. Пришлось бы разработать дополнительную программу, которая периодически выполняла бы операцию выборки из таблицы Инструментпо критерию "Температура > 5000". Это очень заметно сказалось бы на эффективности, поскольку операция SELECT влечет серьезные накладные расходы.
Разумеется, пример приведен лишь для иллюстрации схемы срабатывания механизма "правило - процедура - событие" и ни в коей мере не отражает реальные схемы управления технологическими процессами на производстве.